【发布时间】:2009-10-24 08:19:04
【问题描述】:
我有一个 WCF 服务,方法公开如下:
public interface IService
{
[OperationContract]
bool Read();
[OperationContract]
bool Write();
}
public class MyService : IService
{
//Constructor
MyService()
{
//Initialization
}
public bool Read()
{
//Definition
}
public bool Write()
{
//Definition
}
}
我有一个基于桌面的应用程序,它通过 URL 使用 Web 服务。 此 Web 服务可以部署在多个位置,因此用户可以通过从组合框中选择一个 url 来连接到任何 Web 服务。
在客户端应用程序中,我动态创建了一个服务客户端,如下所示:
ServiceReference1.DXMyServiceClient _client = null;
_client = new DXMyServiceClient ();
_client.Endpoint.Address = new System.ServiceModel.EndpointAddress(url);
问题 在调试时,我注意到每次调用 MyService 的构造函数时调用 Web 服务的任何方法(如果我连接到同一个服务)。
例如当我这样做时:
_client.Read();//MyService () constructor is called
_client.Write();//MyService () constructor is called
问题是我必须再次进行所有初始化.. 就像如果我连接到数据库然后我必须再次构建连接字符串和所有东西..
这是自然行为还是我做错了什么?
其次, 我想验证用户的有效网址(网络服务)。如果它连接到有效的 url 与否.. 我是通过 Ping 命令来做的.. 最好的方法是什么!
【问题讨论】:
-
考虑创建第二个关于检查 url 是否有效的问题。我不认为 ping 命令是个好主意,因为它只测试主机地址并测试 icmp 协议,而不是 tcp。主机可能不响应 ping 但这并不意味着它不是有效的 url。