我有一个问题:如何在客户端应用程序中使用“foreach”服务的命名空间?
所以,我的服务中有web.config文件。 客户端部分:
<client>
<endpoint address="http://nail:81/raj/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
name="BasicHttpBinding_IService1" />
<endpoint address="http://www.xxx.ru:81/upd/Service1.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService11"
contract="ServiceReference2.IService1" name="BasicHttpBinding_IService11" />
</client>
在我的客户端应用中,我使用它:
updater.ServiceReference1.Service1Client myclient = new updater.ServiceReference1.Service1Client();
问题:将来,我将在web.config中提供超过50个引用(在我的服务上)。 而且我不想写这样的50个代码行。
非常感谢!
答案 0 :(得分:2)
回答你的一条评论(当然还有你的问题):
我有一个客户端应用程序和50台拥有50项服务的计算机。所有 这些服务正在连接到我的电脑。如果我想全部使用 其中,我必须创建50个客户端对象。但我想用一些东西 像'foreach'一样用于创建客户端的对象并使用它们。也许在那里 还有其他方式吗?
老实说,我没有找到任何优势来实例化您的服务客户端50次并让这些对象使用它们而不是“ 在某个地方创建一个要调用服务操作的变量,创建一个实例一些服务客户端 “。
你真的要在内存中有50个对象,为了什么?这是浪费记忆,毕竟你的目标是无用的。
就像说,我的业务层中有50个业务经理而且我想预加载它们......但是等等,为什么我不在代码需要时单独实例化所有人?
也许我绝对误解了你的目标,但似乎你想让你的场景过于复杂化到达同一点。
答案 1 :(得分:1)
真的,我不需要在50个对象中提供50个服务引用。在App.config中,在客户端部分我可以写:
endpoint address=""
从我的客户代码中,在圈子中,我写道:
EndpointAddress endp = new EndpointAddress("some_ip_adress");
myclient.Endpoint.Address = endp;
就是这样。
感谢MatíasFidemraizer提供建议!
答案 2 :(得分:0)
您在配置中拥有的是服务和端点的配置,这不是您要实例化的内容。
实例化updater.ServiceReference1.Service1Client
,它是由WSDL工具生成的代理类。实现此动态的唯一方法是使用Reflection来加载该命名空间中的类型。