gpt4 book ai didi

c# - 这是托管 WCF 服务的正确方法吗?

转载 作者:太空狗 更新时间:2023-10-30 01:11:25 25 4
gpt4 key购买 nike

对于一些测试代码,我希望仅用几行代码就可以托管 WCF 服务。我想我会写一个简单的托管类:

public class WcfHost<Implementation, Contract> : IDisposable
where Implementation : class
where Contract : class
{
public readonly string Address = "net.tcp://localhost:8000/";
private ServiceHost _Host;

public WcfHost ()
{
_Host = new ServiceHost (typeof (Implementation));

var binding = new NetTcpBinding ();
var address = new Uri (Address);

_Host.AddServiceEndpoint (
typeof (Contract),
binding,
address);
_Host.Open ();
}

public void Dispose ()
{
((IDisposable) _Host).Dispose ();
}
}

可以这样使用:

using (var host = new WcfHost<ImplementationClass, ContractClass> ()) {

这种做法有什么问题吗?代码中是否存在缺陷(尤其是关于处置)?

最佳答案

如果主机处于“故障”状态,则主机的 Dispose 方法可以抛出异常。如果发生这种情况,您将看不到实际出了什么问题,因为原始异常丢失了。对于测试代码,这可能不是问题,但如果您试图弄清楚为什么某些东西不起作用,它仍然会妨碍您。

我没有测试它,但您的 Dispose 方法中的以下内容应该没问题:

if (_Host.State == CommunicationState.Faulted)
{
_Host.Abort();
}
else
{
_Host.Close();
}

关于c# - 这是托管 WCF 服务的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2621090/

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