2011-09-22 91 views
7

मैं एक साक्षात्कार के लिए गया, और मुझे अपने बिजनेस लेयर आर्किटेक्चर को दिखाने के लिए कहा गया। मुझे साक्षात्कारकर्ता के सामने क्या लिखना है, इसके बारे में 3 स्तरीय वास्तुकला के बारे में कुछ विचार है, लेकिन वास्तव में कोई विचार नहीं है। तो मान लीजिए कि मेरा प्रोजेक्ट किसी संगठन के कर्मचारियों से संबंधित है, तो मैंने वहां क्या लिखा होगा। क्या यह किसी भी तरह का आरेख होगा जो मुझे बनाना चाहिए या कुछ कोडिंग हिस्सा होना चाहिए। मैंने सी # फ्रेमवर्क 3.5 में काम किया। मैं वास्तव में समझ नहीं पा रहा हूं कि इस प्रश्न में और क्या उल्लेख करना है, इसलिए अगर कुछ आवश्यक है तो कृपया मुझे बताएं। धन्यवाद।3 स्तर आर्किटेक्चर में बिजनेस लेयर

संपादित करें मैंने Winforms में काम किया। मुझे पता है कि बिजनेस लेयर क्या है, लेकिन यह सुनिश्चित नहीं था कि साक्षात्कारकर्ता को क्या कहना है कि बिजनेस लेयर के पास कोड हैं और जाहिर है कि मेरी परियोजना थोड़ी बड़ी थी, इसलिए बड़ी संख्या में कोड थे। तो मुझे वहां क्या लिखा जाना चाहिए था ??

+0

प्रश्न था 'केवल अपना व्यवसाय परत वास्तुकला दिखाएं'? क्या कोई संदर्भ नहीं था? क्या उसने आपको 3-स्तरीय वास्तुकला के बारे में स्पष्ट रूप से पूछा था? यदि संदर्भ के बिना आपको इस प्रश्न से पूछा गया था तो आपको जवाब देना चाहिए था कि आपके पास विभिन्न परिदृश्यों के लिए अलग-अलग आर्किटेक्चर हैं। –

+1

साक्षात्कार नहीं है या आपके पास दूसरा दौर होगा? :-) –

+0

@ डारिन: उसने मुझे 3 स्तरीय आर्किटेक्चर दिखाने के लिए कहा – Sandy

उत्तर

17

एक 3 स्तरीय वास्तुकला 3 मुख्य परतें

  • पी एल प्रस्तुति परत
  • BLL व्यापार तर्क परत
  • दाल डेटा एक्सेस परत

प्रत्येक द्वारा रचित है शीर्ष परत केवल नीचे की परत पूछती है और कभी नहीं इसके शीर्ष पर कुछ भी देखता है।

जब वे आप से पूछना के बारे में आप अपने BLL का निर्माण करेगा, आप की तरह कुछ लिख सकते हैं:

enter image description here

:

namespace Company.BLL 
{ 
    // let's create an interface so it's easy to create other BLL's if needed 
    public interface ICompanyBLL 
    { 
     public int Save(Order order, UserPermissions user); 
    } 

    public class Orders : ICompanyBLL 
    { 
    // Dependency Injection so you can use any kind of BLL 
    // based in a workflow for example 
    private Company.DAL db; 
    public Orders(Company.DAL dalObject) 
    { 
     this.db = dalObject; 
    } 

    // As this is a Business Layer, here is where you check for user rights 
    // to perform actions before you access the DAL 
    public int Save(Order order, UserPermissions user) 
    { 
     if(user.HasPermissionSaveOrders) 
      return db.Orders.Save(order); 
     else 
      return -1; 
    } 
    } 
} 

एक परियोजना मैं बना रहा हूं की एक जीवित उदाहरण के रूप में

पीएल सभी सार्वजनिक उजागर सेवाएं हैं, मेरे डीएएल डेटाबेस तक सभी पहुंच को संभालता है, मैं hav ईए सेवा लेयर कि सेवा के 2 संस्करण संभालती है, एक पुराने ASMX और नए WCF सेवा, वे एक Interface के माध्यम से उजागर कर रहे हैं तो यह आसान है मुझे चुनने के लिए ऑन-द-फ्लाई क्या सेवा उपयोगकर्ता

