RSS 2.0 Feed
2007-12 Entries
摘要:让 ASP.NET MVC 支持 HotSwap 下载这次的例子代码 [ http://www.cnblogs.com/Files/Lostinet/Asp35Website1.zip ]   在HowToStart那帖中,我提到了ASP.NET MVC的问题 :如果修改一次Controller的代码,就导致ASP.NET重启一次 , 那么会不会很麻烦? 有时候一个项目大一点, ASP.NET启动一次需要几十秒, 那样的等待真的很浪费时间. 与思归的交谈中, 他提到了HotSwap的概念. "热插拔" - 编写代码后不需要重新编译或重启ASP.NET. 怎样实现这个功能呢? 现在MVC的文档很少. 只能通过Reflector去找答案了. 一个Request,从Url, 一直到了具体的 Controller , 经过了那些步骤呢? 下面列出了这个步骤的详细:1. Url2. RouteTable3. MvcRouteHandler4. MvcHandler5. ControllerBuilder6. ControllerFactory7. Controller 这个过程中, MvcRouteHandler 是连接 RouteTable 和 MvcHandler 的桥梁. MvcHandler则根据传递过来的信息, 根据某种规则, 从所有的Assembly中找到对应的Controller类 然后把类型信息传递给 ControllerBuilder/ControllerFactory , 用于指定一个更具体的Controller.(类似RuntimeEntity那篇文章说的子类化模式..) 看来, 需要对MvcHandler下手了. 而 MvcRouteHandler 则就是 MvcHandler 的 Factory. 所以同时也要编写MvcRouteHandler的实现 :public class HotSwapMvcRouteHandler : System.Web.Mvc.MvcRouteHandler{    protected override IHttpHandler GetHttpHandler(System.Web.Mvc.RequestContext requestContext)    {        HotSwapMvcHandler handler = new HotSwapMvcHandler();        handler.RequestContext = requestContext;        return handler;    }}public class HotSwapMvcHandler : System.Web.Mvc.MvcHandler{    protected override Type GetControllerType(string controller)    {        string name = controller + "Controller";        string file = "~/Controllers/" + name + ".cs";        if (!System.IO.File.Exists(HttpContext.Current.Server.MapPath(file)))            return base.GetControllerType(controller);        System.Reflection.Assembly......[阅读全文]

posted @ | Feedback (7) | Filed Under [ AspNet ]

摘要:有没有人下载了ASP.NET MVC ? 无法知道如何开始. 用VS Web Developer Express 2008,有项目模板 [ASP.NET 3.5 Extensions Web Site], 新建了,只有一个web.config里包含了一些必要的配置. 例如UrlRoutingModule. 建立了Controllers目录,建立了一个TestController类 然后建立Views目录,在下面继续建个Test目录. 然后浏览http://localhost:3759/Asp35Website1/Test/. 很不幸. 无法找到资源. 不知道还需要配置些什么. 请大家在这里聊聊.  ...[阅读全文]

posted @ | Feedback (8) | Filed Under [ 迷失中 ]