2012-01-05 8 views
6

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

  1. BLL वर्गों और methots स्थिर
  2. BLL वर्ग हैं स्थिर नहीं होते हैं, लेकिन इसके methots स्थिर
  3. BLL वर्गों स्थिर है और न ही इसकी methots नहीं हैं। एप्लिकेशन को अपने मेथॉट तक पहुंचने के लिए हर बार बीएलएल कक्षा बनाना चाहिए।
  4. बीएलएल कक्षाएं स्थिर नहीं हैं और न ही इसके मेथॉट हैं। लेकिन प्रत्येक बीएलएल वर्ग का केवल एक उदाहरण है। और आवेदन बीएलएल मेथॉट्स का उपयोग करने के लिए इन स्थिर उदाहरणों का उपयोग करता है।

प्रदर्शन और desing में सबसे अधिक प्रभावशाली कौन सा सबसे अधिक प्रभावशाली है?

संपादित करें:

Option1

public static class BllCustomer 
{ 
    public static List<ModelCustomer> GetCustomers() 
    { 

    } 
} 

// usage 
BllCustomer.GetCustomers(); 

Option2

public class BllCustomer 
{ 
    public static List<ModelCustomer> GetCustomers() 
    { 

    } 
} 

// usage 
BllCustomer.GetCustomers(); 

Option3

के रूप में अपने डोमेन परत आम तौर पर आप व्यापार के नियम और जटिल संसाधन तर्क रखती
public class BllCustomer 
{ 
    public List<ModelCustomer> GetCustomers() 
    { 

    } 
} 

// usage 
BllCustomer bllCustomer = new BllCustomer(); 
bllCustomer.GetCustomers(); 

Option4

public class BllCustomer 
{ 
    public List<ModelCustomer> GetCustomer() 
    { 

    } 
} 

// usage 
public static BllCustomer s_BllCustomer = new BllCustomer(); 
// whenever needed 
s_BllCustomer.GetCustomer(); 
+0

लोगों को इस मुद्दे पर कोई राय न देने का आग्रह क्यों करना चाहिए, मैं बस समझ नहीं पा रहा हूं। संभवतः, वे इस विषय को कई अन्य प्रश्नों में नहीं देख सकते हैं। हाँ मैं खुद से बात कर रहा हूँ। आपकी राय के लिए – Fer

उत्तर

1

अपने डोमेन/BusinessLogicLayer कक्षाएं Serializing थोड़ा असामान्य लग रहा है। आम तौर पर आप अपने डेटा ट्रांसफॉर्मेशन/पीओसीओ कक्षाओं को क्रमबद्ध करना चाहते हैं।

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

+0

धन्यवाद। विकल्प 4 के बारे में आप क्या सोचते हैं? – Fer

+0

प्रश्न पढ़ने पर पहली बात मैंने सोचा था कि मजाक करने के साथ मुद्दे थे। इसके लिए और आईओसी कंटेनर के बारे में जानकारी – Mike

0

प्रदर्शन और उपयोग की आसानी के लिए, विकल्प दो सबसे अधिक समझ में आता है। मैं अब विकल्प 2 का उपयोग कर रहा हूं और किसी भी मुद्दे पर नहीं चला है। उनमें से ज्यादातर में केवल एक रेखा होती है जो डीएएल को कॉल करती है और फिर एक और पंक्ति जो log4net के साथ लॉग होती है। उनमें से ज्यादातर में उनके पास बहुत से व्यवसाय तर्क नहीं हैं।

मैं इसका उपयोग एएसपी.नेट के साथ कर रहा हूं, हालांकि।

+0

आपने कहा कि आप विकल्प 2 का चयन करेंगे। विकल्प 1 और विकल्प 2 के बीच के अंतर के बारे में आप क्या सोचते हैं? वे दोनों उपयोग और स्थिर दोनों आसान हैं। फिर विकल्प 1 का चयन क्यों नहीं करें? – Fer

+0

मैं विकल्प 1 का उपयोग नहीं करता क्योंकि यह बहुत कठोर है। एक स्थिर वर्ग के साथ, आपके सभी सदस्यों को स्थिर होना चाहिए। एक स्थिर वर्ग की तुलना में स्थिर सदस्यों के साथ एक गैर स्थैतिक वर्ग होना आम बात है। आप अभी भी विकल्प 2 के साथ एक उदाहरण बना सकते हैं, लेकिन आप विकल्प 1 के साथ स्थिर वर्ग के साथ फंस गए हैं। सबसे आसान क्या है के साथ जाएं। इसके अलावा, विकल्प 1/2 यूनिट परीक्षण के लिए आदर्श नहीं है, लेकिन यदि आपके पास उन तरीकों में बहुत कुछ नहीं है, तो यूनिट परीक्षण वैसे भी आवश्यक नहीं है। मेरा अधिकांश तर्क संग्रहित प्रक्रियाओं में है, निर्भर करता है। –

0

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

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

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