基于AOP的PostSharp.Net平台的项目实践

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:zz33xx
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]面向方面编程(Aspect Oriented Programming,AOP)是一项允许编程人员模块化横切关注点的编程技术,AOP能够把横切到多個模块的功能:例如日志,异常,事务,安全等进行模块化,能够极大程度地降低系统间的耦合;本文介绍了面向方面编程的基本概念和语言规范,并使用AOP的思想在PostSharp平台实现股票模拟系统,实现轻量级的面向方面的系统,充分突出面向方向(AOP)对项目开发的优势,是AOP思想用于实际项目开发的一次探索。
  [关键词]AOP;横切;PostSharp;
  中图分类号:TF046.6 文献标识码:A 文章编号:1009-914X(2013)05-0280-01
  1.引言
  过去几年里,面向对象编程技术(OOP)已经成为了主流的编程技术,OOP的最大的好处就是解决了系统中的角色分配问题,将需求中的问题转化为不同的对象来解决,实现了软件的模块化设计。但是多数软件系统都包含跨越多个模块的非功能的关注点(concern),例如授权、日志、事务安全完整性检查、同步、异常处理等,传统的面向对象技术通常采用重构的方式解决,往往一个系统需要经过无限次的重构以达到较好的效果,于是开发也就陷入了重构的泥潭,这些非功能性代码亦叫横切关注点(crosscutting concems),这些关注点横切多个模块甚至整个系统,形成代码的混乱与交织,降低代码的耦合度和模块之间的独立性,而且横切的代码分布在系统的各个模块,采用传统的OOP思想进行开发,同样的代码要多次实现,这样无疑增加了软件的开发成本以及维护成本,而且功能性代码与非功能代码相互交织,使系统难于理解、难于实现并且难于维护。
  目前对AOP的研究主要集中在对AOP开发语言的支持,集成工具的研发以及AOP建模,并没有把AOP理论用于实际项目的开发,本文将AOP的思想用于实际项目的开发实践,充分展示AOP思想的项目开发的优势,展示AOP的核心价值。
  2.AOP机制的实现原理与PostSharp.Net
  AOP是一种新的编程范性,它的核心思想是对横切关注点进行模块化。开发人员可以利用AOP所提供的语言机制实现对系统中横切关注点的分离。使代码结构更加清晰,停止重复开发,并且可以使开发人员更关注系统功能的开发。
  2.1AOP机制的实现原理
  AOP的实现由两部分组成:语言规范和实现。语言规范描述了语言的基础单元和语法;语言实现按照语言规范来验证代码的正确性,并把代码转化成目标机器可执行的形式。通过方面编织器把功能性代码和方面模块的代码编织在一起生产完整的系统。
  AOP的开发步骤分为以下三步:
  (1)方面分解:把系统需求分为核心关注点和横切关注点。
  (2)关注点实现:分别实现横切关注点和核心关注点,核心关注点采用面向对象的机制实现,采用面向对象语言,可以是Java、c++、c#等,横切关注点用AOP的机制实现。
  (3)方面组合:把两种关注点组合,通过编织器把横切关注点和核心关注点编织在一起从而形成最终系统。
  2.2PostSharp.Net
  Postsharp是一个用于在.Net平台实现的AOP框架,提供对面向编程的支持,PostSharp使用横切关注点静态植入的方式实现AOP。PostSharp采用MSILInjection诸如机制,使得静态代码注入的执行效率要高于使用Reflection Emit;另外,使用MSBuild Task,使得开发人员可以使用内置的Attribute使用AOP。
  3.AOP项目实践
  本文在PostSharp.Net上使用实现一个股票模拟系统,需求分析阶段分别找出股票模拟系统核心的功能:即是股票买卖,非核心功能为系统的日志,异常处理以及安全。
  采用AOP思想,需求分析阶段分离出系统的核心关注点和横切关注点,核心关注点有股票报价、帐户管理和交易管理,横切关注点有日志和异常处理,核心关注点用OOP实现,横切关注点用AOP实现。
  日志功能对股票交易系统至关重要,日志能够记录客户交易的情况,并且日志功能贯穿于交易管理的各个环节,如果采用传统的方法处理无疑增加系统的耦合度,先采用面向方面的思想进行处理,把日志功能封装在LogerAttribute中,采用PostSharp提供的静态植入机制,把日志代码植入到核心代码中。
  异常处理在项目多个模块都有出现,而且采用相同的异常处理,采用传统的OOP方式,程序员没完成一项功能都要写大量的处理异常的代码,所以现采用AOP思想,把异常作为一个方面封装起来,这样大大减少了开发人员的工作量,开发人员只需要集中精力完成项目的核心攻击即可。
  在核心代码实现时,只需要捕获异常的位置做植入标记即可,代码编译的时候就会自动的将异常代码注入到核心代码中,对日志的处理也是同样的道理。
  由以上的项目可以看出AOP的好处,AOP可以很好的解决代码分散和代码混乱,因为AOP思想把横切在多个模块的功能,例如业务逻辑、性能、同步、日志以及安全因素都封装在单独的方面内,使代码的结构更加清晰。
  系统开发效率的提高:使用AOP进行系统开发,可以分别实现核心关注点以及横切关注点,并且每个关注点的实现是相互独立的,从而达到提高程序开发效率的目的。
  系统更利于维护:系统的维护有改正型维护、适应型维护和改进型维护。方面代码是相互独立的,方面模块根本不知道横切关注点,所以很容易通过方面加入新的功能,另外,当往已存在的系统中加入新的模块时,只需要在方面中分别实现就可以达到目的。
  综上所述,AOP通过模块化横切关注点,AOP能够有效的提高的开发效率,并且AOP实现的系统结构更加清晰,更有利于系统的扩展和维护,模块化横切关注点,能够有效的降低系统的耦合度,提高代码的重用性。
  4.结论
  目前对AOP的研究主要集中在面向对象AOP的编程语言的支持以及建模方面,例如AspectJ,C#等等,支持AOP的集成开发环境也少之又少,虽然AOP思想有很多优势,但是并没有用于实际的项目开发。本文使用PostSharp.Net平台进行AOP项目实践,是AOP思想用于实际项目的一个尝试,本文的股票模拟系统只有股票的买卖,账户使用本地数据库进行管理,对股票模拟系统的要求还有一定的差距,另外,本文只设计两个方面:异常处理和日志,但对于一个股票交易系统来说,这些还远远不够,所以AOP用于大型的项目开发还需要不断的探索下去。
  作者简介
  陈俊贤(1980-),女,江苏苏州人,硕士,研究方向为软件工程。
  蔡黎亚(1974-),女,江苏苏州人,硕士,研究方向信息管理。
