|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。 这里的“孤单”指的是将ASP.NET程序中的初始化代码从Global.asax.cs的Application_Start()办法中,移至独自的程序会合,而且这个程序集与Web项目标程序集没有任何交往。好比,初始化代码地点的程序集叫CNBlogs.BootStrapper,Web项目标程序集叫CNBlogs.Web,在VisualStudio中,这两个项目之间没有任何援用干系。
由于低耦合而变得孤单,代码却因而变得更美。在生存中,孤单可让人坚持心坎的和平,能够享用更多思索之美。
这篇文章经由过程两种办法让初始化代码变得更幽美:
1)PreApplicationStartMethod(ASP.NET4.0的新特征,详见这里)。
2)Bootstrapper(codeplex上的开源项目,详见http://bootstrapper.codeplex.com/)。
利用Application_Start()的场景
先看一下不利用Bootstrapper,间接在Application_Start()举行初始化的示例代码:- publicstaticvoidRegisterGlobalFilters(GlobalFilterCollectionfilters){filters.Add(newHandleErrorAttribute());}publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default","{controller}/{action}/{id}",new{controller="Home",action="Index",id=UrlParameter.Optional});}protectedvoidApplication_Start(){//MVC的注册AreaRegistration.RegisterAllAreas();RegisterGlobalFilters(GlobalFilters.Filters);RegisterRoutes(RouteTable.Routes);//IOC容器的注册varcontainer=IoCFactory.Instance.CurrentContainter;container.RegisterType<IBlogSiteService,FakeBlogSiteService>();container.RegisterType<IBlogPostService,FakeBlogPostService>();}
复制代码 这是一种经常使用场景,在Application_Start()中完成一些初始化注册与设置,但这些代码堆在一同,看着老是不扎眼。
当利用了测试驱动开辟(TDD)以后,不但看着不扎眼,并且用着也不伏手,由于在测试项目中也要举行初始化,但测试项目没法挪用Application_Start()办法。
我们事先将这部分初始化代码移至自力的程序集(CNBlogs.BootStrapper),就是由于测试所需。自力出来后,Application_Start()与测试项目都经由过程挪用CNBlogs.BootStrapper.Initializer.Initialize()办法完成初始化。
如许固然自力了,但其实不孤单,也不俊丽。由于:
1.Web项目要依附CNBlogs.BootStrapper;
2.这些初始化代码仍然堆在一些,只是换了个中央。
办理办法
针对第一个成绩 |
|