使用消耗其他服务的服务

时间:2009-05-27 20:57:27

标签: web-services language-agnostic exception-handling

在我实际尝试调用其操作合同之前,确认这些已消耗的服务是否实际启动并运行的最佳方法是什么?我想这样做,这样我就可以优雅地向客户展示一些信息,让他/她获得更愉快的用户体验。感谢。

2 个答案:

答案 0 :(得分:2)

我创建了一个IsAvailable方法,检查了我服务的所有底层依赖项。在对我的服务做任何其他事情之前,我的客户会调用此方法。如果它返回true,我的服务可以使用。

如果在交易时无法获得其中一个底层依赖项,我们还会进行中间检查以回滚任何更改。

实施例

以下是客户端如何使用我的IsAvailable的简单示例:

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
}

答案 1 :(得分:1)

我不认为自己是SO社区的一部分,但我之前一直处于这种情况,并且围绕服务调用进行简单的异常处理。如果您控制服务,那么您可以建立一个返回其当前状态的状态方法。如果网络出现故障并且您甚至无法使用某些异常处理来处理该服务,但如果父服务无法使用它的子服务,则可能会返回状态。

如果您关注SO,我自己的意见,您不应该关注消耗其他服务的服务。