【问题标题】:.NET remoting, versioning and interfaces.NET 远程处理、版本控制和接口
【发布时间】:2009-02-17 19:50:03
【问题描述】:

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

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

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

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

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

您认为处理这种情况最灵活的方法是什么?

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

【问题讨论】:

    标签: .net remoting interface versioning


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      发布更新。对于这样的事情,你总是必须让所有东西都在同一个版本上。或许可以考虑使用 ClickOnce 让每个人都了解最新情况。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-02
          相关资源
          最近更新 更多