[英]Windows Form and WCF service
我环顾四周,没有完全找到想要的东西。
我在同一项目中有Windows窗体和wcf服务,并且通过执行以下操作将wcf服务与窗体一起托管:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ServiceHost host = new ServiceHost(typeof(Service1));
host.Open();
Application.Run(new Form1());
host.Close();
使用该服务的应用程序没有问题可以调用它。
我的问题是现在在Windows窗体中调用wcf服务的方法。 我可以做
Service1 service = new Service1();
service.doWork();
但是通过这样做,我并没有使用与服务客户端相同的实例(即使我使用InstanceMode.Single),但我想要这样做。
我知道我可以简单地将Windows窗体实现为Web服务的GUI客户端(添加服务引用)。
但是我只是想将wcf服务托管在Windows窗体中,并访问与wcf客户端相同的服务实例。 我怎样才能做到这一点?
如果使用的是InstanceMode.Single,则仅“获取客户端的相同实例”才有意义,因此这是强制性的。 如果执行此操作,则可以使用ServiceHost.SingletonInstance
属性。 这为您提供了实例(Object类型),因此您必须将其强制转换。
我认为要使其工作,必须使用Service1
实例而不是类型实例化ServiceHost。
详情请参见:
http://msdn.microsoft.com/en-us/library/ms585487.aspx
在这种情况下,您可以保留对用于创建ServiceHost
的实例的引用,而不是ServiceHost
本身,从而节省了对ServiceHost.SingletonInstance
的额外调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.