2012-03-13 45 views
2

我已阅读this关于强命名和远程处理困境的优秀博客,这些都是我正在经历的。我应该强烈地将我的程序集命名为远程处理程序吗?

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

问题一个遇到的是:只要是有区别的 客户端上的常见类型库的强名称之间,以及 服务器上的常见类型库的强名称,一切 休息。只要有任何值得注意的 客户端/服务器通信开始,远程处理就会抛出异常。

这是比较烦人的,因为我们在构建时更新版本号,即使没有对常用程序集进行更改。实现可能没有改变,只是版本号。

我目前正在通过应用绑定重定向/发布者策略来实现这一点 - 但是这似乎很多工程只是为了符合关于程序集解析的强名称规则。

我试过不是强烈的命名为在博客中推荐的常见程序集,这工作正常/我没有得到any remoting exceptions - 但是,这是推荐?

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

在此先感谢。

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

+4

我的经验,强大的命名会给开发者带来更多的麻烦,而不是帮助:库中的每个小错误修复都需要使用该库重新编译每个应用程序。因此,除非有必要,否则我会避免它(GAC就是一个例子)。 – Heinzi 2012-03-13 16:27:29

回答

2

如果可能的话,避免强命名!强烈的命名是痛苦的。

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

+0

我特意看到微软“避免”这个(http://msdn.microsoft.com/en-us/magazine/cc163583.aspx#S2):“修正了这个错误并且不改变程序集版本号,所以现有的应用程序仍然可以找到程序集,这是.NET Framework用于错误修复的方法,但它不适用于新功能或破坏兼容性的任何内容。“ – Jeb 2012-03-14 16:08:04

相关问题