0

我有一个使用 2.0 框架的大型 .NET 远程处理项目。服务器的 API 通过接口公开,共享类型包含在与客户端应用程序共享的程序集中。

我有一些方法可以接受基类的数组,该基类有许多不同的类继承自它。

例如,我有一个基类“Vehicle”,它有两个继承自它的类,分别是“Car”和“Truck”。

我有一个方法 IFoo.Save(List 车辆)

稍后,我添加了一个从名为“Motorcycle”的“Vehicle”继承的新类,并且只有服务器或客户端具有新的共享程序集,但不是两者都有。其中一个将无法解析新类型。

你觉得处理这种情况最灵活的方法是什么?

编辑:这是一个 Windows 窗体客户端应用程序和托管在 Windows 服务中的远程服务器。

4

3 回答 3

2

发布更新。对于这样的事情,你总是必须让所有东西都在同一个版本上。也许考虑 ClickOnce 让每个人都保持最新状态。

于 2009-02-17T20:01:21.253 回答
2

ClickOnce 是一个很好的解决方案。

或者采用与类无关的 Web 服务方法。传递可以重新构建为对象的版本化、二进制流式字典。如果这很重要,请编写对象重构内容以处理向前和向后兼容性,否则只需拒绝具有“未来”版本号的数据。

Web 服务非常适合解耦。字典非常适​​合传递一般数据。基于程序集的类版本控制是可怕的(即使最近版本的 .Net 中的序列化更改)并导致疯狂......

于 2009-02-17T20:33:05.497 回答
1

这似乎更像是一个部署问题。服务器和客户端必须有权访问相同版本的共享程序集。您的策略将取决于平台 - 这是网络还是表单?

一种方法是强制客户端使用特定版本的共享程序集,并向客户端提供该程序集的交付方法。

于 2009-02-17T20:01:12.437 回答