其他文献
[摘要]油气井钻井过程中,由于钻具和套管相互摩擦,造成套管內壁磨损并引起磨损套管抗挤强度降低,导致某段油气井报废或整口油气井报废。因此,套管柱设计就尤为重要,更重要的是建立新的计算方法适应新的磨损问题。本文通过对计算方式的比较研究,得出了新的更加科学的计算磨损套管抗挤强度的算法。  [关键词]磨损 套管强度 理论研究
期刊
[摘要]水平井是现代提高石油采收率的重要技术之一,但在一些地质条件不同的地区,还是将钻进技术的不足暴露了出来,钻井速度对油气勘探开发速度及效益具有重要影响。文中重点介绍了影响钻速的几种因素,如地层因素,装备条件及技术水平,破岩方式与破岩工具,循环介质,钻井参数,钻井液体系等。为了提高钻井速度,我们对原因及对策做了综合分析。  [关键词]水平井;钻井速度;影响因素;对策  中图分类号:TE243 文
期刊
[摘要]在市场经济条件下,由于竞争和风险的日益加剧,会计所处的客观经济环境的不确定性程度越来越高,以投资者为主体的会计信息使用者更加重视与不确定性相关的风险信息的揭示,从而,谨慎性原则的应用成为必然。  [关键词]谨慎性原则;会计核算;应用  中图分类号:TM743 文献标识码:A 文章编号:1009-914X(2013)05-0279-01  在竞争激烈的市场经济条件下,企业面对的是纷繁复杂的外
期刊
[摘要]起下钻是钻井作业的重要组成部分之一,传统的起下钻作业都是断断续续进行的。为了进一步提高起下钻效率,从根本上改变传统的起下钻方式,国外业内人员首次提出了连续起下管柱的最新理念,本文对国外连续运动钻机的概念、技術及其优势进行了系统地介绍,以期为国内钻井人员和钻井装备设计制造技术人员提供一定的借鉴。  [关键词]连续起下钻系统 连续循环、连续钻进 自动化钻井 提升系统 设计 系统构成
期刊
中图分类号:TD327.3 文献标识码:A 文章编号:1009-914X(2013)05-0233-02  前言  企业治理的本质是公司经营中的指挥与监督体制。在指挥和监督过程中的利益激励和约束机制,不仅是商法学要讨论的问题,也是经济学、管理学所涉及的领域,企业治理涵盖了商法学、经济学和管理学,内容博大精深。日本的主银行制度是日本企业治理的成功方式之一,国内有的学者主张引进日本的主银行制度,本文从
期刊
[摘要]电力系统继电保护技术的现状有个宏观了解,并对继电保护装置的任务和要求落实到位,对继电保护装置进行定期维护与检查,按照时间要求对其运行状况进行巡视检验,并动态跟进,及时而有效地发现装置存在的故障问题,保证系统无故障设备能正常运行,最终促使供电可靠性的提高。  [关键词]继电保护;电力系统;发展;维护  中图分类号:TM58 文献标识码:A 文章编号:1009-914X(2013)05-027
期刊
[摘要]提高线路单位走廊输送容量,降低工程造价,减少运行维护费用,保护自然环境等已经成为电力基础网络建设与社会环境共同和谐发展的方向。紧凑型送电线路正是在这一大环境要求下出现提出的。本文主要是对紧凑型输电线路的設计的相关内容提出了一些自己的看法。  [关键词]紧凑型,输电线路,设计,应用
期刊
[摘要]公路交通在国民经济中的地位越来越突出,同时,对公路养护方面也提出了新的和更高的要求。现代高速公路要求养护作业快速、安全、环保、低耗,给道路使用者提供舒适、完善的服务功能。因此,要科学的使用好养护机械,使公路养护和机械设备管理紧密结合起来,提高养护作业的质量和效率。文章主要分析了公路养护的维修内容及主要机械配备,公路机械化养护的重要性、必要性,并提出了解决公路机械化养护中存在问题的有效措施,
期刊
[摘要]临盘油区是典型的复杂断块油藏,断层多,断块小,构造断裂复杂,储层类型多,经过地层水矿化度高、原油性质差异大。加上多年高速开发,井况恶化,油井单井负荷重,躺井数居高不下。据统计,管杆偏磨腐蚀是造成躺井的重要原因。本文通过对形成偏磨腐蚀的多种因素进行了较为系统的分析,提出了防治措施,为有效控制躺井,夯实稳产基础,完成原油产量提供了有力保障。  [关键词]抽油井;油管;抽油杆;偏磨;腐蚀;防治对
期刊
[摘要]针对电容层析成像(ECT)技术逆问题的病态特性,本文将最小平方QR分解法(LSQR)应用到直接三维ECT图像重建中,并采用动态滤波函数对重建图像進行改善。本文采用仿真实验的方法,从成像效果、误差评价及重建速度三个方面与Landweber算法进行了比较分析,结果表明,改进的LSQR算法能在较快的时间内达到收敛,数值比较稳定。  [关键词]电容层析成像;直接三维图像重建算法;LSQR;模糊阈值
期刊