Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否在服务器而不是客户端上实例化WCF服务对象?_C#_Wcf - Fatal编程技术网

C# 是否在服务器而不是客户端上实例化WCF服务对象?

C# 是否在服务器而不是客户端上实例化WCF服务对象?,c#,wcf,C#,Wcf,我正在用C语言编写两个应用程序,它们需要能够通信(仅在一个方向上)。这两个应用程序将始终在同一台机器上运行,因此使用带有命名管道的WCF,并自托管WCF服务,似乎是合乎逻辑的选择 我知道我可以使用InstanceContextMode来配置服务实例是在每个会话、每个调用中实例化,还是应该只有一个实例。在我的例子中,我想要一个实例,因为我将只运行两个应用程序,因此将有一个客户端和一个服务器 但我被困在这里了。当我的客户拨打服务电话时,我是这样做的: var myServiceFactory = n

我正在用C语言编写两个应用程序,它们需要能够通信(仅在一个方向上)。这两个应用程序将始终在同一台机器上运行,因此使用带有命名管道的WCF,并自托管WCF服务,似乎是合乎逻辑的选择

我知道我可以使用InstanceContextMode来配置服务实例是在每个会话、每个调用中实例化,还是应该只有一个实例。在我的例子中,我想要一个实例,因为我将只运行两个应用程序,因此将有一个客户端和一个服务器

但我被困在这里了。当我的客户拨打服务电话时,我是这样做的:

var myServiceFactory = new ChannelFactory<IMyService>(
    new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/MyService"));

IMyService myService = myServiceFactory.CreateChannel();
myService.DoStuff();
var myservicecfactory=newchannelfactory(
新的NetNamedPipeBinding(),新的EndpointAddress(“net。pipe://localhost/MyService"));
IMyService myService=myservicecfactory.CreateChannel();
myService.DoStuff();
我不希望在服务器上创建新的服务器对象实例。相反,我希望myService指向服务器上已经构建的(唯一一个)IMyService实例。此时,将构造第二个IMyService实例

换句话说,我希望我的服务器对象由服务器构造(当服务器启动时),而不是当客户机第一次调用时


有人能解释一下怎么做吗?据我所知,.NETRemoting使这变得非常容易,而且WCF应该已经取代了Remoting,所以一定有一种简单的方法。。。是吗?

WCF的
ServiceHost
有一个构造函数,它采用服务类的单例实例而不是服务类型,正是出于这个目的。如果在服务主机中使用此构造函数,则必须将InstanceContextMode设置为Singleton


请注意,在您引用的客户端代码中,
IMyService myService
不是您所称的“服务器对象”。。。它是客户端代理,WCF通过它将消息从客户端路由到实际服务。

WCF的
ServiceHost
有一个构造函数,它采用服务类的单实例而不是服务类型,正是出于这个目的。如果在服务主机中使用此构造函数,则必须将InstanceContextMode设置为Singleton


请注意,在您引用的客户端代码中,
IMyService myService
不是您所称的“服务器对象”。。。它是客户端代理,WCF通过它将消息从客户端路由到实际服务。

我完全错过了ServiceHost构造函数,谢谢。(是的,在解释IMyService实例“指向”的含义时,我可能会更仔细一些。)我完全错过了ServiceHost构造函数,谢谢。(是的,在解释IMyService实例“指向”的含义时,我可能会更仔细一些。)