加载外部组件时的最佳做法

时间:2014-05-27 11:56:13

标签: c# .net assemblies

我正在寻找关于如何最好地处理外国装配作为分配和装载的一部分的一些指导。

基础知识是,我一直致力于一个旨在与另一个已安装程序进行交互的程序。 另一个程序有开放的.Net API,用于与我自己的第三方应用程序连接,但它会定期更新。 这些变化并不总是打破变化,但这通常会迫使我更新自己的应用程序并为公众删除一个版本。

我考虑过的三个主要概念是:

  1. 将仅包含API的外部程序集打包到我自己的应用程序中。 考虑的缺点是:增加了发行版的大小。强制检查已安装的外部应用程序的二进制文件与API二进制文件的本地副本之间的检查,并尝试更新它们以保持同步。

  2. 将外部程序集直接从外部安装文件夹中存在的位置加载。 考虑的缺点是:如果外国应用程序决定更新它们,则锁定二进制文件。

  3. 将外部程序集复制到临时文件夹,然后从那里加载它们。 考虑的缺点是:复制数十个文件(包括资源程序集)所花费的时间,并可能将它们留在临时文件夹中。

  4. 是否有最佳做法或其他公认的做法?

    编辑:我应该指出我的应用程序使用WPF。

1 个答案:

答案 0 :(得分:0)

我在使用第三方应用程序时遵循的一些一般概念:

  • 在第三方API和代码之间放置Adapter Layer,以在对象和第三方对象之间提供接口。您的适配器层将更改中断更改以使其兼容。
  • 在测试中使用存根作为外部服务,以便您可以切换第三方调用

你可以考虑跟随"边防卫队"在我参加的Dan North Accelerated Agile课程中提到的方法论。在此策略中,您在进行重大更改之前,先与第三方API配对。为系统编写一套单元测试来描述您对它们的使用,然后第三方将它们集成到自己的系统单元测试中。然后,在您将系统推送到上游之前,系统会通过API更新通知您系统的任何重大更改!如果这是你可以与第三方合作的话,可以节省一些未来的痛苦。