情况:
我有多个项目的解决方案:
现在我需要在我的可执行应用程序#1中使用WCF服务。
例如。从WCF项目中的UserService
检索有关用户的信息。
由于两个可执行文件都需要登录,由UserService
处理,我在共享项目中添加了“验证”方法。此身份验证也由UserService
处理。
问题:
现在我必须在每个项目中添加一个服务引用,这实际上不是问题。 但是现在我在所有三个项目中都生成了代理classe和端点。
我认为这是一个问题,因为我必须更新所有3个服务引用:
问题:
有没有很好的解决方案来添加服务引用而不在共享项目中创建端点配置而不在可执行应用程序中创建代理类?
答案 0 :(得分:0)
好吧我最近实现了类似的东西,这就是我所做的。我认为它提供了很好的关注点分离,使您不必在所有可执行文件中生成代理类。
代理类看起来像这样:
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项目的引用。
我希望这会对你有所帮助。如果您需要澄清任何事情,请告诉我。