【发布时间】:2012-03-13 16:20:54
【问题描述】:
我已经阅读了 this 关于强命名和远程处理问题的优秀博客文章,所有这些都是我所经历的。
基本上,当服务器从公共返回自定义类型时,客户端应用程序将始终需要加载服务器正在使用的强命名公共程序集的相同版本组装给客户。即:
遇到的问题是这样的:一有区别 客户端上通用类型库的强名称,和 服务器上通用类型库的强名称,一切 休息。远程处理一旦有任何值得注意的地方就会抛出异常 客户端/服务器通信开始。
这很烦人,因为我们在构建时会更新版本号,即使没有对公共程序集进行任何更改。实现可能没有改变,只是版本号。
我目前正在通过应用绑定重定向/发布者策略来解决这个问题 - 然而,这似乎需要大量工程才能符合关于程序集解析的强名称规则。
我已尝试不按照博客中的建议对通用程序集进行强命名,效果很好/我没有得到any remoting exceptions - 但是,这是推荐的吗?
我不会在GAC中添加通用程序集(仅包含接口),也不会太担心被篡改,只要我小心地更新接口以保持向后兼容性/not break existing clients就够了,因此不需要强命名?
提前致谢。
PS:我知道 WCF,但我仍然需要维护一个远程处理接口。
【问题讨论】:
-
根据我的经验,强命名(对开发人员而言)带来的麻烦多于其帮助:库中的每个小错误修复都需要您使用该库重新编译每个应用程序。因此,除非需要,否则我会避免使用它(GAC 就是一个例子)。
标签: c# .net interface client-server remoting