मैं इस ट्यूटोरियल का पालन किया (कम से कम इस में मेरी WCF आधारित है, coz मैं तो जरूरत है एक जैसे काम करने के लिए): http://www.eggheadcafe.com/tutorials/wcf/b5ada8df-58c5-492f-b368-457b3a4f137c/notify-client-applications-using-wcf-callbacks.aspxइंटरनेट पर डब्ल्यूसीएफ ड्यूल सेवा का उपयोग कैसे करें?
यह मेरे कंप्यूटर पर बहुत अच्छी तरह से काम कर रहा है, लेकिन मैं इंटरनेट पर इसका इस्तेमाल करने की जरूरत है। ऐसा करने की कोशिश करते समय मैंने सुना (इंटरनेट पर) जो NetTcpBiding का उपयोग करना बेहतर है।
मेरे पास एक ऐसा सर्वर होगा जो ऑनलाइन ग्राहकों की संख्या के बारे में जागरूक होने जा रहा है। मैं सर्वर में अपने आईआईएस पर एक डब्ल्यूएफसी सेवा चाहता था, और एक विंडोज़ सेवा इसे उपभोग कर रही थी और इसे अधिसूचित कर रही थी। मुझे कॉलबैक कोज़ की आवश्यकता है सर्वर को कभी-कभी क्लाइंट पर कुछ कमांड निष्पादित करने में सक्षम होना चाहिए।
अगर कोई मेरी मदद कर सकता है तो मुझे बहुत प्रसन्नता होगी।
अग्रिम धन्यवाद,
संपादित करें:
अपने आप को स्पष्ट करना: मैं सिर्फ यह इंटरनेट पर काम नहीं कर सके। क्या आप लोग मुझे दिखा सकते हैं कि मैं netTcp बाइंडिंग का उपयोग करने और इंटरनेट पर काम करने के लिए अपनी कॉन्फ़िगरेशन (Web.config e App.config) कैसे बदल सकता हूं?
एक बार फिर धन्यवाद,
संपादित करें 2:
मेरी WCFServiceApplication में मेरे Web.config है:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IPCWatcherWCFService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="TiT.PCWatcher.Server.WCFService.Services.PCWatcherWCFServiceBehavior" name="TiT.PCWatcher.Server.WCFService.Services.PCWatcherWCFService">
<endpoint address="" binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IPCWatcherWCFService" contract="TiT.PCWatcher.Server.WCFService.Interfaces.IPCWatcherWCFService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TiT.PCWatcher.Server.WCFService.Services.PCWatcherWCFServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
मेरी WindowsService में
मेरे App.config है:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IPCWatcherWCFService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:25145/Services/PCWatcherWCFService.svc"
binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IPCWatcherWCFService"
contract="PCWatcherWCFServiceReference.IPCWatcherWCFService"
name="WSDualHttpBinding_IPCWatcherWCFService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
बस इसे netTcp बाइंडिंग में बदलना काम नहीं करता है ...
लेकिन मुझे इंटरनेट पर इसे चलाने में सक्षम होने के लिए पर्याप्त खुशी होगी ... मैंने आईआईएस पर डब्ल्यूसीएफएस सेवा प्रकाशित की। लिंक:
https://www2.tcenter.com.br/monitor/PCWatcherWCFService.svc
या
http://www2.tcenter.com.br:8080/monitor/PCWatcherWCFService.svc
बस कॉन्फ़िगरेशन यह इंटरनेट के माध्यम से काम करने के लिए अपने enought बदलते? जैसे मैंने कहा, स्थानीय यह ठीक काम करता है।
मैंने सोचा था कि बस यूआरएल से एक के लिए ग्राहक पर endpoint पता बदलने कि ऊपर यह काम whould, लेकिन ऐसा नहीं किया ...
उदाहरण है कि आप मेजबान जुड़ा हुआ WPF पर सेवा। मुझे नहीं पता कि यह मेरे सीनेरियो पर लागू होता है ...
मुझे लगता है कि मैं ड्यूलहट्प बाइंडिंग के साथ रहना चाहता हूं, आपको नहीं लगता कि बंदरगाह अग्रेषित करना मेरी आवश्यकताओं के लिए अच्छा है, मैं बहुत कुछ कर सकता हूं एक इंट्रानेट में ग्राहकों का और राउटर होने का निर्णय लेता है कि वह इसके लिए जानकारी भेजने जा रहा है, इसका कोई अच्छा अधिकार नहीं है? या राउटर को एक ही बंदरगाह के माध्यम से मेरे वेबसर्वर को मिलने वाली प्रत्येक मशीन को गहराई से प्रतिक्रिया देने का एक तरीका है ?!(सिर्फ पूछ, hehehe)
अग्रिम धन्यवाद एक बहुत,
21/06/2012 पर संपादित करें:
पढ़ने के लिए धन्यवाद। मैं लैन में netTcp बाइंडिंग के साथ काम करने के लिए सेवा प्राप्त करने में सक्षम नहीं था। मैंने अपने सीनेरियो का नकली नमूना किया था। यह here है। ड्यूल कॉम्यूनिकेशनटेस्ट कहा जाता है।
जब मैंने यह पोस्ट शुरू किया, तो मैं सिर्फ यह जानना चाहता था कि इस सीनेरियन को इंटरनेट पर कैसे चलाना है। बस कि। मेरे पोस्ट के दौरान यहां पोस्ट करने से पहले समाधान खोजने के दौरान, मैंने पढ़ा कि netTcp बाइंडिंग बेहतर है। तो मैंने इसके बारे में पूछा। यह सिर्फ एक पक्ष सवाल था।
तो ... पोस्ट पर मेरे वर्तमान जरूरतों हैं:
इंटरनेट पर the sample i developed का उपयोग कैसे करें।
या
कैसे netTcpBinding साथ the sample i developed काम करने और फिर इंटरनेट पर इसका इस्तेमाल करने में सक्षम हो। (मुझे यकीन है कि Clunky Coder ने मुझे आईआईएस और सामान के साथ इंटरनेट पर net.tcp प्रकाशित करने के तरीके पर दूसरा भाग सिखाया, इसके लिए बहुत बहुत धन्यवाद, लेकिन मैं अभी तक इसका परीक्षण करने में सक्षम नहीं था, क्योंकि मैं ' टी अभी तक netTcp करें।)
मुझे खेद है कि अगर मैं पर्याप्त स्पष्ट नहीं हूं, तो मेरी अंग्रेजी इतनी अच्छी नहीं है। श्रीमान और फिर से धन्यवाद, बहुत कुछ।
वास्तव में अच्छी पढ़ाई ... ठीक है, अगर मैं netTcp या wsDual के लिए जा रहा हूं, तो मैं अब और नहीं जानता, लेकिन, क्या आप कृपया इसे काम करने में मेरी मदद कर सकते हैं? मैं काम करने के लिए ऊपर दिए गए लिंक में लागू उदाहरण डालने में खुश हूं ... –
@ तानेलियन बरैरीरा, मैंने अभी लेख को देखा है, ऐसा लगता है कि यह अच्छी तरह लिखा गया है, वास्तव में समस्या क्या है? यह इसे देखकर एक साधारण चैट सेवा को कार्यान्वित कर रहा है, डब्ल्यूसीएफ में कॉलबैक पर कई उदाहरण हैं। विचार का सारांश यह है कि क्लाइंट सेवा पर कुछ ऑपरेशन कहता है, और सेवा बदले में क्लाइंट पर एक विधि कॉल कर सकती है (यह कॉलबैक है), इसलिए क्लाइंट अस्थायी रूप से सर्वर की तरह ही होगा। 'ChatService' में विधियां ग्राहक हैं जो सर्वर पर कॉल करती हैं, और 'IChatServiceCallback' में विधियां क्लाइंट पर सेवा को आमंत्रित करती हैं। –
@TanielianBarreira मेरे अपडेट को देखो। –