在企业应用中合理使用开源组件是个不错的方向。如果管理和应用呢,我谈一下个人的几个观点。
首先,在管理方面,使用Nuget。Nuget能够管理外部组件的版本,依赖,引用等,而且被良好的集成到VS中。
其次,应用方面,要使用接入的概念,在自己的产品主框架里面定义好接口,通过Adapter(Wrapper)模式,匹配外部开源组件接口。
这么做可能基于以下原因:
1. 所引入的开源组件原开发者不再维护
2. 出现更好的替代者
3. 客户希望以自己系统中已有的组件替代
4.原组件不再满足变化后的环境和需求,需要进行替换
5. 提供多种默认实现,以满足不同的实施环境
我称这种架构为主板式架构(MotherBoard-Architecture),框架的基础设施定义了一系列接口,各种基础组件通过独立的工程去实现接口。然后使用IoC框架创建对象,最终实现可插拔替换。
举个例子,缓存是一个系统不可或缺的部分,可以使用Asp.Net自带的进程内缓存容器,如System.Runtime.Cache, 也可以使用分布式缓存,如MemCache或者AppFabric。针对用户的应用场景,就可以通过配置自由切换本地缓存或者分布式缓存。