我有一个问题:如何在客户端应用程序中使用"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行代码。
非常感谢!
发布于 2011-12-21 18:46:18
真的,我不需要50个对象中的50个服务引用。在App.config的client部分中,我可以这样写:
endpoint address="" 在我的客户代码中,我写道:
EndpointAddress endp = new EndpointAddress("some_ip_adress");
myclient.Endpoint.Address = endp;就这样。
感谢Matías Fidemraizer的建议!
发布于 2011-12-20 19:36:18
回答你的一个评论(当然还有你的问题):
i有一个客户端应用程序和50台带有50个服务的计算机。所有这些服务都连接到我的计算机上。如果我想全部使用它们,我必须创建50个客户端对象。但是我想使用类似'foreach‘的东西来创建客户端的对象,并使用它们。也许还有其他方法?
老实说,与“在你想要调用服务操作的地方创建一个变量,创建某个服务客户端的实例”相比,我没有发现实例化50次服务客户端并让这些对象使用它们有什么优势。
实际上,你的内存中将有50个对象,这是为了什么?这是对内存的浪费,毕竟你的目标在某种程度上是无用的。
这就像在说,我的业务层中有50个业务经理,我想预加载他们……但是等等,为什么我不在代码需要的时候分别实例化每个人呢?
也许我完全误解了你的目标,但似乎你想让你的场景变得过于复杂,以达到同样的目的。
发布于 2011-12-20 18:34:20
配置中包含的是服务和端点的配置,而不是您要实例化的配置。
您将实例化updater.ServiceReference1.Service1Client,它是由WSDL工具生成的代理类。使其动态化的唯一方法是使用反射来加载该命名空间中的类型。
https://stackoverflow.com/questions/8574014
复制相似问题