当前位置: 首页 > news >正文

事业单位网站建设计划网络营销推广的特点

事业单位网站建设计划,网络营销推广的特点,西安做兼职网站,购物网站开发需求Autofac是一个Ioc框架,最大的特点应该是可以不用配置文件,直接用C#代码来注册。 Autofac同时也提供了对于Asp.net MVC的扩展。 这里是Autofac的文档,介绍如何在MVC项目中集成使用: protected void Application_Start() {var build…

Autofac是一个Ioc框架,最大的特点应该是可以不用配置文件,直接用C#代码来注册。

Autofac同时也提供了对于Asp.net MVC的扩展。

这里是Autofac的文档,介绍如何在MVC项目中集成使用:

protected void Application_Start()
{var builder = new ContainerBuilder();builder.RegisterControllers(typeof(MvcApplication).Assembly);var container = builder.Build();DependencyResolver.SetResolver(new AutofacDependencyResolver(container));// Other MVC setup...

 

解释一下里面的过程:

1. 首先创建一个ContainerBuilder(它会稍后为我们提供一个容器,我们可以从中取出我们所需的对象实例)

2. 注册当前Assembly中的所有Controllers到Builder,这样Builder就获取了当前MVC项目中的所有Controller类型

3. 创建容器

4. 用AutofacDependencyResolver替换MVC默认的DependencyResolver

 

OK. 到这里, 前面的还容易理解,最后一个DependencyResolver做了什么? 要了解DependencyResolver, 需要先知道ControllerFactory

MVC中的ControllerFactory

MVC请求的过程,就是根据请求的URL找到匹配的Route, Route解析出来对应的Controller的名字, 然后根据名字,找到对应的Controller类型,然后实例化一个Controller的对象响应请求。

 

上面粗体标出的,就是DefaultControllerFactory做的事情,也就是它的方法CreateController方法:

public virtual IController CreateController(RequestContext requestContext, string controllerName)

 

CreateController方法又主要依赖于GetControllerType和GetControllerInstance方法:

protected internal virtual Type GetControllerType(RequestContext requestContext, string controllerName)protected internal virtual IController GetControllerInstance(RequestContext requestContext, Type controllerType)

 

看到这么多的virtual方法,是不是很激动? 这个不是明显是让我们继承和override的嘛。假如我们override这里的GetControllerInstance方法,然后根据这里的controllerType从Ioc容器中获取这个ControllerType的实例,不就万事OK了吗?

 

没错,继承和重写GetControllerInstance方法的确可以实现Controller的Ioc, 然后在Application_Start()里面,使用下面这行代码,替换掉DefaultControllerFactory.

ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory(_container));

 

说好的DependencyResolver呢?

其实DefaultControllerFactory中的GetControllerInstance,调用了IDependencyResolver接口定义的方法GetService获取实例。通过继承这个接口,替换原有的DependencyResolver, 对于MVC原有的改动更小。所以使用通过继承IDependencyResolver 接口的方式来实现更好. 这就是开篇我们看到的:

 
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

IDependencyResolver借口
public interface IDependencyResolver {object GetService(Type serviceType);IEnumerableGetServices(Type serviceType);}

 

想看看AutofacDependencyResolver的源代码是如何根据Type从容器中获取实例的, 可以到这里

 

思考和实践: 什么时候用到ControllerFactory

Asp.net MVC中的Area的使用,应该大家比较熟悉了。它是用来解决大的项目,多人开发的情况的。area实现的原理,是通过命名空间来区分即使名字相同的Controller的。可是无论如何,area都是在一个project里面的.

 

如何能够分离area到不同的project中呢? 这里的GetControllerType方法就是很好的突破口。下次探讨一下如何实现area分离到不同的project中,方便较大的项目。这也是Orchard CMS模块实现的原理。

转载于:https://www.cnblogs.com/JustRun1983/archive/2012/10/19/2731654.html

http://www.lbrq.cn/news/2432971.html

相关文章:

  • 山东大良网站建设贵阳网站建设公司
  • 根据网站做app网络营销图片素材
  • 微商自己做网站海外域名
  • 有哪些可以做外链的网站百度入口官网
  • 天河区门户网站教育专栏微信腾讯会议
  • 做网站的 视频国内建站平台
  • 政府网站建设构想提升神马seo关键词自然排名
  • 做竞猜网站犯法吗无锡seo公司找哪家好
  • 网站霸词怎么做关键词优化和seo
  • 有哪些做留学资讯的网站乔拓云网站注册
  • 党建网站建设技术方案搜索引擎优化工作
  • zblog 仿wordpressseo基础
  • 青海互动网站建设百度首页纯净版
  • 专业网架加工广西seo搜索引擎优化
  • 阿里云 wordpress建站推广软件的app
  • 做网站设计注意什么细节开通网站需要多少钱
  • 创建小型网站的步骤网页广告调词平台
  • 网页设计教程文字与图片广州网站设计专注乐云seo
  • 嘉兴网站制作案例百度快速优化推广
  • 网站 建设 内容 安排免费留电话的广告
  • 网优 是什么网站五年级上册语文优化设计答案
  • 焦作会计做继续教育在哪个网站建网站有哪些步骤
  • 企业网站报价方案模板下载搜索推广渠道有哪些
  • 学网站开发培训机构全网关键词搜索工具
  • 四川城乡建设委员会官方网站关键词首页排名优化
  • 淄博网站建设费用郑州seo招聘
  • 购物网站运营人力资源培训
  • 商城网站设计费用网络营销案例有哪些
  • 仿牌网站安全电商培训课程
  • 自适应网站做百度推广找客户资源的软件免费的
  • 深度学习的一些疑点整理
  • AWE2026启动:加码AI科技,双展区联动开启产业新格局
  • 欧式装修颜色要怎么搭配?
  • An error occurred at line: 1 in the generated java file问题处理及tomcat指定对应的jdk运行
  • 假发行业数字化突围,外贸ERP重构外协管理引擎,助力效率飞跃
  • 【c++】leetcode5 最长回文子串