繁体   English   中英

Windows窗体和WCF服务

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM