当我注意到一个Web服务调用正在同一个盒子上进行另一个Web服务调用时,我正在考虑维护一些代码。因此,Web服务A使用主机localhost调用Web服务B.
不确定为什么开发人员这样做了,我想知道除了两倍的调用次数之外,对这种方式工作的Web服务的Web服务器(性能/内存/线程池等)有什么影响? / p>
答案 0 :(得分:2)
我假设其他Web服务是作为单独的Web应用程序的一部分部署的。当然,两个Web应用程序将占用比一个更多的资源。但是,iis / asp.net旨在为多个应用程序提供服务。
代码在同一台服务器上,我可以看到你为什么要本地调用它(主要是为了性能)。但是,我可以想到开发人员选择将功能公开为Web服务的许多非常好的理由。
也许单独的服务不是由客户端应用程序与其他人一起在不同的发布时间表(或者它可能是第三方服务)下开发的。更新单个部署单元与可能使用它的所有应用程序相比要容易得多。
将功能放在单独的服务/可部署单元中还允许该服务与消费应用程序分开扩展。
他/她的方法可能与基于微服务的体系结构背后的理由完全一致,其中只做一件事的完整堆栈服务被单独部署,然后经过精心编排以制作应用程序。
然而,再一次也许都不适用,这可能只是一种懒惰的骨头。由你来决定。
答案 1 :(得分:0)
Web服务A使用主机localhost调用Web服务B.
这不是一个好的设计而是第二次调用应该是本地的。这就像下面一样,最终只能进行一次通话,因此只进行一次往返,但在实际情况下进行两次单独的通话,最终将通过网络进行双次往返。
[webMethod]
public string A(string arg)
{
//Some business logic processing;
B(arg);
//Some more processing and return data;
}
public void B(string arg)
{
// do some internal logic;
}