2010-09-28 13 views
31

हम एक नया वेब आधारित उत्पाद शुरू कर रहे हैं जिसमें हम डब्ल्यूसीएफ सेवाओं के माध्यम से अपने व्यापार तर्क का पर्दाफाश करने की योजना बना रहे हैं। हम एएसपी.NET 4.0, सी #, ईएफ 4.0 का उपयोग करेंगे। भविष्य में हम सेवाओं के आधार पर आईफोन अनुप्रयोगों और डब्ल्यूपीएफ अनुप्रयोगों का निर्माण करना चाहते हैं। मैं पीओसीओ बनाम सेल्फ ट्रैकिंग एंटिटीज (एसटीई) का उपयोग करने के बारे में बहुत कुछ पढ़ रहा हूं और मेरी समझ से एसटीई वेब परिदृश्य के साथ अच्छी तरह से काम नहीं करते हैं। क्या कोई इस मुद्दे पर अधिक प्रकाश डाल सकता है?स्वयं ट्रैकिंग इकाइयां बनाम पीओसीओ इकाइयां

+0

मुझे खुशी है कि इस प्रश्न पूछा गया था, आज कुछ समय पहले ASP.NET वेब एपीआई के किसी भी, WCF डेटा सेवाओं, या इकाई की रूपरेखा API (जटिल ऑप्स) का उपयोग की सिफारिश की है, लेकिन मैं क्या आप अंततः पर फैसला करने के लिए के रूप में उत्सुक हूँ पीओसीओ बनाम एसटीई स्थिति? –

उत्तर

36

मेरे लिए एसटीई बिल्कुल गलत अवधारणा है। यह डेटासेट का एक और कार्यान्वयन है।

  • एएसपी.नेट आवेदन में आपको अनुरोधों के बीच कहीं एसटीई स्टोर करना होगा। पहले अनुरोध में आप एसटीई प्राप्त करने और पृष्ठ में डेटा प्रदान करने के लिए अपने डेटासोर्स से पूछेंगे। अगले अनुरोध (पोस्टबैक) में आप ब्राउज़र से लौटाए गए डेटा के साथ एसटीई को संशोधित करना चाहते हैं। ट्रैकिंग का समर्थन करने के लिए आपको पहले अनुरोध में उसी एसटीई का उपयोग करना होगा = > आपको दृश्यस्थल में एसटीई स्टोर करना होगा (यदि आप एएसपी.नेट वेबफॉर्म का उपयोग करना चाहते हैं) या सत्र।
  • एसटीई एसओए या इंटरऑपरेबिलिटी के लिए बेकार है। ट्रैकिंग तर्क एसटीई का हिस्सा है = यह क्लाइंट पर चल रहा है। यदि आप सेवा में एसटीई का पर्दाफाश करते हैं तो आप तुरंत उम्मीद कर रहे हैं कि ग्राहक पक्ष एसटीई तर्क में शामिल समान ट्रैकिंग सुविधाओं का उपयोग करेगा। लेकिन ये सुविधाएं स्वचालित रूप से दूसरी तरफ प्रदान नहीं की जाती हैं। .NET में आपके पास है क्योंकि आप एसटीई के साथ असेंबली साझा करते हैं। लेकिन अन्य प्लेटफ़ॉर्म पर आपको डेवलपर्स को यह समझाना होगा कि इसे अपने पक्ष में काम करने के लिए एसटीई तर्क को कैसे कार्यान्वित किया जाए। आईफोन एप्लिकेशन के कारण यह शायद आपके लिए सबसे सीमित मामला होगा।
+0

एएसपी.नेट में, क्यों न केवल पहले अनुरोध पर एसटीई दिखाएं और पोस्टबैक पर डेटाबेस से एसटीई प्राप्त करें, फ़ील्ड अपडेट करें और सहेजें? –

+2

यदि आप अतिरिक्त डेटाबेस क्वेरी से खुश हैं तो आपको जटिल ऑब्जेक्ट ग्राफ़ के संशोधन को छोड़कर STE की आवश्यकता नहीं है। आप ऑब्जेक्ट कॉन्टेक्स्ट (पॉको प्रॉक्सी के साथ) को आपके लिए परिवर्तन ट्रैक करने के लिए दे सकते हैं। –

+0

"एसटीई एसओए या इंटरऑपरेबिलिटी के लिए बेकार है।" में पूरी तरह से सहमत हूँ। दुर्भाग्य से लोग एसओए और डब्ल्यूसीएफ को रिमोटिंग के रूप में देखने पर जोर देते हैं। निश्चित रूप से, यह किया जा सकता है, लेकिन फिर आप ग्राहक में बहुत भरोसा डाल रहे हैं। –

7

स्वयं ट्रैकिंग संस्थाएं डब्लूसीएफ परिदृश्य के साथ एक एमवीसी वेब में पूरी तरह से काम करती हैं। मैं उनका उपयोग कर 2 परियोजनाओं में शामिल रहा हूं (उत्पादन में से एक, लगभग एक)।

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


क्या आप इस दावे के लिए उद्धरण प्रदान कर सकते हैं? "एसटीई वेब परिदृश्य के साथ अच्छी तरह से काम नहीं करते हैं"

+1

आप अनुरोधों के बीच अपना एसटीई कैसे बना रहे हैं (जैसे जीईटी -> पोस्ट)? –

+0

@jfar, डब्ल्यूसीएफ परिदृश्य में यदि आप एसटीई (ए.के.ए. सेल्फ ट्रैकिंग एंटिटीज) का उपयोग करते हैं तो "प्लेटफार्म इंडिपेंडेंट सर्विसेज" की अवधारणा खो जाती है। उदाहरण के लिए, यदि जावा क्लाइंट एप्लिकेशन है जो डब्ल्यूसीएफ सेवा के साथ बातचीत करना चाहता है तो क्या होगा। क्लाइंट साइड पर जावा क्लाइंट एप्लिकेशन एसईटी कैसे प्राप्त करेगा? दुर्भाग्य से, यह बस नहीं कर सकता! मतलब, अगर हम एसटीई का उपयोग कर रहे हैं तो हमारी डब्ल्यूसीएफ सेवा केवल नेट में निर्मित ग्राहकों द्वारा उपयोग की जा सकती है। कौन सा भयानक है ना? – Baig

2

यह सेवा आपको, प्रत्यक्ष नियंत्रण नहीं है तो आप शायद दृढ़ता से कुछ भी तलाक एफई (या nHibernate या Linq2Sql या किसी अन्य डेटा हठ प्रबंधन समाधान) के साथ क्या करना पर विचार करना चाहिए किसी भी एप्लिकेशन द्वारा सेवन किया जा रहा है, तो आपकी सेवाओं और आपके डेटा स्थानांतरण वस्तुओं से। यह ग्राहकों को तोड़ने से आंतरिक परिवर्तनों को इन्सुलेट करेगा। ब्रेकिंग क्लाइंट आमतौर पर एक बुरी चीज है।