Tôi đi theo hướng dẫn này (ít nhất là WCF tôi có trụ sở tại này, coz Tôi cần sau đó làm việc như nhau): http://www.eggheadcafe.com/tutorials/wcf/b5ada8df-58c5-492f-b368-457b3a4f137c/notify-client-applications-using-wcf-callbacks.aspxCách sử dụng Dịch vụ kép WCF qua internet?
Nó làm việc rất tốt trên máy tính của tôi, nhưng tôi cần phải sử dụng nó qua internet. Trong khi cố gắng để làm điều này tôi nghe (qua internet) đó là tốt hơn để sử dụng netTcpBiding.
Tôi sẽ có một máy chủ sẽ nhận biết số lượng khách hàng trực tuyến. Tôi muốn một dịch vụ WFC trên IIS của tôi trong máy chủ, và một dịch vụ windows tiêu thụ nó và thông báo cho nó. Tôi cần coz gọi lại máy chủ đôi khi phải có khả năng thực hiện một số lệnh trên máy khách.
Tôi sẽ rất hài lòng nếu có ai có thể giúp tôi.
Cảm ơn trước,
Edit:
Làm bản thân mình rõ ràng: Tôi chỉ không thể làm cho nó hoạt qua internet. Các bạn có thể chỉ cho tôi cách tôi có thể thay đổi cấu hình của mình (Web.config e App.config) để sử dụng netTcpBinding và làm việc trên internet không?
Cảm ơn một lần nữa,
Sửa 2:
Web.config của tôi trong WCFServiceApplication của tôi là:
<?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>
My App.config trong WindowsService của tôi là:
<?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>
Chỉ cần thay đổi nó thành netTcpBinding không hoạt động ...
Nhưng tôi sẽ vui mừng, đủ để có thể chạy trên internet ... Tôi đã xuất bản WCFService trên IIS. Liên kết:
https://www2.tcenter.com.br/monitor/PCWatcherWCFService.svc
HOẶC
http://www2.tcenter.com.br:8080/monitor/PCWatcherWCFService.svc
Chỉ cần thay đổi configs enought của mình để làm cho nó hoạt động thông qua internet? như tôi đã nói, địa phương nó hoạt động tốt.
Tôi nghĩ rằng chỉ cần thay đổi địa chỉ điểm cuối trên máy khách với một trong các URL của nó trên whould làm việc, nhưng nó đã không ...
Các ví dụ mà bạn liên kết host các dịch vụ trên WPF. Tôi không biết nếu nó áp dụng cho cenario của tôi ...
Tôi nghĩ rằng tôi sẽ gắn bó với DualHttpBinding, bạn không nghĩ rằng cổng chuyển tiếp đó là tốt cho nhu cầu của tôi, tôi có thể có rất nhiều của khách hàng trong một mạng nội bộ và có bộ định tuyến quyết định cái nào anh ta sẽ gửi thông tin cho nó không tốt lắm? hoặc có một cách để làm cho bộ định tuyến đáp ứng một cách tinh tế cho mỗi máy và mọi máy con trỏ đến máy chủ web của tôi thông qua cùng một cổng?(Chỉ cần hỏi, hehehe)
Thanks a lot trước,
Edit trên 21/06/2012:
Cảm ơn đã đọc. Tôi không thể sử dụng dịch vụ netTcpBinding trong mạng LAN. Tôi đã làm một mẫu giả của cenario của tôi. Đó là here. Được gọi là DualCommunicationTest.
Khi tôi bắt đầu bài đăng này, tôi chỉ muốn biết cách làm cho cenarion này chạy trên internet. Chỉ vậy thôi. Trong thời gian tôi tìm kiếm giải pháp trước khi đăng bài ở đây, tôi đã đọc rằng netTcpBinding là tốt hơn. Vì vậy, tôi hỏi về nó. Đó chỉ là một câu hỏi phụ.
... Vì vậy, nhu cầu hiện tại của tôi trên bài là:
Làm thế nào để sử dụng the sample i developed trên internet.
HOẶC
Làm thế nào để làm cho the sample i developed làm việc với netTcpBinding VÀ sau đó có thể sử dụng nó trên internet. (Tôi khá chắc chắn Clunky Coder đã dạy tôi phần thứ hai, về cách xuất bản một net.tcp trên internet với IIS và các công cụ, cảm ơn rất nhiều cho điều đó, nhưng tôi đã không thể kiểm tra nó được nêu ra, bởi vì tôi couldn ' t làm một netTcp chưa.)
Tôi xin lỗi nếu tôi không đủ rõ ràng, tiếng Anh của tôi không tốt. sry và cảm ơn một lần nữa, rất nhiều.
Đọc sách thật sự ... ok, tôi không biết nữa nếu tôi đang dùng netTcp hoặc wsDual, nhưng, bạn có thể vui lòng giúp tôi làm cho nó hoạt động không? Tôi rất vui khi chỉ đưa ví dụ được triển khai vào liên kết ở trên để làm việc ... –
@TanielianBarreira, tôi chỉ xem bài viết, có vẻ như được viết, chính xác thì vấn đề là gì? Nó thực hiện một dịch vụ trò chuyện đơn giản bởi vẻ ngoài của nó, có rất nhiều ví dụ về callbacks trong WCF. ý chính của ý tưởng là khách hàng gọi một số thao tác trên dịch vụ và dịch vụ có thể lần lượt gọi một phương thức trên máy khách (đây là cuộc gọi lại), vì vậy máy khách tạm thời sẽ giống như một máy chủ. Các phương thức trong 'ChatService' là những gì khách hàng gọi trên máy chủ và các phương thức trong' IChatServiceCallback' là những gì dịch vụ gọi trên máy khách. –
@TanielianBarreira nhìn vào bản cập nhật của tôi. –