Web services 使用其他服务的服务
在我真正尝试调用其操作契约之前,确认这些已使用的服务实际已启动并运行的最佳方法是什么?我希望这样做,以便我可以优雅地向客户显示一些信息,给他/她一个更愉快的用户体验。谢谢。 < P>我不认为自己是这个社区的一部分,但我以前是在这种情况下,这是简单的异常处理周围的服务电话。如果您控制着这些服务,那么您可以设置一个status方法来返回它的当前状态。如果网络关闭,您甚至无法访问该服务,那么您将不得不通过一些异常处理来处理该问题,但如果父服务无法使用其子服务,您可以返回状态Web services 使用其他服务的服务,web-services,language-agnostic,exception-handling,Web Services,Language Agnostic,Exception Handling,在我真正尝试调用其操作契约之前,确认这些已使用的服务实际已启动并运行的最佳方法是什么?我希望这样做,以便我可以优雅地向客户显示一些信息,给他/她一个更愉快的用户体验。谢谢。 < P>我不认为自己是这个社区的一部分,但我以前是在这种情况下,这是简单的异常处理周围的服务电话。如果您控制着这些服务,那么您可以设置一个status方法来返回它的当前状态。如果网络关闭,您甚至无法访问该服务,那么您将不得不通过一些异常处理来处理该问题,但如果父服务无法使用其子服务,您可以返回状态 但是,如果您是这样做的,我
但是,如果您是这样做的,我个人的意见是,您不应该关心使用其他服务的服务。我创建了一个
IsAvailable
方法,用于检查我的服务的所有基础依赖项。我的客户在对我的服务执行任何其他操作之前会调用此方法。如果返回true,则可以使用我的服务
如果在事务发生时某个基础依赖项不可用,我们还进行中间人检查以回滚任何更改
例如:
以下是客户如何使用my IsAvailable的一个简单示例:
不可用代码
[WebMethod]
public bool IsAvailable()
{
bool EverythingUpAndRunning = true;
try
{
string TestConnectionString = WebConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
SqlConnection sqlConnection = new SqlConnection(TestConnectionString);
sqlConnection.Open();
sqlConnection.Close();
sqlConnection.Dispose();
}
catch(Exception ex)
{
EverythingUpAndRunning = false;
}
return EverythingUpAndRunning;
}
客户端代码:
MyWebService proxy = new MyWebService();
if(proxy.IsAvailable)
{
//if true, you can use the other available methods in the service
}
有趣的问题-我还没有找到任何普遍可用和适用的答案-我很想看看SO社区能想出什么!服务客户端仍然需要捕获每个服务调用(包括IsAvailable方法)的异常。如果服务不可用,它将重新运行false。我不会抛出异常。忘了提了,很有趣的方法。似乎你可以用一种与消息传递协议无关的方式来应用它。请你举一个小例子好吗?@Paul Morie-我已经更新了我的答案以回应你的评论