代码之家  ›  专栏  ›  技术社区  ›  TWA

.NET远程处理、版本控制和接口

  •  0
  • TWA  · 技术社区  · 16 年前

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

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

    例如,我有一个基类“vehicle”,它有两个继承自它的类,分别称为“car”和“truck”。

    我有一个方法ifoo.save(列出车辆)

    稍后,我添加了一个新的类,它继承了名为“Motorcycle”的“Vehicle”,只有服务器或客户机具有新的共享组件,但不能同时具有这两个组件。其中一个将无法解析新类型。

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

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

    3 回复  |  直到 16 年前
        1
  •  2
  •   Jeff Kotula    16 年前

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

    或者使用一种与类无关的Web服务方法。传递版本化的二进制流字典,这些字典可以重新组合为对象。如果这很重要,写下对象重构的东西来处理 二者都 向前和向后兼容,否则只拒绝具有“未来”版本号的数据。

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

        2
  •  2
  •   Matt Briggs    16 年前

    发布更新。对于这样的事情,你总是要把所有的东西都放在同一个版本上。也许可以考虑使用ClickOnce让每个人都保持最新。

        3
  •  1
  •   Dave Swersky    16 年前

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

    实现这一点的一种方法是强制客户端使用共享程序集的特定版本,并向客户端提供该程序集的传递方法。