您的位置:首页 > 运维架构 > 网站架构

.net企业级架构实战之1——框架综述

2008-08-17 01:12 316 查看
近日由于业务需要,接触了一些Flex下的东西,比如Mate框架(一个集成MVC和IOC的框架,其事件广播机制很强大),疏于整理spring.net学习资料,现在终于得闲,将心得梳理一下:

spring.net是java下大名鼎鼎的spring框架移植到.net的开源项目,且借助于.net强大的反射机制,甚至拥有比原java版本更强大的功能。

那它能用来做什么呢?核心功能就是IOC和AOP:

IOC(Inversion of Control),字面意思为“反转控制”,我更倾向于理解为“依赖注入”,意思就是说:在基于接口开发的情况下,我们会对需要的业务处理对象(数据访问,业务逻辑等)一一做上接口,前端使用时只是对接口的调用,而并不关心具体是什么类具体去实现了这个接口~听起来似乎不可能,是的,如果没有IOC,这是不可能的事情,我们的前端逻辑和后端实现是紧紧耦合的,做页面开发的人必须知道哪一个类(.cs文件)拥有哪些方法,即便是基于接口,我们也依然要在程序里去实例化它,形如:

<!--被代理的对象userDAO-->

<object id="userDAO" type="woodigg.DAO.UserDAO" singleton="false">

<constructor-arg type="woodigg.model.User">

<ref object="user"/>

</constructor-arg>

</object>

<!--切面通知-->

<object id="adviceSave" type="woodigg.bll.whenUserSaveAdvice,woodigg.bll" />

<!--切入点-->

<object id="advisor"

type="Spring.Aop.Support.NameMatchMethodPointcutAdvisor,Spring.Aop">

<property name="MappedNames">

<list>

<value>save*</value>

</list>

</property>

<property name="advice" ref="adviceSave" />

</object>

<!--代理对象-->

<object id="proxyUserDAO"

type="Spring.Aop.Framework.ProxyFactoryObject,Spring.Aop">

<property name="proxyInterfaces">

<value>woodigg.Interface.DAO.IUserDAO</value>

</property>

<property name="interceptorNames">

<list>

<value>advisor</value>

</list>

</property>

<property name="target">

<ref object="userDAO" />

</property>

</object>


也许这样的配置片断更让人犯晕,没关系,习惯了就好,有些事情需要我们自己去做(DB,ENTITY,DAO,BLL开发),有些事情需要的是我们去理解(AOP框架,通知,切面,代理对象),相信不需要多长时间,这些都不是问题。

关于IOC和AOP,以上只是寥寥几笔带过,在以后的实例系列中,将各个击破

实例主要围绕的是一个音乐网站的搭建(有点儿像AllMusic内样的,而不同于别的什么无聊SNS社区),会涉及的内容是:Spring.net、nHibernate、codeSmith模板、多对多表结构、Castle MonoRail(虽然有人强建不建议把MonoRail集成到Spring.net中,但我至今没找到.net 2.0下好的MVC解决方案,用用MonoRail有助于更好理解MVC,优化性能)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: