Web服务与共享库

Kev*_*che 14 web-services

从我发现的内容中有几次询问过这个问题:

什么时候不应该使用Web服务? Web服务还是DLL?

答案有所帮助,但他们都指向一个特定的场景.我想对此有一个更普遍的想法.

何时应该通过共享库(DLL)考虑Web服务,反之亦然?

Kev*_*che 13

我的想法是:

Web服务是为机器互操作而设计的,并通过使用HTTP作为传输方式轻松地接触到受众.

一个重要的一点是,通过发布服务,您也开始将服务用于可能非常庞大(通过网络或至少整个公司)和/或大部分在您的控制/影响/沟通渠道之外的受众而你不介意或这是你想要的.由于客户只需要连接互联网并使用服务,因此使用该服务要容易得多.不像一个可能不那么容易完成的库(但可以完成).该服务的使用基本上是开放的.您可以将它提供给任何可以使用它的人,但是他们觉得使用它.

但是,Web服务通常较慢并且依赖于Internet连接.
它通常比代码库更难测试.
它可能更难维护.其中很大程度上取决于您的维护和编码实践.

如果需要上述几个功能,或者至少其中一个被认为是最重要的,并且缺点是可接受的或必要的恶,我会考虑使用Web服务.

共享图书馆怎么样?

如果您更多地"控制"您的环境或希望成为什么样的人,该怎么办?你知道谁将使用代码(界面不是维护的问题),你不必担心互操作.在这种情况下,您可以轻松实现共享而无需大量工作/箍.

关于何时使用我的想法:

您的控件中有许多应用程序都托管在同一台服务器上或两台将使用该库的应用程序中.

不太好的例子,你有很多应用程序,但都托管在十几个服务器上.Web服务可能是更好的选择.

您不确定您的代码是谁或如何使用,但知道它对许多人来说都很有价值.网络服务.

您正在编写仅由一组有限的应用程序使用的东西,也许是一些辅助函数.图书馆.

你正在写一些高度专业化的东西,不适合许多人消费.例如,您的业务线应用程序的API,其他任何人都不会使用.图书馆.

如果所有条件都相同,那么从共享库开始并将其转换为Web服务会更容易,但反之亦然.

还有更多,但这些是我的一些想法......

  • 不错,尽管您通过限制 HTTP 受到了过度限制。 (2认同)

Cor*_*use 9

图书馆优势:

服务优势:

  • 每个人都立即透明地进行升级(除非提供版本化的API)
  • 消费者无法反编译代码
  • 可以单独扩展服务硬件
  • 技术不可知论者.使用共享库,消费者必须使用兼容的技术.
  • 更安全.UI层可以调用位于防火墙后面的服务,而不是直接访问数据库.


小智 5

基于多个来源...

公共共享库

  1. 应该提供一组众所周知的执行常见任务的操作(例如,字符串解析、数字操作、构建器)
  2. 应该封装通用的可重用代码
  3. 对其他库的依赖最小
  4. 提供稳定的接口

服务

  1. 应该提供可重用的应用程序组件
  2. 提供常见的业务服务(例如,回报率计算、绩效报告或交易历史服务)
  3. 可用于连接来自不同系统的现有软件或在应用程序之间交换数据