我是 WCF 的新手。我知道我们必须在服务端和客户端的配置文件中写入端点。假设我有多个端点
<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="Dual"
address="http://YourServer/Services/MyService/Dual"
binding="wsDualHttpBinding"
clientBaseAddress="http://localhost:8001/client/"
contract="YourNamespace.IYourDualService"/>
<endpoint name="mex"
address=""
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>
我们知道我们不能在客户端创建具有端点地址的代理,例如
http://YourServer/Services/MyService/Dual or
net.tcp://YourServer/ServicesTCP/MyService
相反,如果我们需要在客户端创建代理,那么我们需要提供 mex 端点地址。所以我只是不明白端点地址有什么用?
当我们在客户端创建代理并调用服务时,我们只是不明白我们的代理使用什么端点地址连接到服务?
这就是为什么我只想知道端点地址是如何发挥作用的?
我知道我们可以在配置文件中为 tcp 编写单独的 mex 端点,因此我们可以使用该 mex url 创建代理,结果当客户端连接到服务时,tcp 协议将用于通信,但对于其他 http 端点,一个 mex 端点工作正常。
我的重要问题是我真的很想知道假设我有 3 个端点,例如 basichttp、wshttp、wsdualbidning,然后一个 mex 端点适用于所有这些端点来创建代理。那么在这种情况下告诉我,当客户端连接到服务时,将使用哪个端点地址连接到该服务?
如果有人非常详细地讨论这个问题,并提供示例配置条目以及示例服务代码,这将是非常有帮助的吗?
更新部分
Tom Redfern 说......在内部使用的情况下不需要服务端点。假设我已经开发了一个托管在控制台应用程序中的服务,并且其他客户端需要连接到该服务。所以在这种情况下告诉我客户端如何在没有代理类的情况下连接到服务并调用各种服务方法。我只是想知道没有代理如何连接和调用 wcf 服务的各种方法。请为客户端提供一些示例代码,以展示我如何以编程方式连接和调用 wcf 服务的各种方法而无需代理。