Web services 使用其他服务的服务

Web services 使用其他服务的服务,web-services,language-agnostic,exception-handling,Web Services,Language Agnostic,Exception Handling,在我真正尝试调用其操作契约之前,确认这些已使用的服务实际已启动并运行的最佳方法是什么?我希望这样做,以便我可以优雅地向客户显示一些信息,给他/她一个更愉快的用户体验。谢谢。 < P>我不认为自己是这个社区的一部分,但我以前是在这种情况下,这是简单的异常处理周围的服务电话。如果您控制着这些服务,那么您可以设置一个status方法来返回它的当前状态。如果网络关闭,您甚至无法访问该服务,那么您将不得不通过一些异常处理来处理该问题,但如果父服务无法使用其子服务,您可以返回状态 但是,如果您是这样做的,我

在我真正尝试调用其操作契约之前,确认这些已使用的服务实际已启动并运行的最佳方法是什么?我希望这样做,以便我可以优雅地向客户显示一些信息,给他/她一个更愉快的用户体验。谢谢。

< 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-我已经更新了我的答案以回应你的评论