5

मुझे अपने वीएस समाधान को लेआउट करने का प्रयास करने में समस्या है और मुझे कुछ सुझाव चाहिए, कृपया।इस एएसपी.NET एन-स्तरीय समाधान को कैसे आर्किटेक्ट करें?

वर्तमान में, मेरी समाधान लेआउट निम्नलिखित परियोजना की तरह दिखता है: -

Foo.Models 
Foo.Repositories 
Foo.Services 
Foo.Web (an ASP.NET MVC application) 

मेरी वेबसाइट (Foo.Web) Foo.Services नाम स्थान पर विभिन्न तरीकों कहता है। यहां विचार यह है कि Services सभी व्यावसायिक तर्क को संभाल लें। Model नामस्थान केवल POCO ऑब्जेक्ट्स हैं। Repositories नामस्थान स्वयं व्याख्यात्मक है।

कन्स्ट्रक्टर निर्भरता इंजेक्शन इंटरफ़ेस के साथ किस परत के काले जादू को संभालता है, किस घटक की आवश्यकता होती है।

समस्या: मैं समाधान में कुछ Windows कार्यप्रवाह फाउंडेशन (डब्ल्यूडब्ल्यूएफ) कोड जोड़ सकते हैं, लेकिन ही Foo.Services.dll में इस डब्ल्यूडब्ल्यूएफ कोड डाल करना चाहते हैं।

ऐसा करने के लिए मुझे Workflow प्रकार की एक अन्य प्रोजेक्ट बनाने की आवश्यकता है। इस वर्कफ़्लो में गतिविधियां हैं, जो Foo.Services विधियों को कॉल करती हैं। इस प्रकार, मेरी वेबसाइट को अब सामान करने के लिए या तो सेवा विधि या वर्कफ़्लो विधियों को कॉल करना होगा।

मुझे उम्मीद थी कि वेबसाइट केवल सामान बनाने के लिए Services नेमस्पेस को कॉल करेगी।

आखिरकार, सेवा यूआई और व्यापार तर्क, आईएमओ के बीच मुख्य इंटरफ़ेस है। तथ्य यह है कि मैं तकनीकी रूप से डब्ल्यूडब्ल्यूएफ का उपयोग करता हूं, आईयूआई फ्रंटेंड में कोडिंग करने वाले किसी के लिए चिंता नहीं होना चाहिए।

क्योंकि वर्कफ़्लो डीएल सेवा डीएल में विधियों को कॉल करता है, तो सेवा डीएल वर्कफ़्लो में परिपत्र निर्भरता की वजह से वर्कफ़्लो में विधियों को कॉल नहीं कर सकता है।

मैं सेवा डीएल में सभी वर्कफ़्लो कोड भी नहीं ले जा सकता क्योंकि सेवाओं को डीएल को कुछ विशेष प्रोजेक्ट प्रकार (प्रकार विंडोज वर्कफ़्लो) की आवश्यकता होती है।

तो .. मुझे यकीन नहीं है कि क्या करना है?

मैं इसे कैसे बना सकता हूं ताकि उपभोक्ता केवल व्यावसायिक सामानों के लिए सेवा नामस्थान का संदर्भ दे सकें और तथ्य यह है कि डब्ल्यूडब्ल्यूएफ में इस व्यवसाय की सामग्री को उपभोक्ता से छुपाया गया है?

क्या मुझे डब्ल्यूडब्ल्यूएफ प्रोजेक्ट बनाने और अपने सभी सेवा कोड को उसमें स्थानांतरित करने की ज़रूरत है, पुरानी सेवा परियोजना को फेंक दें? ऐसा करने से 'बहुत पुन: प्रयोज्य ध्वनि नहीं होती है। क्या होता है यदि मैं कुछ पाइपलाइन कार्यों को संभालने और कुछ और उपयोग करने के लिए डब्ल्यूडब्ल्यूएफ का उपयोग न करने का फैसला करता हूं?

व्याख्या करने में सहायता के लिए यहां कुछ कोड दिया गया है।

HomeController.cs 
public ActionResult Index() 
{ 
    // StockService was created using constructor dependency injection. 
    var viewData = _stockService.GetStocks(StockType.MostPopular); 
    return (viewData) 
} 

StockService.cs 
public class StockService : IStockService 
{ 
    public IEnumerable<Stock> GetStocks(StockType stockType) 
    { 
     // Dependency Injection defines if the Pipeline is WWF 
     // or something else (eg. plain ole functions). 
     var stocks = _stockPipeline.GetStocks(stockType); 

     // Cache result. 

     // Update repostiory. (example of calling the repository) 
     _sqlRepostiory.SaveSomeRandomData("Jon Skeet Was Here."); 

     return stocks. // Returns a POCO. 
    } 
} 

धन्यवाद peeps।

उत्तर

1

क्या आपने रॉब कॉनरी के एमवीसी स्टोरफ्रंट/Kona प्रोजेक्ट को देखा है? वह a very similar thing with WF कर रहा है, और उसकी परियोजना laid out in a somewhat similar way है। आप जो कर रहे हैं उसके लिए good guidance हो सकता है। मुझे पता है कि उन्होंने अपने एकीकरण को डिजाइन करने में कुछ वर्कफ़्लो फाउंडेशन विशेषज्ञ के साथ काम किया था।

+0

निश्चित रूप से है। यही वह जगह है जहां से मैंने अपनी सामग्री का आधार बनाया। मैं एसएफ -> कोना से अपने परिवर्तनों से थोड़ा उलझन में हूं। –

0

सम्भावित समाधान एक 'आवेदन' परत

Application ---> Services 
        ^
        | 
      \--> Workflow 

जोड़ने के लिए और यूआई से अनुप्रयोग परत फोन होगा। बेशक ज्यादातर मामलों में एप्लिकेशन लेयर केवल सेवाओं या वर्कफ़्लो को कॉल अग्रेषित करेगा।

0

एफवाईआई- वर्कफ़्लो क्लासेस को जोड़ने की अनुमति देने के लिए गैर-वर्कफ़्लो प्रोजेक्ट को संशोधित करना संभव है। विवरण here

+1

तो भले ही मैं क्लास लाइब्रेरी प्रोजेक्ट को डब्लूएफ प्रोजेक्ट में बदल सकता हूं .. क्या वास्तव में यह मेरी समस्या का उत्तर आर्किटेक्चरल परिप्रेक्ष्य से करता है? यह किया जा सकता है लेकिन क्या मुझे यह करना चाहिए? –

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