本站小编为你精心准备了微软企业库组件使用浅析参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
《电脑编程技巧与维护杂志》2015年第六期
1应用支撑平台中的Unity场景
财政应用支撑平台(以下简称“平台”)是为了解决财政信息系统建设过程中出现的条块化、碎片化、孤岛化等问题而设计开发的一整套应用系统解决方案。它既是财政业务软件开发的规范和基础,又是财政办公的统一门户。在平台架构的设计和实现中,Unity发挥了不可或缺的作用。
1.1应用服务的配置与使用
平台采用“客户端—应用服务器—数据库服务器”的三层结构。以微软的托管可扩展框架(ManagedExtensibilityFramework,MEF)实现的“插件式”客户端,允许业务子系统像积木一样无限扩展,即插即用。各个子系统根据业务需求访问各自或其他子系统的应用服务器。这就要求平台能够支持多个服务来源的配置。同时,由于子系统的差异性,所使用的服务协议也各有不同。为了将应用服务的访问与客户端解耦,基于Unity的接口注入和构造函数注入,进行了如下设计:(1)定义泛型接口IServiceProvider,用以隔离客户端和服务协议具体实现之间的依赖关系:(2)实现不同的服务协议(如WCF或Hessian)提供者:(3)在客户端App.config中增加Unity配置节,注册服务提供者的名称、实现类和构造函数参数(即应用服务地址)。(4)客户端使用Unity的Resolve<T>(stringname)方法向容器请求获取服务提供者以执行操作(其中的“IoC”是对U-nity的简单封装,下同)。
1.2用户令牌的无缝挂接
为了提高安全性,禁止未经授权的用户调用应用服务,平台设计了用户令牌来控制访问。所谓“用户令牌”就是带有授权用户信息的加密数据。在进行每次服务调用时,都会对用户令牌进行校验。如果缺少用户令牌或用户令牌的信息不正确,对应用服务的访问就会被拒绝。根据面向方面编程(AspectOrientedPro-gramming,AOP)的设计思想,用户令牌应当与客户端对应用服务的访问无关。基于Unity的方法注入进行了如下设计:(1)定义用户令牌的抽象接口IUserToken及其实现类GlobalVariables。(2)客户端使用Unity的RegisterInstance<T>(Tinstance)方法向容器注册用户令牌。(3)在服务提供者的实现中,使用InjectionMethodAt-tribute指示需要容器注入的方法(实例化对象后执行该方法)。
1.3加载非默认的配置文件
Unity默认使用App.config/Web.config作为配置文件。但对于实际应用来讲,这并不是一个最好的方式。因为App.config/Web.config已经被塞入了太多的东西,早已臃肿不堪。修改配置的时候既不清晰,也容易出错。为此,将Unity配置节迁移至自定义的XML文件,并重新指定Unity的配置加载方式。
2结语
作为.NET下的原生IoC框架,Unity不但提供了完备的对象实例创建装配机制,而且支持开发需求的抽象化,允许在运行时通过配置文件指定依赖关系。同时,在河北财政应用支撑平台的压力测试中,其表现更是异乎寻常的稳定,综合评价远超等其他流行的IoC框架。微软企业库的Unity已成为河北财政应用系统解决方案体系中不可替代的重要组成部分。
作者:李凤桐卫耀伟单位:河北省财政厅信息中心