- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spring.Net 依赖注入在系统开发中的应用.doc
Spring.Net 依赖注入在系统开发中的应用
摘 要 在一个软件系统开发项目中,通常存在多个模块,模块之间相互关联,协同作用,关系复杂,若将各个模块之间的关系实现运行时匹配,这样就可以降低各模块之间的耦合度,使得整个软件系统更加健壮、稳定,即使某个模块产生异常,其影响面也可降到最低。
关键词 解耦合;依赖注入;应用系统
中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2013)14-0055-01
在一个软件系统开发项目中,不可避免的区分为多个应用模块,目的是将一个复杂的业务分解为多个简单的业务来共同完成整个业务。各个模块之间相互联系,协同作用,其内部关系纵横交错,软件系统结构中各模块间相互联系的紧密程度,即是软件的耦合性。
在一个软件系统中,模块的耦合性就越强,模块的独立性则越差,一旦某个模块发生异常,很可能影响整个系统的正常使用。为了降低模块之间的耦合性,使得模块之间相互影响降至最低,就必须减弱模块之间的耦合关系。
1 依赖注入的优势
模块化设计的最终目标建立模块间耦合尽可能松散的系统。依赖注入(Dependency Injection,DI)又称控制反转(Inversion of Control,IoC)是一个重要的面向对象编程的法则,目的是削减软件模块之间耦合问题。
假定有一个软件项目,其模块结构图所示。
假设这是一个存在6个主模块的大型应用系统项目,现在把该项目分配给6个小组分别完成,每个小组负责实现一个主模块。若负责B模块的开发小组由于工作配合默契等因素首先完成了编码,且完成了模块内部测试工作,现在需要开展模块间的集成测试工作,根据结构图分析:①模块B不是最顶层模块,可能仅仅是一个动态链接库文件,所以它不一定包含main函数(main函数应该在模块A中),故不能独立运行。②模块B调用了模块D和模块E,然而模块D和模块E目前为止都还没有开发完成,因此模块B实现对两者的调用是不可能的。
假设各模块之间通过彼此的对外接口实现调用关系,为了能模拟模块B的集成测试效果,可以进行如下操作:①编写两个桩模块用来代替模块D和模块E,两个桩模块(Sd、Se)分别实现模块D和模块E的相应接口,这样B模块就可以实现对这两个主模块的调用测试。②编写一个驱动模块用来代替模块A,驱动模块(Da)内部包含main函数,让其能独立运行,在驱动模块内部实现对模块B的调用,从而使得模块B能够正常运行。
在模块B调用外部模块D和E时,即对两个桩模块Sd和Se的调用,一定存在相应的创建实例Sd与Se的语句,这种依赖关系会导致在集成测试阶段需要在编码中改变为相应的模块D与模块E的调用语句。
通过IoC模式可以彻底解决这种耦合,它把耦合从代码中移出去,放到XML 配置文件中,通过一个统一的对象管理容器来实现这种依赖关系,即把需要的接口实现动态地注入到所需类中。IoC模式把对象生成代码改变为由XML文件来定义,提高了代码的灵活性和可维护性。
2 应用对比
下面是应用场景的条件:订单与客户关系,一个订单隶属一个客户。
2.1 直接调用客户类,生成订单所有者
从上面代码可以看出:通过Spring.NET容器进行对象管理,受管对象(Order类实例)不需要知道其内部对象(Customer类实例)具体是使用如何实现的,该内部对象的具体实现完全由配置文件决定,这样就实现了对象的动态拆装组建和组件重用。
3 结束语
利用Spring.NET的依赖注入功能,在软件开发和维护过程中,可以快速地实现对象的动态拆装组建和组件重用,降低各模块之间的耦合度,使得整个软件系统更加健壮、稳定。
参考文献
[1]周岚.基于Spring框架的IOC模式在在线项目管理平台中的实现[J].淮南师范学院学报.
[2]刘冬的博客.Spring.NET学习笔记1——控制反转(基础篇) Level 200.博客园.
[3]海芳.驱动模块和桩模块的概念和区别.廊坊师范学院信息技术提高班第八期-博客频道-CSDN.NET.
4
文档评论(0)