spring.net中间IoC、DI和MVC
轮廓
spring.net它是开源的业务层框架,功能很强大,它归结到什么都有3能:面向切面编程;IoC和DI;提供综合型的框架支持,本片博客主要说一下IoC和DI。和其提供的对MVC框架的支持。
IoC和DI
IoC。英文全称Inversion of Control。控制反转。DI。英文全称Dependency Injection。依赖注入。简而言之,IoC就是创建对象,DI就是创建对象的时候。进行初始化。
IoC和DI就相当于我们通常写的抽象工厂+反射,仅仅只是比抽象工厂的功能强大,可是其思想是一样的,就是解耦。我们通过抽象工厂+反射。实现了上层和下层之间的解耦。当然。这当中有对应的中间层(接口)提供下层对应的类型保证,而spring.net提供的IoC和DI也是这样实现的,仅仅只是,我们使用spring.net的框架时。我们不须要再自己写对应的抽象工厂了。不须要自己在进行维护这个类了,spring.net已经给我封装成了对应的dll组件。我们仅仅须要引用对应的组件,然后进行对应的配置文件的配置就能够事项该功能。
提供MVC框架的支持
MVC框架能够说是UI层的一个框架,其Control类的功能就是接受请求,返回数据,其对于数据业务逻辑的处理是交给BLL层(业务逻辑层)进行处理的。我们通过spring.net提供的dll组件实现U层和B层的分离。
对于UI层不是MVC框架的类。我们再引入对应的dll。进行对应配置文件配置后,我们接下来的操作就是创建一个容器对象。然后给其对应的key就能够通过容器对象得到我们想要的对象,这个方式是针对于UI层没有架构的情况。而对于UI层使用了MVC架构的程序,我们是通过别的方式进行实现的,上面的概述中说了,spring.net提供了综合型框架的支持,所以,我们能够知道。spring.net也提供了对应的dll来和MVC框架进行对应的对接。这个过程的详细操作:在control类中定义对应的属性(IBLL接口类型),然后。通过配置文件的配置,实现。当然訪问这个control类时。就初始化了对应的属性。
配置文件的处理
使用spring.net框架的时候,我们会在配置文件里书写大量的内容。假设这些内容只在一个web.config中写的话,会很的乱,此时,我们能够创建对应的xml文件,进行对应的配置,当然。这个须要进行对应得配置。假设我们使用这样的方式的时候,我们须要注意,我们要对xml文件的属性做一些处理,将其弄到UI层。由于,我们的程序訪问的配置文件是基于I层的。
总结
我们做一个程序,我们使用spring.net + M(EasyUI)VC + EF/NHibernate + T4这个框架,和一个不使用分层和不论什么架构的程序相比。在性能上,肯定是后者的效率高。由于代码运行的流程少。路径短,所以,很的快,可是,为什么还是出现了上者的那种架构,而且许多人觉得这样的架构还很好呢?
要想知道上面的答案。我们须要析一下,为什么出现了上面的两种情况,为什么呢?由于我们做的程序的类型不同,对于互联网系统,对于系统的要求的是运行的速度快,对于企业级业务系统(OA\ERP\管理系统等)。对于系统的要求的是对于需求的变化能灵活的应对,ok,这样我们清除。为什么有这么多的框架,和,今天,很多人仍然非常致力于开发框架。而相应的优化工作原因。
从上面的分析我们可以知道。对于计划,不是用类似这样的框架,不坏不框架。但只用优势。
spring.net中间IoC、DI和MVC的更多相关文章
- 十七、Spring框架(IOC/DI)
一.Spring框架 Spring是一个基于IOC和AOP的结构J2EE系统的框架. 1.IOC反转控制是Spring的基础(Inversion Of Control).也就是说创建对象由以前的程序员 ...
- spring中的IOC/DI的知识点
IOC(Inverse of control):控制反转;其实就是一个装对象的容器,以前我们在controller中调用service中的方法,都要先new 一个service对象,这样不符合模式设计 ...
- Spring.Net---3、IoC/DI深入理解
------------------------------------------------------------------------ 理解IoC/DI 1.控制反转 --> 谁控制谁 ...
- JAVAWEB 一一 框架整合(SSH,Spring+Struts2+Hibernate IOC/DI AOP声明式事务处理 定时任务)
package org.springframework.orm.hibernate3; import java.io.Serializable; import java.util.List; impo ...
- Spring.Net---2、IoC/DI基本概念
---------------------------------------------------------------------------------- (1)IoC/DI的概念 IoC ...
- spring IOC DI AOP MVC 事务, mybatis 源码解读
demo https://gitee.com/easybao/aop.git spring DI运行时序 AbstractApplicationContext类的 refresh()方法 1: pre ...
- Spring中的IOC\DI\AOP等概念的简单学习
IoC(Inversion of Control,控制反转).这是spring的核心,贯穿始终, 所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系.Spr ...
- Spring再接触 IOC DI
直接上例子 引入spring以及Junite所需要的jar包 User.java package com.bjsxt.model; public class User { private String ...
- spring 学习 二 IOC/DI
中文名称:控制反转 英文名称:( Inversion of Control ) 1 控制反转作用: 一般在编写java程序时,需要程序员自己创建对象的实例,例如 A a=new A();语句,就是程序 ...
- Spring.Net---4、IoC/DI注入方式
spring.net里实现了控制反转IOC(Inversion of control),也即依赖注入DI(Dependency Injection),以达到解耦的目的,实现模块的组件化.程序在调用sp ...
随机推荐
- Android 系统搜索框(有浏览记录)
实现Android 系统搜索框(有浏览记录),先看下效果: 一.配置搜索描述文件 要在res中的xml文件加创建sreachable.xml,内容如下: <?xml version=" ...
- Swift - 将表格UITableView滚动条移动到底部
有时我们需要通过代码自动将表格UITableView滚动条移动到尾部,只需要使用scrollToRowAtIndexPath方法即可,代码如下: 1 2 3 4 5 var secon = 1 //最 ...
- svn自动发用户名密码到邮件(明文密码)
#!/bin/sh touch testlist cat /dev/null > testlist grep "=" passwd |grep -v "#" ...
- 与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密
原文:与众不同 windows phone (28) - Feature(特性)之手机方向, 本地化, 应用程序的试用体验, 系统主题资源, 本地数据的加密解密 [索引页][源码下载] 与众不同 wi ...
- 搜索引擎爬虫蜘蛛的USERAGENT大全
搜索引擎爬虫蜘蛛的USERAGENT大全 搜索引擎爬虫蜘蛛的USERAGENT收集,方便制作采集的朋友. 百度爬虫 * Baiduspider+(+http://www.baidu.com/sea ...
- touch修改文件的修改时间和访问时间,ls --full-time显示文件详细,stat命令
1. 同时修改文件的修改时间和访问时间 touch -d "2010-05-31 08:10:30" test.doc 2. 只修改文件的修改时间 touch -m -d &quo ...
- Delphi过程函数传递参数的八种方式
今天一同事问我为什么有些过程函数里面有Var而有些没有,不解,遂到网上百度,得解.快哉,快哉. 在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out.另一种不加修饰符的为默认按值传 ...
- libuv 与 libev 的对比
libuv 与 libev 的对比 libuv 与 libev 的对比 05 January 2013 libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Lib ...
- 警惕!iPhone 6即将上市 诈骗邮件已现身网络
随着iPhone 6即将上市,各路小道消息已经開始满天飞.就在近几日,一些记者还收到了假的iPhone 6将要上市的通知邮件.趋势科技也收到了几封,下面是样本之中的一个: (垃圾邮件样本) 不清楚iP ...
- Eclipse 未开始 【Ubuntu】
/usr/lib/eclipse/configuration/1408532831122.log : !SESSION 2014-08-20 19:07:11.055 ---------------- ...