【发布时间】:2011-08-28 00:42:23
【问题描述】:
我有两个 Web 服务都包含在一个公共子目录下
CompanyName\Service1
CompanyName\Service2
每个目录都有一个包含其 dll 的 bin 文件夹。我现在已经到了这样一个地步,其中一些代码已经过重组,并且有相当多的通用组件,我希望能够“共享”它们。解决此问题的最佳方法是什么?下面是我找到的解决方案列表(连同否定的)。
- AssemblyResolving - 安全问题。
- codeBase web.config 中的元素 - 组件位置的硬编码路径。
- GAC - 目前我们的产品都没有使用 GAC,我个人对使用它的了解非常有限。这可能只是对未知的恐惧。
- 在两个位置都放置组件 - 更难更新就地补丁。需要确保在所有位置替换文件。
我是否遗漏了其他可能对我有帮助的内容?有人会推荐使用上面列出的任何选项吗?
此外,我无法将这两项服务合并为第三方当前使用的服务(它们是单独构建的)。
【问题讨论】:
-
如果您不经常更改 dll 的代码,则将程序集放置在这两个位置。或者,如果您有 dll 的自动构建过程,请让构建脚本尽可能将输出 dll 复制到两个文件夹中。
-
您对两个位置的注释“更难就地更新补丁”实际上是错误的方法。通过共享同一个物理程序集,如果公共程序集需要更改接口或有其他一些重大更改,那么协调对一个或其他 Web 服务的更改会变得更加困难。
-
我不明白...您不能将两个项目的引用添加到包含共享代码的新项目中吗?当构建特定项目之一时,引用将导致构建共享项目
-
@Simeon:是的 - 编码/构建时管理(两个 Web 服务使用的单独的类库项目,由 IDE/构建过程自动维护)和部署管理(更安全)之间可能存在一些混淆分别更新每个 Web 服务及其核心代码版本)。
标签: c# iis components share