2009-06-12 12 views
6

एमवीवीएम के अलावा, साथ ही साथ एक डब्ल्यूपीएफ ऐप की समग्र संरचना के लिए एमवीसी पैटर्न, आप एप के मॉडल/नियंत्रक पहलू को उपमहाद्वीप में कैसे विभाजित करते हैं? कारण मैं पूछता हूं कि मुझे उपर्युक्त पैटर्न के परिप्रेक्ष्य से समाधान को हल करने में कोई समस्या नहीं है, लेकिन जब वास्तव में बैकएंड लिखने की बात आती है; मुझे लगता है कि मैं इसे बहुत परेशान कर रहा हूं। मैं उपयोगकर्ता परिप्रेक्ष्य से उच्च गुणवत्ता वाले ऐप्स के साथ समाप्त होता हूं, लेकिन मेरे डिजाइन एस्थेटिक्स मुझे इसे स्वीकार करने की अनुमति नहीं देते हैं।बड़े एप्लिकेशन डिज़ाइन (डब्ल्यूपीएफ/सिल्वरलाइट)

स्पष्टीकरण के लिए; मेरे ऐप को बदलने के बिना किसी भी आसान या सार्थक तरीके से मेरे बहुत से व्यवसाय तर्क को कक्षा (या कक्षा पदानुक्रम, सभी संबंधित इंटरफेस के साथ) में दोबारा नहीं बदला जा सकता है। मैं साढ़े सालों से व्यावसायिक रूप से विकास कर रहा हूं, इसलिए यह अनुभवहीनता का मुद्दा हो सकता है; लेकिन मुझे लगता है कि यह अभी भी कोई बहाना नहीं है। इस भरोसेमंद खुले प्रश्न के लिए कोई संकेतक?

संपादित करें: कोड (Silverlight में) अनुरोध - निम्नलिखित है कि एक बहुत बड़ा app-

मैं सिर्फ सच में पसंद नहीं है का हिस्सा है एक खींचें ड्रॉप आवंटन आवेदन पत्र में एक mousebuttonup हैंडलर से एक -snippet- है तर्क कितना कुचलना है, और इस तरह से नफरत है कि यह पूरी तरह से अचूक है, क्योंकि सबकुछ ईवेंट हैंडलरों में भरा हुआ है।

 //determine if there is a previously existing allocated sale corresponding to this purchase's ID 

       SaleWS allocSaleExisting = colltoaddsale.FirstOrDefault(s => (s.p_TRADEID == allocPurch.TRADEID)); 


       if (allocSaleExisting != null && allocSale.TRADEID == allocSaleExisting.TRADEID) 
       { 
        PurchaseWS allocPurchExisting = colltoadd.First(p => p.TRADEID == allocPurch.TRADEID); 

        //allocPurchExisting.AMOUNT += allocPurch.AMOUNT; 
        allocSaleExisting.AMOUNT += allocSale.AMOUNT; 


        allocPurchExisting.AMOUNT += allocSale.AMOUNT; 
        allocPurch.AMOUNT -= allocSale.AMOUNT; 


        colltoaddsale.Remove(allocSale); 


        //colltoadd.Remove(allocPurch); 

       } 

       else 
       { 


        //Create new "split" item in the data source for the source table 
        PurchaseWS splitAllocPurch = new PurchaseWS { COMMODITY = allocPurch.COMMODITY, CONTRACTNUMBER = allocPurch.CONTRACTNUMBER, AMOUNT = allocPurch.AMOUNT - allocSale.AMOUNT, FORM = allocPurch.FORM, GRADE = allocPurch.GRADE, LOCATION = allocPurch.LOCATION, SHIP_DATE = allocPurch.SHIP_DATE, TRADEID = allocPurch.TRADEID, UNITS = allocPurch.UNITS }; 

        //update the source table's selecteditem datacontext with the target allocation id 

        allocPurch.s_TRADEID = allocSale.TRADEID; 

        allocSale.p_TRADEID = allocPurch.TRADEID; 

        allocPurch.AMOUNT = allocSale.AMOUNT; 




        colltoadd.Insert(colltoadd.IndexOf(allocPurch) + 1, splitAllocPurch); 







       } 


      } 
+0

किसी वास्तविक कोड उदाहरण के बिना टिप्पणी करने के लिए कड़ी मेहनत की तरह। –

उत्तर

5

पैटर्न और अभ्यास समूह से Composite Application Guidance पर एक नज़र डालें।

यह इस दिशा में विशेष रूप से तैयार कर रहा है, बड़े पैमाने पर आवेदन पत्र में WPF/Silverlight के लिए MVVM का उपयोग कर, और कैसे व्यापार तर्क चिंताओं को संभालने के लिए, आदि

1

तुम भी Caliburn की जाँच करनी चाहिए भी शामिल है।