我正在ASP.NET中开发一个使用WCF服务的网站。我正在使用以下方法创建服务客户端对象:
我正在使用Global类文件来定义这些方法。
public static WCore.Service1Client client;
public static int ConnectToWCore()
{
try
{
client = new WCore.Service1Client();
}
catch (Exception)
{
return -1;
}
return 0;
}
所以我的问题是,在网站上使用静态客户端对象是否正确?因为我很困惑它可能会遇到死锁问题,因为许多用户将访问同一个对象,因为静态对象只创建一次并且对所有实例都是通用的。请告诉我哪一个是高效静态对象还是标准对象?
答案 0 :(得分:2)
WCF客户端应该是轻量级的,并且可以在任何需要的地方创建。除非您实际上已经通过创建多个客户端对象来测量性能问题,否则您应该这样做。
使用错误代码返回值也不是处理C#错误的正确方法。 C#使用异常,这就是所有C#代码都应该使用的。
答案 1 :(得分:0)
我不认为为WCF使用静态服务客户端是一个很好的举措,因为我已经看到,在几乎所有实例中,它都是在需要时创建的,然后被处理掉。
如果我错了,请纠正我,但坚持服务客户是浪费资源,并为各种问题开辟机会,例如会话丢失,超时以及其他问题。通常的做法是按需创建它们,然后处理您的业务然后处理该对象。
另外,我认为ASP网站在客户端之间“实例化”,每个客户端都有自己的同一网站的单独副本。因此,您可能会遇到多个客户端尝试同时访问同一服务客户端的更多问题。