मुझे अपने वीएस समाधान को लेआउट करने का प्रयास करने में समस्या है और मुझे कुछ सुझाव चाहिए, कृपया।इस एएसपी.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।
निश्चित रूप से है। यही वह जगह है जहां से मैंने अपनी सामग्री का आधार बनाया। मैं एसएफ -> कोना से अपने परिवर्तनों से थोड़ा उलझन में हूं। –