随笔分类 -  [01] 技术剖析

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页
摘要:在《通过扩展让ASP.NET Web API支持W3C的CORS规范》中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力,实际上ASP.NET Web API本身就提供了针对CORS的支持,就其实现原理来看,与我们的实现没有本质的区别。接下来我们通过实例演示如何利用ASP.NET Web API自身的支持来实现“跨域资源共享”。 阅读全文
posted @ 2013-12-10 08:36 Artech 阅读(25754) 评论(21) 推荐(17) 编辑
摘要:让ASP.NET Web API支持JSONP和W3C的CORS规范是解决“跨域资源共享”的两种途径,在《通过扩展让ASP.NET Web API支持JSONP》中我们实现了前者,并且在《W3C的CORS Specification》一文中我们对W3C的CORS规范进行了详细介绍,现在我们通过一个具体的实例来演示如何利用ASP.NET Web API具有的扩展点来实现针对CORS的支持。 阅读全文
posted @ 2013-12-09 09:01 Artech 阅读(13358) 评论(24) 推荐(23) 编辑
摘要:随着Web开放的程度越来越高,通过浏览器跨域获取资源的需求已经变得非常普遍。在我看来,如果Web API不能针对浏览器提供跨域资源共享的能力,它甚至就不应该被称为Web API。从另一方面来看,浏览器作为进入Internet最大的入口,是各大IT公司的必争之地,所以浏览器市场出现了种类繁多、鱼龙混杂的局面。针对这两点,我们迫切需要一种能够被各个浏览器厂商共同遵循的标准来对跨域资源共享作出规范,这就是由W3C指定2的CORS(Cross-Origin Resource Sharing)规范 阅读全文
posted @ 2013-12-04 22:47 Artech 阅读(16896) 评论(8) 推荐(11) 编辑
摘要:Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分。“同源策略”限制了JavaScript的跨站点调用,这必然导致Web API不能垮域提供资源。如果Web API仅限于为“同源客户端”提供资源,那么它都对不起自己的名字,因为Web本身是一个开放的协议。那么ASP.NET Web API通过怎样的方式来实现跨域资源共享呢? 阅读全文
posted @ 2013-12-04 10:48 Artech 阅读(26100) 评论(18) 推荐(23) 编辑
摘要:ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于不同的应用程序中。如果采用Web Host的方式将定义Web API寄宿于一个Web应用之中,其实最终的URL路由还是通过ASP.NET本身的路由系统完成的,那么两个路由系统之间是如何衔接在一起的呢?。[本文已经同步到《How ASP.NET Web API Works?》] 阅读全文
posted @ 2013-07-31 09:32 Artech 阅读(11379) 评论(32) 推荐(20) 编辑
摘要:在未来的一段时间里,我将撰写一系列关于ASP.NET Web API的文章。这些文章旨在剖析ASP.NET Web API框架底层的运行机制,力求将整个框架这个黑盒转换为百盒,将框架本身进行请求处理的流程完整而清晰地呈现在读者面前,让读者知其然并知其所以然。 阅读全文
posted @ 2013-07-30 20:12 Artech 阅读(20708) 评论(26) 推荐(37) 编辑
摘要:虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除了对System.Web.dll程序集的依赖,实现在ASP.NET Web API框架中的URL路由系统亦是如此。也就是说,ASP.NET Web API核心框架的URL路由系统与ASP.NET本身的路由系统是相对独立的。但是当我们采用基于Web Host的方式(定义在程序集System.Web.Http.WebHost.dll)将ASP.NET Web API承载于一个ASP.NET Web应用的时候,真正实现URL路由的依然是ASP.NET本身的路由系统,Web Host实际上在这种情况下起到了一个“适配”的作用,是两个相对独立的路由系统的“适配器”。我们先来讨论一下实现在ASP.NET Web AP 阅读全文
posted @ 2013-07-30 11:54 Artech 阅读(10977) 评论(29) 推荐(36) 编辑
摘要:基于Web Form引擎的WebFormViewEngine和针对Razor引擎的RazorViewEngine都是抽象类型BuildManagerViewEngine的子类,而后者又继承自VirtualPathProviderViewEngine。在这里我们仅仅对实现在RazorViewEngine中View获取的逻辑进行简单介绍。由于Razor引擎下的View通过RazorView对象来表示,而RazorView通过View文件的虚拟路径来构建,所以RazorViewEngine的View获取机制在于根据当前上下文找到与指定View名称相匹配的View文件(.cshtml或者.vbhtml文件),然后根据该 View文件的虚拟路径创建一个RazorView对象并最终封装成ViewEngineResult对象返回。 阅读全文
posted @ 2012-09-07 08:55 Artech 阅读(18533) 评论(30) 推荐(18) 编辑
摘要:在《RazorView》介绍BuildManagerCompiledView的时候,我们谈到默认使用的ViewPageActivator使用当前注册的DependencyResolver来完成对目标View的激活,这意味着我们可以通过注册自定义DependencyResolver的方式实现基于IoC的View激活。本篇文章中我们将演示如何通过自定义View的方式实现与IoC框架Ninject的集成。 阅读全文
posted @ 2012-09-06 08:27 Artech 阅读(6981) 评论(12) 推荐(12) 编辑
摘要:Razor引擎具有两个核心的类型,一个是表示View本身的类型RazorView,另一个则是获取和创建它的WebFormViewEngine,我们将用两篇文章对它们分别进行剖析。Razor引擎下的View通过类型RazorView表示,它与表示Web Form引擎View的类型WebFormView都是BuildManagerCompiledView的子类。 阅读全文
posted @ 2012-09-05 08:16 Artech 阅读(13706) 评论(24) 推荐(25) 编辑
摘要:通过.cshtml或者.vb.html文件定义的View能够被执行,必须先被编译成存在于某个程序集的类型,ASP.NET MVC采用动态编译的方式对View文件实施编译。当我们在对ASP.NET MVC进行部署的时候,需要对.cshtml或者.vb.html文件进行打包。针对某个View的第一次访问会触发针对它的编译,一个View对应着一个类型。我们可以对.cshtml或者.vb.html进行修改,View文件修改后的第一次访问将会导致View的再一次编译。和ASP.NET 传统的编译方式一样,针对View的编译默认是基于目录的,也就是说同一个目录下的多个View文件被编译到同一个程序集中 阅读全文
posted @ 2012-09-04 08:30 Artech 阅读(27023) 评论(35) 推荐(46) 编辑
摘要:为了让读者对View引擎及其View呈现机制具有一个深刻的认识,我们自定义一个简单的用于呈现静态HTML的StaticFileViewEngine。在一个通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中,我们定义了如下一个针对于静态HTML内容呈现的自定义StaticFileView。StaticFileView实现了IView接口,在实现的Render方法中读取制定文件的内容写入作为参数的TextWriter。 阅读全文
posted @ 2012-08-23 07:58 Artech 阅读(11813) 评论(17) 推荐(13) 编辑
摘要:在前面的四篇文章中,我们介绍了各种ActionResult以及相关的请求响应机制,但是与“View的呈现”相关的ActionResult是ViewResult。通过ViewResult的执行实现的对View的呈现比上面我们介绍的各种ActionResult要复杂得多,ASP.NET MVC内部设计了一个扩展的View引擎实现了最终的View呈现工作。 阅读全文
posted @ 2012-08-22 09:09 Artech 阅读(18471) 评论(36) 推荐(25) 编辑
摘要:在本系列的最后一篇,我们来讨论最后三个ActionResult:HttpStatusCodeResult、RedirectResult和RedirectToRouteResult 。第一个用于实现针对某个HTTP状态的响应,而后两个用于实现重定向。至于重定向,又分为“暂时重定向”和“永久重定向”,按照响应状态,又称“302重定向”和“301重定向”。 阅读全文
posted @ 2012-08-16 08:33 Artech 阅读(23359) 评论(21) 推荐(23) 编辑
摘要:在之前的两篇文章(《EmptyResult & ContentResult》和《FileResult》)我们剖析了EmptyResult、ContentResult和FileResult这三种ActionResult是如何将Action执行的结果响应给客户端的。本篇文章着重介绍在进行Ajax调用中经常使用的两个ActionResult,即JavaScriptResult和JsonResult 阅读全文
posted @ 2012-08-15 08:29 Artech 阅读(38814) 评论(26) 推荐(39) 编辑
摘要:FileResult是一个基于文件的ActionResult,利用FileResult我们可以很容易地将从某个物理文件的内容响应给客户端。ASP.NET MVC定义了三个具体的FileResult,分别是FileContentResult、FilePathResult和FileStreamResult。在这篇文章中我们将探讨三种具体的FileResult是如何将文件内容对请求进行响应的。 阅读全文
posted @ 2012-08-14 08:49 Artech 阅读(48121) 评论(16) 推荐(28) 编辑
摘要:定义在Controller中的Action方法大都返回一个ActionResult对象。ActionResult是对Action执行结果的封装,用于最终对请求进行响应。ASP.NET MVC提供了一系列的ActionResult,它们本质上是通过怎样的方式来响应请求的呢?这是这个系列着重讨论的主题 阅读全文
posted @ 2012-08-13 22:24 Artech 阅读(49138) 评论(15) 推荐(41) 编辑
摘要:在ASP.NET MVC中的四大筛选器(Filter),ActionFilter直接应用在某个Action方法上,它在目标Action方法执行前后对调用进行拦截以执行一些额外的操作。这是一种典型的AOP式的设计,如果我们需要在执行某个Action方法的前后执行一些操作,可以通过定义ActionFilter来实现。本篇文章主要讲述多一个应用到相同Action方法上的ActionFilter的执行机制。[本文已经同步到《How ASP.NET MVC Works?》中] 阅读全文
posted @ 2012-08-06 09:14 Artech 阅读(17905) 评论(20) 推荐(25) 编辑
摘要:从命名来看,AuthorizationFilter用于完成授权相关的工作,所以它应该在Action方法被调用之前执行才能起到授权的作用。不仅限于授权,如果我们希望目标Action方法被调用之前中断执行的流程“做点什么”,都可以以AuthorizationFilter的形式来实现 阅读全文
posted @ 2012-07-02 22:39 Artech 阅读(49591) 评论(18) 推荐(50) 编辑
摘要:在ActionInvoker对Action的执行过程中,除了通过利用ActionDescriptor对Action方法的执行,以及之前进行的Model绑定与验证之外,还具有一个重要的工作,那就是对相关筛选器(Filter)的执行。ASP.NET MVC的筛选器是一种基于AOP(面向方面编程)的设计,我们将一些非业务的逻辑实现在相应的筛选器中,然后以一种横切(Crosscutting)的方式应用到对应的Action方法。当Action方法执行前后,这些筛选器会自动执行。ASP.NET MVC提供了四种类型的筛选器(AuthorizationFilter、ActionFilter、ResultFilter和ExceptionFilter),它们对应着相应的筛选器接口(IAuthorizationFilter、IActionFilter、IResultFilter和IExceptionFilter)。 阅读全文
posted @ 2012-07-02 08:45 Artech 阅读(19729) 评论(32) 推荐(37) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页