起新类型的请求。
若要添加新的内核扩展,需要添加新的具体业务的实现,并添加与内核进行通讯
的模块。通讯模块需要声明内核扩展的相关元数据,从而确保内核扩展可以被微内核
发现。内核扩展同时需要声明可以处理的消息类型,并给出这些消息的具体处理逻辑。
而由于体系结构中并不限定内核扩展的通讯模块必须紧密绑定到具体实现,因此内核
扩展可以仅是一个透明代理,负责实现消息格式的转换,对于微内核发出的消息处理
请求,内核扩展可以将其分发至具体的实现模块。
若要添加新的内核监视器,需要添加具体的拦截逻辑,并完成与内核进行通讯的
模块。与内核扩展类似,体系结构中也没有限定内核监视器的通讯模块必须紧密绑定
到具体实现,具体的拦截逻辑依然可以位于远程进程或远程计算机上。
4.2.2. 策略
策略对内核发布的所有服务进行了封装和再发布的操作。这一层对内核发布的所
有服务应用策略并重新封装成供上层使用的 API。系统支持不同类型的策略,用以实
现不同层次的控制,如日志记录、性能监测、身份鉴别、异常处理、参数合法性检验
等。策略可以很容易地被扩展以适应各种需求。与此同时,所有内核扩展和内核监视
器不必关心诸如权限和日志记录等对业务进行横切的功能,可以专注于实现核心业务
功能。
4.2.2.1. 策略模型
在面向服务的开放式平台架构中,策略主要可以归约至以下四种具体类型:
1. 参数验证
参数验证策略可以在参数传入时验证参数的合法性,并可以在参数不合法时终止
方法调用。
2. 权限控制
权限控制策略可以执行权限验证,阻止未经授权的访问。
3. 日志记录
日志记录策略可以在方法调用前和调用后记录日志。
4. 异常处理
异常处理策略可以拦截方法产生的异常,将其包装后重新抛出或进行其它操作。
策略应用的封装层次为(从最外层到最内层):参数验证、权限控制、日志记录、
异常处理,亦即调用一个需验证策略的方法时,首先经过参数验证策略,之后是权限
控制策略、日志记录策略和异常处理策略,当方法执行结束后,返回结果首先经过异
常处理策略,之后是日志记录策略、权限控制策略和参数验证策略。在目前的实现中,
参数验证和权限处理策略不提供方法执行后的结果拦截,异常处理策略不提供方法执
行前的参数拦截,日志记录策略会同时捕获方法参数和方法返回结果。
策略模型的示意图如图 4-9所示。
图4-9:策略模型示意
4.2.2.2. 可扩展性
策略主要基于方法拦截而实现,由于不同的策略模型会有具体的拦截方式,例如
参数验证策略只关心传入方法的参数而不关心返回值,权限控制策略只关心传入方法
的参数中与用户、资源有关的一类参数,日志记录策略关心方法的调用以及执行过程
中的异常等,而异常处理策略只关心异常。因此在扩展具体策略时需要关心策略类型。
之后只需要向策略层注册新的策略并向目标方法应用策略即可。
4.2.3. 服务层
服务层实现了一组 Web Service风格的服务,这些服务使用 SOAP(简单对象访问
协议)进行交互,从而可以支持任何基于 HTTP 协议的客户端。服务层是面向服务体
系结构的直接体现,服务层所提供的中立契约可以供各个平台进行服务的封装、重新 面向服务的开放式平台架构(8):http://www.751com.cn/jisuanji/lunwen_3091.html