[英]Consume same WCF Service from multiple projects in solution
情况:
我有多个项目的解决方案:
现在,我需要在我的可执行应用程序#1中使用WCF服务。 例如,从WCF项目中的UserService
检索有关用户的信息。 由于这两个可执行文件都需要由UserService
处理的登录,因此我在Shared Project中添加了“ Authenticate”方法。 此认证也由UserService
处理。
问题:
现在,我必须在每个项目中添加一个服务引用,这实际上不是问题。 但是现在我在所有三个项目中都生成了代理类和端点。
我认为这是一个问题,因为我必须更新所有3个服务引用:
题:
是否有任何不错的解决方案来添加服务引用,而无需在共享项目中创建端点配置,也无需在可执行应用程序中创建代理类?
好的,最近我实现了与此类似的功能,这就是我所做的。 我认为它提供了很好的关注点分离,使您不必在所有可执行文件中生成代理类。
代理类应如下所示:
public class ClientProxy
{
public IMyWCFService service;
public ClientProxy(string uri)
{
// Any channel setup code goes here
EndpointAddress address = new EndpointAddress(uri);
NetTcpBinding binding = new NetTcpBinding(SecurityMode.Transport);
binding.TransferMode = TransferMode.Streamed;
binding.MaxBufferSize = //whatever
binding.MaxReceivedMessageSize = //whatever
...
ChannelFactory<IMyWCFService> factory = new ChannelFactory<IMyWCFService>(binding, address);
service = factory.CreateChannel();
}
}
现在,您的WCF服务项目将包含对ServiceContract的引用,并且您将在此处实现该接口。
您的可执行文件将包含对ServiceContract和ClientProxy项目的引用。
我希望这可以帮助你。 让我知道您是否需要任何澄清。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.