का उपयोग किया जाएगा
public class MainController : Controller 
{ 
    public IServiceRepository service; 

    protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
    { 
     ... 

     if (thisUser.currentConnection.ws_version == 6) 
      // Use old ASMX Web Service 
      service = new WebServiceRepository6(url, ws_usr, ws_pwd); 

     else if (thisUser.currentConnection.ws_version == 7) 
      // Use the brand new WCF Service 
      service = new WebServiceRepository7(url, ws_usr, ws_pwd); 

     ... 

    } 
} 

उपर्युक्त कोड में, मैं इस परत पर (अन्य प्रस्तुति परत के रूप में प्रस्तुति परत के रूप में प्रस्तुति परत के रूप में अन्य परत के ज्ञान को अलग करने के लिए निर्भरता इंजेक्शन का उपयोग करता हूं) इसे कभी भी कॉल करने के बारे में परवाह नहीं करना चाहिए सेवा और उपयोगकर्ता ServiceB के बजाय ServiceA का उपयोग करता है ... यह जानने की आवश्यकता है कि IService.ListAllProjects() पर कॉल करने से सही परिणाम मिलेंगे।

आप प्रस्तावों को विभाजित करना शुरू करते हैं और यदि सेवा कनेक्शन में कोई समस्या दिखाई देती है, तो आप जानते हैं कि प्रस्तुति परत से कोई लेना देना नहीं है, यह सेवा परत (मेरे मामले में) है और यह आसान है और आसानी से एक नया service.dll तैनात किया जा सकता है इसके बजाय पूरी वेबसाइट को फिर से प्रकाशित करना ...

मेरे पास एक सहायक भी है जो सभी व्यवसाय ऑब्जेक्ट्स रखता है जो मैं सभी परियोजनाओं में उपयोग करता हूं।

मुझे उम्मीद है कि यह मदद करता है।

+2

परतों और स्तरों के बीच एक अंतर है। मुझे लगता है कि उपरोक्त में, वे एक दूसरे के लिए इस्तेमाल किया गया है। – Raghav

+1

["** ... स्तर परतों की भौतिक तैनाती हैं। **"] (http://venkataspinterview.blogspot.com/2011/03/what-is-difference-between-layers- and.html) – balexandre

1

3 टीयर के रूप में निम्नानुसार

  1. आपका एक परत में प्रस्तुति है।
  2. अन्य परत में आपका एप्लिकेशन तर्क - जिसे व्यवसाय परत कहा जाता है।
  3. आपकी डेटा एक्सेस कक्षाएं तीसरी परत में। - डेटा लेयर कहा जाता है।

वेबफ़ॉर्म प्रस्तुति परत तो फ़ाइल के पीछे ASP.Net कोड में कुछ भी करने से कर्मचारी वर्ग के लिए के रूप में आप अगर/बाकी और इसके आगे का उपयोग कर व्यापार के नियम लागू कर रहे हैं व्यापार परत मेरी समझ के अनुसार माना जा सकता है किया जाएगा। App_Code फ़ोल्डर में डेटा एक्सेस क्लासेस डेटा लेयर होगा।

डेस्कटॉप ऐप्स फॉर्म डिज़ाइन के मामले में प्रस्तुति परत होगी, फॉर्म कोड व्यावसायिक परत होगा और डेटाबेस तक पहुंचने से संबंधित कुछ भी डेटा परत होगी।

3

एक उदाहरण कई परियोजनाओं में मान्य के लिए यहाँ मेरा उत्तर की जाँच करें, भले ही यूआई asp.net MVC के नहीं है ...

MVC3 and Entity Framework

+2

धन्यवाद ... अच्छा लेख – Sandy

0

व्यापार परत परत सभी व्यापार तर्क के लिए जिम्मेदार है। उदाहरण के लिए आपके पास संगठनात्मक संगठन है और कर्मचारी का संग्रह है। कर्मचारी वस्तु में कुछ प्रतिबंध या कुछ नियमों को लागू करने की आवश्यकता है। यह नियम इस परत में लागू किए जाएंगे।

0

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

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