我偶然发现了一个名为 Kephas 的框架,它承诺提供强大而灵活的基础架构,我目前正在评估它以用于现有应用程序,以使其更新为最新技术。我刚刚浏览了文档和示例,我可以看到新应用程序的潜力,但是现有的应用程序呢?是否可以实施增量策略而不是从头开始重写?有谁知道,有什么经验吗?
1 回答
如果应用程序使用版本高于 4.5 的 .NET 框架(事实上 .NET Core/.NET Standard 和 Mono 也受支持),当然可以逐步完成。事实上,有些组织将其用于生产,并逐步将其集成。还有一些架构问题需要深思熟虑,比如集成 DI 框架或数据持久层,但基本上增量采用不会造成任何严重问题。
不要忘记 Kephas 框架的核心是通过依赖注入提供的应用程序服务。使用默认提供的那些,或者覆盖它们,仅仅通过一个属性。您可以遵循更多方法:
让原始应用程序的 DI 容器与 Kephas 提供的容器并存(顺便说一句,它只是对现有 DI 的抽象,我们不想重新发明轮子)。不是很推荐,但如果你想这样的话,它可以工作。
让原始应用程序的 DI 容器集成来自 Kephas 的容器。在使用 ServiceStack 的 Funq DI 容器时,我个人使用了这种策略,并且效果很好。但是,通过这种方式,原始应用程序可以访问 Kephas 服务,但不能反过来。如果您需要让原始应用程序处于控制之中,我会使用这种方法。
让 Kephas 集成应用程序的 DI 容器。这样 Kephas 服务就可以访问原始应用程序的服务,但不能反过来。如果您现在或将来想完全走 Kephas 的方式,我会使用这种方法。
完全使用 Kephas 提供的 DI 容器。如果您根本不使用 DI 或拥有兼容的 DI 容器(如 MEF/System.Composition 或 Autofac - 对于 Autofac 没有内置支持,但实现起来应该不难),我会采用这种方式)。
有很多事情要讨论,但这超出了这个问题的范围。