适用于版本独立的API设计?

时间:2010-06-08 18:08:15

标签: c# .net api

我继承了大约200个项目的巨大.NET解决方案。现在有些开发人员希望开始在我们的应用程序中添加他们自己的组件,这将要求我们开始通过API公开功能。

当然,主要的问题是我们手上的解决方案包含这样一个依赖关系的蜘蛛网,我们必须小心避免每次在某处发生微小变化时破坏API。应用程序。我们还希望能够在不破坏任何先前的第三方应用程序的情况下逐步公开新功能。

我有办法解决这个问题,但我不确定这是理想的方式 - 我正在寻找其他想法。

我的计划是基本上有三个dll。

  1. APIServer_1_0.dll - 这将是包含所有依赖项的dll。
  2. APIClient_1_0.dll - 这将是我们的开发人员实际参考的dll。没有提到我们解决方案中的任何混乱。
  3. APISupport_1_0.dll - 这将包含允许客户端部件动态加载“服务器”组件并执行所需功能的接口。以上两个dll都取决于此。这将是“客户”作品所指的唯一一个dll。
  4. 我最初得出这个设计,因为我们在Windows服务之间进行进程间通信的方式有点类似(除了客户端通过命名管道与服务器通信,而不是动态加载dll)。

    虽然我相当肯定我能做到这一点,但我很想知道是否有更好的方法来完成同样的任务。

2 个答案:

答案 0 :(得分:1)

您可以查看Microsoft Managed Add-in Framework [MAF]和Managed Extensibiility Framework [MEF](链接由Kent Boogaart提供)。 As Kent states,前者关注组件的隔离,后者主要关注可扩展性。

最后,即使您没有利用它们,一些关于API版本控制的概念也非常有用 - 即版本控制接口,然后通过适配器提供版本间支持。

也许有点矫枉过正,但绝对值得一看!

希望这有帮助! :)

答案 1 :(得分:0)

为什么不使用.NET内置的程序集版本控制?

添加对程序集的引用时,请务必选中引用上的“需要特定版本”复选框。这样,您就可以确切地知道在任何给定时间使用哪个版本的程序集。