2011-10-15 12 views
5

कुछ बहुत ही बुनियादी प्रश्न। मैं डब्ल्यूसीएफ के लिए नया हूं और मैं एक एप्लीकेशन तैयार कर रहा हूं जिसमें एक सेवा प्रोजेक्ट, एक वेब एप्लीकेशन प्रोजेक्ट और कुछ क्लास लाइब्रेरी प्रोजेक्ट्स हैं जो मैं बिजनेस लॉजिक इत्यादि के लिए उपयोग करता हूं।कई परियोजनाओं के लिए डब्ल्यूसीएफ सेवा संदर्भ जोड़ना

मैं अपने आईआईएस पर स्थानीय रूप से डब्ल्यूसीएफ की मेजबानी कर रहा हूं और परियोजनाओं के लिए सेवा संदर्भ जोड़ने की कोशिश कर रहा है।

प्रश्न 1. संदर्भ जोड़ते समय, क्या मुझे प्रत्येक प्रोजेक्ट को अलग से सेवा संदर्भ जोड़ना चाहिए या क्या कोई तरीका है कि मैं परियोजनाओं में एक ही सेवा संदर्भ साझा कर सकता हूं?

कारण मैं पूछता हूं क्योंकि यदि मैं अलग-अलग संदर्भ जोड़ता हूं, तो प्रत्येक संदर्भ को अपना नामस्थान मिलता है, और जब मुझे परियोजनाओं के बीच एक ही वस्तु पारित करनी होती है, तो मुझे एक अवैध कैस्ट अपवाद मिलता है क्योंकि प्रत्येक सेवा क्लाइंट के पास एक अलग नामस्थान होता है।

उदाहरण -।। Site.Business.XDataService.XDataServiceClient() GetItem() Site.Web.XDataService.XDataServiceClient() के समान नहीं है GetItem()

प्रश्न 2। ": // स्थानीय होस्ट: 801/XDataService.svc http" IncludeExceptionDetailInFaul

[ServiceBehavior (नामस्थान = - मैं कक्षा में स्थानीय सेवा है कि नीचे के रूप में सेवा इंटरफ़ेस लागू करता है के पते का उल्लेख ts = true)]

यह सही प्रतीत नहीं होता है। अगर मैं अपने कोड को एक अलग/लाइव वातावरण में ले जाता हूं, तो मुझे स्पष्ट रूप से इस भाग को फिर से बदलना होगा और फिर से कंपाइल करना होगा। मैं यह कहां निर्दिष्ट कर सकता हूं (Web.Config?) ताकि मैं अपना ऐप पुनर्निर्माण किए बिना इस पते को बदल सकूं?

किसी भी प्रकार की अंतर्दृष्टि की सराहना करें। धन्यवाद!

उत्तर

6

पहले प्रश्न के उत्तर में, आप सेवा संदर्भ को अपने स्वयं के प्रोजेक्ट में डाल सकते हैं और उन सभी अन्य परियोजनाओं में परियोजना को संदर्भित कर सकते हैं जिन्हें उस सेवा तक पहुंचने की आवश्यकता है। (!) -

मूल रूप से सभी सेवा संदर्भ है .NET कोड की एक मुश्त है एक WCF सेवा आप भी एक अंतरफलक मुक्त करने के लिए में फेंक दिया पाने के लिए नाम स्थान, वर्ग, आदि

अभी तक बेहतर (कम या ज्यादा वही इंटरफ़ेस जिसे आपने अपनी सेवा के लिए परिभाषित किया है) ताकि निर्भरता इंजेक्शन बनाने आदि के मामले में आप अच्छी चीजें कर सकें।

+0

स्पष्टीकरण के लिए धन्यवाद। लेकिन यदि डब्ल्यूसीएफ परियोजना एक ही एप्लीकेशन में है, तो क्या आप अनुशंसा करेंगे कि मैं दो परियोजनाएं तैयार करूं, एक सेवा होस्ट होगा जहां सभी कोड झूठ बोलेंगे और दूसरा एक सेवा क्लाइंट जिसका उपयोग मैं अन्य परियोजनाओं के संदर्भ के रूप में कर रहा हूं ? – Kalyan

+1

हां, दो परियोजनाएं और हाँ एक सेवा ग्राहक जो आप अपनी अन्य परियोजनाओं में संदर्भित करते हैं – Murph

4

पहला प्रश्न - सेवा किसी भी अन्य कोड की तरह है। उदाहरण के लिए, डेटाबेस एक्सेस कोड। क्या आपको उस प्रत्येक प्रोजेक्ट में रखना चाहिए जिसे आपके डेटाबेस तक पहुंचने की आवश्यकता है? नहीं - आपको इसे एक परियोजना में रखना चाहिए जो कि अन्य परियोजनाएं संदर्भित कर सकती हैं।

आपके दूसरे प्रश्न के लिए, आप एक नामस्थान निर्दिष्ट कर रहे हैं लेकिन मुझे उम्मीद है कि आप सोचें आप एक सेवा अंतराल पता निर्दिष्ट कर रहे हैं। नेमस्पेस एक सी # कोड नेमस्पेस की तरह है - यह अनिवार्य रूप से उसी पहचान के साथ कई ऑब्जेक्ट्स होने पर आगे की पहचान और स्पष्टता प्रदान करता है। आम तौर पर आप http://mywebsite.com/MyService/VersionNumberIfRequired या इसी तरह के नामस्थान का उपयोग करेंगे।

पता स्वयं कॉन्फ़िगरेशन में निर्दिष्ट है।पता पर्यावरण/तैनाती स्थान के आधार पर बदल जाएगा - नामस्थान नहीं होना चाहिए।

+0

धन्यवाद! मुझे पता था कि मैं प्रश्न 2 के संबंध में कुछ खो रहा था। मैं आपके सुझाव का पालन करूंगा। – Kalyan

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