क्या अलग-अलग क्रिएट और एडिट एक्शन करना या क्रिएट और एडिट को एक में जोड़ना बेहतर है?


15

हम ASP.NET MVC 2 का उपयोग कंट्रोलर / व्यू प्रेजेंटेशन लेयर और मॉडल के साथ कर रहे हैं जिसमें एक बिजनेस लॉजिक लेयर, डेटा एक्सेस लेयर [संग्रहीत कार्यविधियाँ और संग्रहीत कार्यविधियों पर बात करने के लिए विधियाँ] शामिल हैं।

अधिकांश उद्देश्यों के लिए व्यावसायिक परत में और ऊपर एक वस्तु के निर्माण और दोनों का प्रतिनिधित्व करने में सक्षम प्रतीत होता है। यह हमारे रिपोजिटरी डिज़ाइन पैटर्न के साथ अच्छी तरह से मेल खाता है जो "सहेजें" विधि को परिभाषित करता है। हम केवल संग्रहीत प्रक्रिया में देख सकते हैं यदि आईडी 0 है और फिर एक नई वस्तु बनाएं यदि यह 0 है अन्यथा हम केवल मौजूदा ऑब्जेक्ट को अपडेट कर सकते हैं, क्योंकि श्रेणी आईडी एक से मेल खाना चाहिए।

चर्चा का मुख्य बिंदु यह है कि अगर यह संपादन को विभाजित करने के लिए सबसे अधिक समझ में आता है, तो इसमें DAL परत से परे Create और Edit के अलग-अलग हिस्से शामिल हैं।

मार्गों के रूप में एक स्पष्ट उदाहरण दिखाया जा सकता है:

बनाएँ - http: // someurl / somearea / edit / 0

संपादित करें - http: // someurl / somearea / edit / 254

बनाम

क्रिएट - http: // someurl / somearea / create

संपादित करें - http: // someurl / somearea / edit / 254

क्या इसके संबंध में कोई स्थापित मानक या सर्वोत्तम प्रथाएं हैं?

मुझे पता है कि यह एक छोटा सा विवरण है, लेकिन मुझे लगता है कि यह तार्किक रूप से एक महत्वपूर्ण है।


4
मैं व्यक्तिगत रूप से सोचता हूं कि क्रिएट और एडिट एक्शन बहुत अधिक क्लीनर है (और संभवतः इसे बनाए रखना आसान है) कार्यान्वयन।
एडम लेअर

1
अगर यह समझ में आता है, तो एपीआई के लिए डीएएल में एक विधि।
CaffGeek

खैर मेरे दृष्टिकोण से अलग बनाने और संपादित करने के लिए स्वाभाविक रूप से mvc आते हैं और उस दृष्टिकोण के साथ जा रहा है mvc का उपयोग करने का बहुत लाभ देता है अपने पूर्ण और कि हर कोई उद्देश्य होना चाहिए।
maz3tt

जवाबों:


5

मैं निश्चित रूप से कहूंगा कि एकल जिम्मेदारी सिद्धांत का पालन न करने पर क्रिएट / एडिट को अलग करने के लायक है ।

कोई दावा कर सकता है कि यूआरएल में सही कार्रवाई के साथ-साथ बेहतर एसईओ भी है।

दोनों को अलग न करना भी कोड को इकाई परीक्षण के लिए कठिन बना देगा।

कोड को पढ़ने वाला एक नया प्रोग्रामर शायद "एडिट" विधि में ऑब्जेक्ट बनाने के लिए कोड को बहुत सहज नहीं पाएगा, यह सिर्फ अर्थपूर्ण नहीं है। मैं हालांकि DAL में सेव () विधि से सहानुभूति रख सकता हूं।

इसके बारे में सोचकर, मैं वास्तव में इसे एक संपादन विधि में डालने के लाभ नहीं देख सकता।


4

मैं आमतौर पर एक बनाने के लिए पसंद करते हैं Saveदाल में विधि, लेकिन वास्तव में लागू Create/ Edit/ Deleteअलग से।

उदाहरण के लिए, मेरी Saveविधि ऑब्जेक्ट स्टेट की जांच करेगी, और जो आवश्यक है, उसके आधार पर क्रिएट / एडिट / डिलीट विधि को कॉल कर सकती है

switch(obj.State)
{
    case ObjectState.New:
        CreateObject(obj);
        break;
    case ObjectState.Modified:
        UpdateObject(obj);
        break;
    case ObjectState.Deleted:
        DeleteObject(obj);
        break;
}

यह मुझे किसी भी वस्तु को बचाने के लिए सिर्फ एक सामान्य विधि को कॉल करने की अनुमति देता है, लेकिन फिर भी प्रत्येक (क्रिएट, एडिट, डिलीट) के कार्यान्वयन को अलग रखता है।


आप इसे कैसे हटा सकते हैं?
NoChance

आमतौर पर मेरी वस्तुओं में एक Stateसंपत्ति होती है। उदाहरण के लिए, पर क्लिक Deleteबटन नष्ट कर दिया गया के रूप में वस्तु को चिह्नित करना होगा, तो फोनSaveChanges()
राहेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.