我应该强力命名我的程序集进行远程处理吗?

时间:2012-03-13 16:20:55

标签: c# .net interface client-server remoting

我已经阅读了this关于强命名和远程处理困境的优秀博客文章,我正在经历所有这些。

基本上,当服务器从公共服务器返回自定义类型时,客户端应用程序将始终需要加载服务器正在使用的强命名公共程序集的 相同版本 装配到客户端。即:

  

遇到的问题是:一旦出现差异   在客户端上的公共类型库的强名称和   服务器上常见类型库的强名称,一切   休息。 Remoting会在任何值得注意的情况下立即抛出异常   客户端/服务器通信开始。

这很烦人,因为我们在构建时更新版本号,即使没有对公共程序集进行任何更改。实现可能没有改变,只有版本号。

我目前正在通过应用绑定重定向/发布者策略来解决这个问题 - 但是这似乎是为了符合有关程序集解析的强名称规则的大量工程。

我已经尝试按照博客中的建议强力命名常用程序集,该工作正常/我没有得到any remoting exceptions - 但是,这是推荐的吗?

我没有将通用程序集(只包含接口)添加到GAC,我也不太担心篡改,只要我仔细更新接口以保持向后兼容性/ not break existing clients这是足够,因此不需要强有力的命名?

提前致谢。

PS:我知道WCF,但我仍然需要维护远程接口。

1 个答案:

答案 0 :(得分:2)

尽可能避免强烈命名!强烈的命名很痛苦。

正如您可能已经知道的那样,只要您强烈命名一个程序集,它引用的所有内容都必须是强名称。在简单的应用程序中,没什么大不了的。如果你必须处理COM互操作库,其他项目等,问题就会成为维护的噩梦。