从我发现的内容中,有几次询问过这个问题:
When should a web service not be used? Web Service or DLL?
答案有所帮助,但他们都指出了一个特定的场景。我想对此有一个更普遍的想法。
何时应该通过共享库(DLL)考虑Web服务,反之亦然?
答案 0 :(得分:12)
我对此的想法:
Web服务专为机器互操作而设计,可以覆盖受众 通过使用HTTP作为传输方式很容易。
一个强项是,通过发布服务,你也开始使用 为有潜力的观众提供服务(通过网络或至少在整个网络上) 整个公司)和/或大部分在您的控制/影响/沟通渠道之外 而你不介意或这是你想要的。作为客户,服务的使用更加容易 只需要有互联网连接并使用该服务。不像图书馆那样 可能不那么容易做(但可以做到)。该服务的使用基本上是开放的。您可以将它提供给任何可以使用它的人,但是他们觉得可以使用它。
但是,网络服务通常较慢,并且依赖于互联网连接 通常比代码库更难测试 它可能更难维护。其中很大一部分取决于您的维护和编码实践。
如果需要上述几个功能或至少其中一个功能,我会考虑使用Web服务 被认为是最重要的,缺点是可接受的或必要的邪恶。
共享图书馆怎么样?
如果您更多地“控制”您的环境或希望成为什么样的人,该怎么办?您知道谁将使用该代码 (界面维护不是问题),你不必担心互操作。你处于这样的境地 你可以轻松实现分享而无需大量的工作/箍跳。
我想到何时使用的例子:
您的控件中有许多应用程序都托管在同一台服务器或两台将使用该库的应用程序上。
不是很好的例子,你有很多应用程序,但都托管在十几个服务器上。 Web服务可能是更好的选择。
您不确定您的代码是谁或如何使用,但知道它对许多人来说都很有价值。网络服务。
您正在编写仅由一组有限的应用程序使用的东西,也许是一些辅助函数。图书馆。
你正在写一些高度专业化的东西,不适合许多人消费。例如您的业务线的API 没有人会使用的应用程序。库。
如果所有条件都相同,那么从共享库开始并将其转换为Web服务会更容易,反之亦然。反之亦然。
还有更多,但这些是我的一些想法...
答案 1 :(得分:7)
图书馆优势:
服务优势:
答案 2 :(得分:4)
基于多个来源......
答案 3 :(得分:0)
理想情况下,如果我想同时兼顾这两个优点,那么我将需要一个可移植的库,该库具有不可知的接口粘合,可自动更新,具有混淆(难于反编译)或安全的内部环境。
可能同时使用网络服务和库使之可行。
答案 4 :(得分:0)
这里有5个选项以及使用它们的原因。
服务
图书馆
首先提供库。然后在需要时提供服务。
启动本地服务的库。
都不是