我是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服务方法。
答案 0 :(得分:0)
端点需要一种解决方法。这既是基本的,也是合理的。
客户端仅需要元数据端点地址才能解析实际服务端点的论点仅在您公开元数据端点(这绝不是必需的)时以及当消费者没有其他消耗方式时才成立服务(也许服务是公开的)。
大多数服务是为内部开发而开发的,其中通过引用共享类型程序集(而不是通过服务代理)直接绑定到端点的能力是常见的。绝对需要了解这些实例中的端点地址。
如果您阅读UDDI的历史记录,则可以将其设计为将服务元数据分发给不需要了解该服务的消费者的方法。但是,您多久看一次UDDI服务器?我已经看到它在一家公司中使用(我总共工作了20个左右)。