我编写了一个负责访问MySQL数据库的WCF服务,最终将编写一个消耗该服务的C#客户端应用程序。
但是我希望客户能够远程访问该服务。为此目的,什么是托管/端点配置的理想方法和/或如何从远程客户端访问服务。
我已经浏览了以下教程和其他一些但仍然不太了解app域,托管,远程访问概念,我也不知道如何远程连接。
http://msdn.microsoft.com/en-us/library/bb332338.aspx
Can a client remotely access WCF self-hosting Service?
任何好的教程,示例代码,建议或想法,还是我完全咆哮错误的树?
提前致谢
答案 0 :(得分:0)
我看到这样做的最好方法是在IIS上托管服务,最好是IIS 7 Integrated。
以下是在IIS上托管WCF服务的链接。 http://msdn.microsoft.com/en-us/library/ms733766%28v=vs.110%29.aspx
托管服务实际上相对容易,只需几分钟。
然后,您可以通过向C#项目添加服务引用来引用托管服务,甚至通过点击发现它是否尚未托管来引用托管服务。如果您托管了它,则添加在IIS 7中定义的URL。如果您没有托管它,只需将WCF服务和C#项目置于同一解决方案下并点击发现。
以下是用于向项目添加服务引用的链接。 http://msdn.microsoft.com/en-us/library/bb628652.aspx
您需要设置app.config文件或web.config文件,具体取决于您的应用程序类型,以便您可以定义C#项目与服务的交互方式。我的数据请求长度,超时,缓冲区大小,流式传输或缓冲传输等等。
样品:
<bindings>
<binding name="MyBindingConfiguration" closeTimeout="00:30:00"
openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"
messageEncoding="Text">
</bindings>
<client>
<endpoint address="http://localhost:55010/MyService.svc"
binding="basicHttpBinding" bindingConfiguration="MyBindingConfiguration"
contract="IMyWcfInterface"/>
</client>
如果有帮助,请告诉我。
答案 1 :(得分:0)
对于托管,我建议使用IIS和http绑定,其机制类似于托管Web应用程序。关于访问IIS托管的wcf服务,您只需要向客户端应用程序添加服务引用(它将自动生成可用于访问服务的代理类)。您可以找到更多详细信息here