我们有一块的功能,用几个不同的应用程序(客户)在同一服务器上。它可以最好地模拟作为一种服务,有一个后端数据库,并且只会有一个版本的功能和数据库的使用在任何一个时间。

直到现在,我们必须采用简单的DLL重用与功能,它的配置文件和依赖性部署无处不在,它是使用。因为任何变化,现在必须要做出几个地方,这种方法是痛苦的时创造新版本的功能性或者当新的客户想使用它。

我们想知道如果有一个更好的方式来做到这一点,并起来有两种可能的替代方案。

  1. 把DLL(和依赖关系)中的建议。问题是如何配置的组成部分。作为客户没有兴趣配置,我们倾向于储存的配置文件的硬编码的道路上的服务器。

  2. 发布的功能作为一个内部(休息-based)的服务。访问它可限制向内部客户使用的防火墙。

我们认为,专业人员的#1似乎是性能和可能的安全,而#2可以被看作是简单的设立。

我们错过什么重要的在这里吗?有人已经在类似的情况之前,并希望与大家分享一些见解?

有帮助吗?

解决方案

这是一个问题,我已经挣扎了很多次,真的没有任何最好的回答其他然后它依赖。我个人的意见是,你需要远离的备选方案1对于几个原因:

  1. 通过具有所有你的客户共用一个单一的二进制它现在将需要所有你的客户进行测试的每一次更改。现在我知道你的确切情况下可能有做到这一点无论如何因为我们可以假设你会修改的数据库的坐在后面的组成部分。
  2. 不要硬代码什么。你可以储存配置的路径在若部分在该机。配置文件。

作为对备选案文2的一个替代办法将是使用WCF(假定环境可以支持它)。使用WCF然后您可以使用一个TCP运输使用的二进制serilization(以及有可能是一个共享内存的运输)。这些都将有助于把性差距接近(尽管备选案文1将永远超越一个基于服务的方法)。

通过将与备选案文2,你也减轻需要重新测试的所有客户,如可以发展自动化测试,以验证你的合同是不会中断。这会让你发布到一个地方,快速运行自动测试,并且知道你不断的客户。

说了你可以完成同样的事情使用备选案文1和一个好的设置单元的测试,但根据我的经验的备选方案2将更容易在长期运行。

备选案文2也可以让你的扩展服务,在未来如果你需要更多的电力。

我个人认为备选案文1是比较容易安装,因为你不会来处理配置的防火墙,处理身份验证,建立一个服务等等。这也将更容易"调试"(分发的应用程序引入了新类型的失败实例的网站托管服务崩溃和你的客户开始越来越失败).

最后一项建议是,你使用代理/立面模式翻晒你的客户从实际位置的服务。这会让你扩大随着时间的推移而不必修改客户代码。

其他提示

作为乔已经说过,不幸的是,回答这些问题往往是"它取决于"。

我是个大风扇咨询委员会,但是只应把代码有哪你确定它的工作(几乎)完美,并且不需要以更新的非常频繁。只要一块代码是"发展",只是发表一起的每个应用程序中使用它。

我想说的是,使用备选方案1将是更简单和更加容易,特别是因为您将只需要花费额外的时间限制性休息。(一语双关的意!)

乔希指出WCF作为一个选项,而这是肯定的办法,我会去。

此问题是到底是什么SOA是应该解决!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top