下面是一个配置文件示例。有许多绑定可用,如
**basicHttpBinding,netTcpBinding,wsDualHttpBinding** basicHttpBinding,netTcpBinding,wsDualHttpBinding
我是WCF的新手,所以很多人都在考虑混乱,而这些是----
那么人们如何从客户端创建代理以连接wcf服务。自然他们都使用mex端点地址 http:// YourServer / Services / MyService / mex
如果一个mex端点足够,那么客户端如何使用 netTcpBinding或wsDualHttpBinding 向其客户端应用程序发出指令以连接到wcf服务。
请与我分享以下知识: 1)如果我使用客户端的mex端点地址创建代理,那么我的应用程序将使用哪些绑定来连接到wcf服务?
2)如何使用 netTcpBinding或wsDualHttpBinding 从客户端连接到wcf服务?是否有使用代码可用的技巧?
寻找深入讨论。谢谢
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="YourNamespace.YourService" behaviorConfiguration="Default">
<endpoint name="Default"
address="http://YourServer/Services/MyService"
binding="basicHttpBinding"
contract="YourNamespace.IYourService"/>
<endpoint name="TCP"
address="net.tcp://YourServer/ServicesTCP/MyService"
binding="netTcpBinding"
contract="YourNamespace.IYourService"/>
<endpoint name="mex"
address="http://YourServer/Services/MyService/mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
<endpoint name="Dual"
address="http://YourServer/Services/MyService/Dual"
binding="wsDualHttpBinding"
clientBaseAddress="http://localhost:8001/client/"
contract="YourNamespace.IYourDualService"/>
</service>
</services>
</system.serviceModel>
答案 0 :(得分:2)
如果您拥有多个端点的服务,则创建的代理包含服务上公开的每种合同类型的单独客户端类。如果您有多个具有相同合同的端点,则在客户端的配置文件中定义这些端点,并且每个端点都指定了名称。如果要使用某些特定绑定调用服务,只需将端点配置的名称传递给代理构造函数。
答案 1 :(得分:0)
如何使用netTcpBinding从客户端连接到wcf服务,或者wsDualHttpBinding是否有使用代码可用的技巧?
这可以通过命名所有配置并将其中一个名称传递到clientproxy来完成:
public class SomeServiceClient : ClientBase<ISomeService>, ISomeService
{
public SomeServiceClient() { }
public SomeServiceClient(string endpointConfigurationName) :
base(endpointConfigurationName) { }
public void Do()
{
Channel.Do();
}
}
这样,您可以更改端点(以及绑定)运行时。 有关一个工作示例,请查看(https://www.box.com/shared/n4unt3mtjx) Peter Bernhardt (http://peterbernhardt.wordpress.com/2008/09/ 17 /安全和身份中的WCF部分-4-授权定制的索赔/)