在我实际尝试调用其操作合同之前,确认这些已消耗的服务是否实际启动并运行的最佳方法是什么?我想这样做,这样我就可以优雅地向客户展示一些信息,让他/她获得更愉快的用户体验。感谢。
答案 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,我自己的意见,您不应该关注消耗其他服务的服务。