我有一个使用2.0框架的大型.NET远程项目。服务器的API通过接口公开,共享类型包含在与客户端应用程序共享的程序集中。
我有一些方法接受基类的数组,这些基类有许多不同的类继承它。
例如,我有基类“Vehicle”,它有两个继承自它的类,说“Car”和“Truck”。
我有一个方法IFoo.Save(列出车辆)
稍后我添加了一个继承自名为“Motorcycle”的“Vehicle”的新类,只有服务器或客户端具有新的共享程序集,但不是两者都有。其中一个将无法解析新类型。
您认为处理这种情况的最灵活方式是什么?
编辑:这是Windows服务中托管的Windows窗体客户端应用程序和远程服务器。
答案 0 :(得分:2)
发布更新。对于这样的事情,你总是必须拥有相同版本的所有东西。也许考虑ClickOnce让每个人都保持最新状态。
答案 1 :(得分:2)
ClickOnce是一个很好的解决方案。
或者使用与类无关的Web服务方法。传递可以重构为对象的版本化二进制流式字典。如果它很重要,请编写对象重构内容以处理 前向和后向兼容性,否则只需拒绝具有“未来”版本号的数据。
Web服务非常适合解耦。字典非常适合传递一般数据。基于程序集的类版本控制非常糟糕(即使最新版本的.Net中的序列化更改)也会导致疯狂......
答案 2 :(得分:1)
这似乎更像是一个部署问题。服务器和客户端必须能够访问共享程序集的相同版本。您的策略将取决于平台 - 是此网络还是表单?
执行此操作的一种方法是强制客户端使用特定版本的共享程序集,并为该客户端提供该程序集的交付方法。