Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET远程处理、版本控制和接口_.net_Remoting_Interface_Versioning - Fatal编程技术网

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

.NET远程处理、版本控制和接口,.net,remoting,interface,versioning,.net,Remoting,Interface,Versioning,我有一个使用2.0框架的大型.NET远程处理项目。服务器的API通过接口公开,共享类型包含在与客户端应用程序共享的程序集中 我有一些方法可以接受基类的数组,基类有许多不同的类继承自基类 例如,我有一个基类“Vehicle”,它有两个继承自它的类,分别是“Car”和“Truck” 我有一个方法IFoo.Save(列出车辆) 稍后,我添加了一个新类,该类继承自名为“Motorcycle”的“Vehicle”,并且只有服务器或客户端具有新的共享程序集,而不是两者都具有。其中一个将无法解析新类型 你觉得

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

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

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

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

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

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


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

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


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

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


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

发布更新。对于这样的事情,你总是需要把所有的东西都放在同一个版本上。也许考虑一下ClickOnce让大家都了解最新情况。

< P>发布更新。对于这样的事情,你总是需要把所有的东西都放在同一个版本上。也许考虑一下ClickOnce让每个人都跟上时代。

< P> CLIKONE是一个很好的解决方案。 或者采用与类无关的Web服务方法。传递版本控制的二进制流式字典,这些字典可以重新组合为对象。如果这很重要,请编写对象重构内容来处理向前和向后兼容性,否则只需拒绝带有“未来”版本号的数据


Web服务非常适合解耦。字典是传递一般数据的好工具。基于程序集的类版本控制非常可怕(即使在.Net最新版本中进行了序列化更改),并且会导致疯狂…

ClickOnce是一个很好的解决方案

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

Web服务非常适合解耦。字典是传递一般数据的好工具。基于程序集的类版本控制非常可怕(即使在最新版本的.Net中进行了序列化更改),并且会导致疯狂