2010-04-04 19 views
5

मैं अपने एएसपी.नेट एमवीसी आधारित सीएमएस अनुप्रयोग आर्किटेक्चर पर कुछ फीडबैक ढूंढ रहा हूं।एएसपी.नेट एमवीसी अनुप्रयोग आर्किटेक्चर "दिशानिर्देश"

डोमेन मॉडल - सिस्टम कक्षाओं को परिभाषित करने के लिए कुछ भी नहीं पर निर्भर करता है। अभी के लिए, ज्यादातर एनीमिक।

भंडार परत - निकाला डेटा का उपयोग, केवल सेवाओं परत

सेवा स्तर से बुलाया - डोमेन मॉडल पर व्यापार तर्क प्रदर्शन करती है। नियंत्रकों को दृश्य मॉडल का पर्दाफाश करता है।

ViewModelMapper - सेवा उस दृश्य मॉडल और डोमेन मॉडलों के बीच आगे और पीछे तब्दील

नियंत्रक - सुपर पतली "यातायात पुलिस" शैली है कि सेवा परत और केवल देखने के मॉडल, कभी नहीं डोमेन मॉडल के संदर्भ में बात करती है साथ सूचना का आदान कार्यक्षमता

मेरा डोमेन मॉडल ज्यादातर डेटा ट्रांसफर (डीटीओ) ऑब्जेक्ट्स के रूप में उपयोग किया जाता है और इस समय कम से कम तर्क है। मुझे लगता है कि यह अच्छा है क्योंकि यह कुछ भी नहीं (सेवा परत में कक्षाओं तक भी नहीं) पर निर्भर करता है।

सेवा परत थोड़ा मुश्किल है ... मैं केवल नियंत्रकों को जीयूआई प्रोग्रामिंग की आसानी के लिए व्यूमोडल्स तक पहुंच प्राप्त करना चाहता हूं। हालांकि, कुछ सेवाओं को एक-दूसरे से बात करने की ज़रूरत है। उदाहरण के लिए, मेरे पास एक ईवेंटिंग सेवा है जो सामग्री टैग की जाने वाली अन्य श्रोता सेवाओं को सूचित करती है, जब ब्लॉग पोस्ट बनाए जाते हैं, आदि। वर्तमान में, डोमेन मॉडल को इनपुट के रूप में ले जाने या उन्हें वापस करने के तरीके आंतरिक रूप से चिह्नित होते हैं, इसलिए इनका उपयोग नहीं किया जा सकता नियंत्रक

ओवरकिल की तरह लगता है? पर्याप्त अमूर्त नहीं है? मैं मुख्य रूप से वास्तुकला के बारे में सख्त होने में सीखने के अभ्यास के रूप में ऐसा कर रहा हूं, वास्तविक उत्पाद के लिए नहीं, इसलिए कृपया "आप जो करना चाहते हैं उस पर निर्भर करता है" के आधार पर कोई प्रतिक्रिया नहीं है।

धन्यवाद!

+1

तथ्य यह है कि आप इतने कम शब्दों में इतना कहने में कामयाब रहे हैं कि आपको एक सुराग देना चाहिए कि आप सही रास्ते पर हैं। – pdr

उत्तर

2

कुल मिलाकर, डिजाइन मेरे लिए अच्छा लग रहा है।

कुछ और आइटम हैं मैं क्या कर सकता है:

  • सत्यापन - एक 2 कदम सत्यापन है -
    चरण 1: डोमेन-स्तर की कक्षाओं गुण या किसी अन्य तंत्र के माध्यम से अपने खुद के वैधता (लागू)।
    चरण 2: भंडार सुनिश्चित करता है कि वस्तु भंडार

  • निर्भरता इंजेक्शन के संदर्भ में मान्य है - निर्भरता इंजेक्षन करने के लिए एक डि ढांचे का उपयोग। यह इकाई परीक्षण के लिए उपयोगी होगा। इसके अलावा, जहाँ आप सेवाओं में कॉल करने के लिए, तो देखें कि सकल सेवा पर इस लेख उपयोगी है की जरूरत है सेवा परत: http://blog.ploeh.dk/2010/02/02/RefactoringToAggregateServices.aspx

    • ViewModels - फिर से उपयोग, लेकिन & घड़ी इंतजार इससे पहले कि आप अंत में
    • तय करने के लिए आकर्षक हो सकता है

एचटीएच।

+0

अच्छा जवाब। पुराने दिनों में हम चरण 1 "सत्यापन" और चरण 2 "सत्यापन" कहते थे। – pdr

+0

धन्यवाद सनी।मैं वास्तव में DI के लिए स्ट्रक्चर मैप का उपयोग कर रहा हूं, इसलिए मैं वहां अच्छा हूं। वर्तमान में, सत्यापन के लिए, मेरे पास एक सत्यापन सेवा है जो डोमेन मॉडल को मान्य करती है। मुझे लगता है कि मॉडल खुद को अमान्य स्थिति में आने से रोकते हैं, और मुझे लगता है कि मैं डोमेन मॉडल में "वैध स्थिति" प्रकार के व्यवसाय नियमों को एम्बेड करना पसंद करता हूं। डोमेन मॉडल और अन्यत्र (सत्यापन सेवा, भंडार इत्यादि) में जाने वाले नियमों के बीच आप रेखा को कहां आकर्षित करते हैं? –

+0

मेरे डोमेन मॉडल को वैध स्थिति में रखने के लिए, मैं अपने मॉडल पर कोई प्रॉपर्टी सेटर्स नहीं डालता हूं। इसके बजाए, सभी राज्य परिवर्तनों को एक विधि के माध्यम से जाना चाहिए जो सत्यापित करता है कि परिवर्तन लागू करने से पहले उचित है। नकारात्मकता यह है कि यदि आपके पास बहुत से संभावित परिवर्तन हैं तो यह उचित मात्रा में कोड बन सकता है। निर्माण और हटाना संचालन अभी भी भंडार परत पर जाते हैं। – Ryan

संबंधित मुद्दे