gpt4 book ai didi

.net - WCF 服务应该一直保持打开状态吗?

转载 作者:行者123 更新时间:2023-12-02 17:38:19 25 4
gpt4 key购买 nike

我正在创建一个 wcf 服务,我的 wcf 服务现在托管在控制台应用程序中,如下所示

 PersonService = new ServiceHost(typeof(PersonService));
PersonService.AddServiceEndpoint(typeof(IPersonService), binding, "http://localhost:5645/PersonService");
PersonService.Open();

然后我使用 ChannelFactory 类使用 wcf 服务;

EndpointAddress endPoint = new EndpointAddress("http://localhost:5645/PersonService");
ChannelFactory<IPersonService> engineFactory = new ChannelFactory<IPersonService>(binding, endPoint);
IPersonService personChannel = engineFactory.CreateChannel();

然后我可以使用这个 channel 来调用一个方法,例如

personChannel.GetPersonById("1");
personChannel.Close();

我的问题是:

如上面的代码所示,服务始终打开,而 channel 在完成工作后关闭。这是保持服务打开的好行为吗?或者我应该打开服务,然后在每次调用时关闭它,考虑到我可能有两个客户端同时调用同一个服务。

请指教。

最佳答案

嗯,你的服务必须保持“开放”——这是你的行话,但实际上“开放”调用会在端口上放置一个监听器。服务器必须保持监听,以便知道客户端何时想要连接到它。如果没有这个,客户端将不会与不监听的服务者交谈。

当您的客户端完成并获得它想要的内容时,它可以终止(关闭)连接并消失,从而节省双方的资源。

这就像打电话一样。必须有人坐在电话旁边“听”电话铃声。客户拿起电话,调用服务热线。服务热线电话响起。该人(正在“听”的人)拿起电话,“连接”(即对话)开始。

当客户完成后,他/她放下电话,连接就结束了。然而,服务热线的接听人员必须继续“监听”新的铃声。

关于.net - WCF 服务应该一直保持打开状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5404079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com