必拘泥于体系结构,因此可以较好地支持领域驱动设计和敏捷方法学。另外,架构不
关心数据持久化,亦即没有传统三层架构中的数据层。
4.4.5. 开发和测试支持
在内核、服务层和表示层开放平台三个层次上,服务的调用接口均是中立或同一
的,方便进行测试驱动开发。而由于内核扩展和内核监视器可以很方便地替换,因此
可以很容易地构建桩和驱动器来支持集成测试。由于内核扩展的替换和方便,因此可
以在诸如每日构建等活动中不断更新内核扩展,从而保证软件得以持续成长。借助纵
向切割开的请求-响应对,开发团队可以清晰地辨认出系统的完成度,从而更有效地
安排进度。
5. 基于面向服务的开放式平台架构的在线评测系统
本章论述了基于面向服务的开放式平台架构的在线评测系统的具体实现策略,这
一在线评测系统基于.Net Framework开发,相对于同类型应用而言具备较强的可扩展
性和可文护性。在线评测系统由前端业务系统和分布式黑盒测试系统构成,其中前端
业务系统应用了面向服务的开放式平台架构。下面将给出系统关键部分的实现策略,
并给出系统的部署方案。
5.1. 内核实现策略
5.1.1. 内核组织
在目前的实现中,微内核使用 Managed Extensibility Framework (MEF)框架来
实现内核扩展的发现和装配。MEF是.Net 平台下的一个扩展性管理框架,提供了依赖
注入支持等。MEF 为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩
展并且对已有的代码产生最小的影响。开发人员在开发过程中根据具体需求定义一些
扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互。MEF 使应用程序与扩
展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展
程序。
使用 MEF框架组织扩展类需要遵循如下几个步骤:
1. 在应用程序中宿主 MEF
应用 MEF 框架需要进行的第一个操作即是在应用程序中宿主 MEF,这一宿主可看
做是插件管理框架中的宿主程序。若要在应用程序中宿主 MEF,需要创建一个组合容
器对象(CompositionContainer)的实例,然后将需要组合的部件(Part)添加到容
器中。
在目前的实现中,我们使用 DirectoryCatalog 来发现指定目录下的所有程序集,
并在其中组合部件,从而发现内核扩展和内核监视器。这一方法位于 PluginManager
类中。代码如例程 5-1所示。
面向服务的开放式平台架构(11):http://www.youerw.com/jisuanji/lunwen_3091.html