加载外部程序集时的最佳实践
本文关键字:最佳 外部 程序集 加载 | 更新日期: 2023-09-27 18:05:26
我正在寻找一些关于如何最好地将外部程序集作为分发和加载的一部分的指导。
最基本的是,我一直在研究一个程序,它被设计成与另一个已安装的程序交互。另一个程序开放了。net API,用于与第三方应用程序(如我自己的应用程序)进行接口,但是它会定期更新。这些变化并不总是突破性的变化,但这通常迫使我更新我自己的应用程序,并削减一个面向公众的版本。
我考虑的三个主要概念是:
-
将只包含api的外部程序集打包到我自己的应用程序中。考虑的缺点是:增加发行版的大小。强制在已安装的外部应用程序的二进制文件和API二进制文件的本地副本之间进行检查,并尝试更新它们以保持同步。
-
直接从外部安装文件夹中存在的位置加载外部程序集。考虑的缺点是:如果外部应用程序决定更新二进制文件,则锁定它们。
-
将外部程序集复制到临时文件夹中,并从那里加载它们。考虑的缺点是:复制数十个文件(包括资源程序集)所花费的时间,并且可能将它们留在临时文件夹中。
是否有最佳实践,或另一种公认的方法来做这件事?
编辑:我应该指出我的应用程序使用WPF。
我在使用第三方应用程序时遵循的一些一般概念:
- 在第三方API和你的代码之间放置一个适配器层,提供你的对象和第三方对象之间的接口。破坏性的变化将在你的适配器层改变,使其兼容。
- 在测试中使用外部服务存根,这样您就可以切换出第三方调用
您可以考虑遵循我参加的Dan North加速敏捷课程中提到的"Border Guard"方法的想法。在这种策略中,您可以在第三方API做出重大更改之前与他们进行配对。为系统编写一套单元测试,描述您对它们的使用,然后第三方将它们集成到他们自己的系统单元测试中。然后,在他们将API更新推送到上游之前,您将被告知系统的任何破坏性更改!如果这是你可以与第三方合作做的事情,可以省去一些将来的痛苦。