上一页 1 2 3 4 5 6 7 8 9 ··· 19 下一页
摘要:我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但是就具体的实现来说,由于其中涉及很多对象的交互,我想很少人能够地把它弄清楚。为了让读者朋友们能够更加容易地理解管道处理HTTP请求的总体流程,我们根据真实管道的实现原理再造了一个“模拟管道”并在此管道上开发了一个发布图片的应用,这篇文章旨在为你讲述管道是如何处理HTTP请求的 阅读全文
posted @ 2016-05-30 22:45 Artech 阅读(7254) 评论(11) 推荐(26) 编辑
摘要:如果想非常深刻地认识ASP.NET Core的请求处理管道,可以分两个步骤来进行,我们首先可以在忽略细节的前提下搞清楚管道处理HTTP请求的总体流程,然后再此基础上补充之前遗漏的细节。为了让读者朋友们能够更加容易地理解管道处理HTTP请求的总体流程,我们根据真实管道的实现原理再造了一个“模拟管道”。 阅读全文
posted @ 2016-05-29 21:38 Artech 阅读(5953) 评论(12) 推荐(15) 编辑
摘要:之所以称ASP.NET Core是一个Web开发平台,源于它具有一个极具扩展性的请求处理管道,我们可以通过这个管道的定制来满足各种场景下的HTTP处理需求。ASP. NET Core应用的很多特性,比如路由、认证、会话、缓存等,也同时定制消息处理管道来实现的。我们甚至可以通过管道定制在ASP.NET Core平台上创建我们自己的Web框架,实际上MVC和SingalR这两个重要的Web框架也是采用这样的方式创建的。 阅读全文
posted @ 2016-05-27 09:30 Artech 阅读(15593) 评论(34) 推荐(61) 编辑
摘要:So, you installed .NET Core RC2 , you followed the getting started tutorial and you got your “Hello World!” printed on your command prompt just by using the CLI. Then you went the next step and you tried to use Visual Studio Code and the C# extension to edit the application outside of Visual Studio. And finally you want to try and debug and set a breakpoint inside the application, but you encountered some pr 阅读全文
posted @ 2016-05-26 08:57 Artech 阅读(1350) 评论(0) 推荐(0) 编辑
摘要:今天写了一个简单的.NET Core RC2控制台程序,发现中文显示一直是乱码。查看操作系统设置,没有问题;查看源文件编码,也没有问题;甚至查看了Console字符编码相关的注册表,依然没有发现问题。难道NET Core到了RC2,莫非连一些常用的编码都不支持吗? 阅读全文
posted @ 2016-05-18 23:18 Artech 阅读(14849) 评论(36) 推荐(35) 编辑
摘要:在.NET Core 1.0.0 RC2即将正式发布之际,我也应应景,针对RC2 Preview版本编写一个史上最简单的MVC应用。由于VS 2015目前尚不支持,VS Code的智能感知尚欠火候,所以我们直接采用最原始的记事本来编写这个MVC应用。 阅读全文
posted @ 2016-05-15 21:33 Artech 阅读(9643) 评论(43) 推荐(38) 编辑
摘要:提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中。到了.NET Core的时候,很多我们习以为常的东西都发生了改变,其中也包括定义配置的方式。总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源。我们可以采用内存的变量作为配置的数据源,也可以直接配置定义在持久化的文件甚至数据库中。 阅读全文
posted @ 2016-05-14 08:23 Artech 阅读(8175) 评论(12) 推荐(23) 编辑
摘要:Microsoft has decided after the RTM of the ASP.NET Core framework to phase out project.json and use MSBuild for build data. They’ve not decided whether to keep the NuGet dependencies in a pared down project.json (maybe renamed to nuget.json) or whether to just allow for a command-line action like “nuget install dependency --save” to mirror what other package managers do. 阅读全文
posted @ 2016-05-12 21:33 Artech 阅读(2550) 评论(1) 推荐(1) 编辑
摘要:Exciting times lie ahead for .NET developers. During Build, Microsoft’s biggest developer event of the year, clear roadmaps were given on the future of .NET and C#. Microsoft is re-positioning .NET to be a platform that can be written anywhere and run anywhere, which is a departure from it’s long history of proprietary technologies. 阅读全文
posted @ 2016-05-12 08:37 Artech 阅读(2729) 评论(2) 推荐(4) 编辑
摘要:本节所谓的“配置同步”主要体现在两个方面:其一,如何监控配置源并在其变化的时候自动加载其数据,其目的是让应用中通过Configuration对象承载的配置与配置源的数据同步;其二、当Configuration对象承载的配置放生变换的时候如何向应用程序发送通知,最终让应用程序使用最新的配置。 阅读全文
posted @ 2016-05-11 22:58 Artech 阅读(5139) 评论(7) 推荐(13) 编辑
摘要:Whether you have already drawn insights from our (free) 2016 .NET Developer Community Report or not, you will likely find this new slice of the results delicious. This infographic presents a few interesting cross-sections of data from our 2016 .NET Developer Survey, some of which are not included in the report. 阅读全文
posted @ 2016-05-11 10:32 Artech 阅读(1672) 评论(0) 推荐(1) 编辑
摘要:ConfigurationBuilder在生成以Configuration对象的时候会利用注册其中的ConfigurationProvider加载原始的配置数据,那么一旦配置源中的数据发生变化,应用程序中的使用的配置信息如何与之同步呢?如果需要在应用程序中实现对配置信息的实施同步,就需要对原始配置数据的进行监控,并在数据改变的时候重新加载配置数据。除此之外,重新加载的配置需要应用到程序中,我们必然需要一种通知机制。 阅读全文
posted @ 2016-05-09 21:19 Artech 阅读(2929) 评论(4) 推荐(5) 编辑
摘要:ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了“标准化”,我们将这些标准化的组件称为服务,ASP.NET在内部专门维护了一个DI容器来提供所需的服务 阅读全文
posted @ 2016-05-08 17:40 Artech 阅读(12285) 评论(4) 推荐(15) 编辑
摘要:我们在上篇和中篇对配置模型中默认提供的各种ConfigurationProvider进行了深入详尽的介绍,如果它们依然不能满足项目中的配置需求,我们可以还可以通过自定义ConfigurationProvider来支持我们希望的配置来源。就配置数据的持久化方式来说,将配置存储在数据库中应该是一种非常常见的方式,接下来我们就是创建一个针对数据库的ConfigurationProvider,它采用最新的Entity Framework 7来完成数据库的存取操作。 阅读全文
posted @ 2016-04-27 22:12 Artech 阅读(2544) 评论(0) 推荐(7) 编辑
摘要:我们在本篇文章中会介绍三种针对物理文件的ConfiguationProvider,它们分别是针对JSON文件的JsonConfiguationProvider,针对XML文件的XmlConfiguationProvider以及针对INI文件的IniConfiguationProvider。对于这三种文件类型(JSON、XML和INI)来说,JSON能够采用简单直观的格式表示具有不同结构的数据,所以它是作为配置最好的选择。 阅读全文
posted @ 2016-04-26 21:16 Artech 阅读(2571) 评论(5) 推荐(8) 编辑
摘要:较之传统通过App.config和Web.config这两个XML文件承载的配置系统,ASP.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持。我们可以将内存变量、命令行参数、环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式,比如XML、JSON和INI等。如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationProvider的方式将其他形式数据作为我们的配置来源。接下来就让我们来逐个认识一下配置模型原生提供的ConfigurationProvider。 阅读全文
posted @ 2016-04-25 09:24 Artech 阅读(3645) 评论(3) 推荐(12) 编辑
摘要:我们在《读取配置信息》通过实例的形式演示了如何利用Options模型以依赖注入的方式直接获取由指定配置节绑定生成的Options对象,我们再次回顾一下当初我们编写的程序。如下面的代码片段所示,基于Options模型的配置绑定的编程基本采用这样的模式:先后调用ServiceCollection的扩展方法AddOption和Configure注册Options模型相关的服务并完成Options类型与指定配置节之间的映射,然后利用由此生成ServiceProvider获得一个类型为IOptions的服务示例,后者的Value就是配置绑定生成的Options对象。 阅读全文
posted @ 2016-04-21 22:25 Artech 阅读(3856) 评论(8) 推荐(6) 编辑
摘要:出于编程上的便利,我们通常不会直接利用ConfigurationBuilder创建的Configuration对象读取某个单一配置项的值,而是倾向于将一组相关的配置绑定为一个对象,我们将后者称为Options对象。我们在本章第一节通过简单的实例演示了如何利用Options模型实现了配置数据向Options对象的绑定,现在我们对Options模型背后的实现原理进行详细介绍。 阅读全文
posted @ 2016-04-20 21:19 Artech 阅读(3906) 评论(5) 推荐(10) 编辑
摘要:在上面一章我们以实例演示的方式介绍了几种读取配置的几种方式,其中涉及到三个重要的对象,它们分别是承载结构化配置信息的Configuration,提供原始配置源数据的ConfigurationProvider,以及作为“中间人”的ConfigurationBuilder。现在我们对 以这三个对象为核心的配置模型进行深入介绍。 阅读全文
posted @ 2016-04-19 22:07 Artech 阅读(5480) 评论(9) 推荐(18) 编辑
摘要:提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中。到了.NET Core的时候,很多我们习以为常的东西都发生了改变,其中也包括定义配置的方式。总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源。我们可以采用内存的变量作为配置的数据源,也可以直接配置定义在持久化的文件甚至数据库中。 阅读全文
posted @ 2016-04-17 22:52 Artech 阅读(20088) 评论(32) 推荐(38) 编辑
摘要:到目前为止,我们定义的ServiceProvider已经实现了基本的服务提供和回收功能,但是依然漏掉了一些必需的细节特性。这些特性包括如何针对IServiceProvider接口提供一个ServiceProvider对象,何创建ServiceScope,以及如何提供一个服务实例的集合。 阅读全文
posted @ 2016-04-16 23:21 Artech 阅读(4832) 评论(4) 推荐(11) 编辑
摘要:通过上一篇的介绍我们应该对实现在ServiceProvider的总体设计有了一个大致的了解,但是我们刻意回避一个重要的话题,即服务实例最终究竟是采用何种方式提供出来的。ServiceProvider最终采用何种方式提供我们所需的服务实例取决于最终选择了怎样的ServiceCallSite,而服务注册是采用的ServiceDescriptor有决定了ServiceCallSite类型的选择。我们将众多不同类型的ServiceCallSite大体分成两组,一组用来创建最终的服务实例,另一类则与生命周期的管理有关。 阅读全文
posted @ 2016-04-12 22:52 Artech 阅读(4435) 评论(6) 推荐(14) 编辑
摘要:本系列前面的文章我们主要以编程的角度对ASP.NET Core的依赖注入系统进行了详细的介绍,如果读者朋友们对这些内容具有深刻的理解,我相信你们已经可以正确是使用这些与依赖注入相关的API了。如果你还对这个依赖注入系统底层的实现原理具有好奇心,可以继续阅读这一节的内容。 阅读全文
posted @ 2016-04-11 22:14 Artech 阅读(14509) 评论(11) 推荐(22) 编辑
摘要:ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationInstance和ImplementationFactory属性均为Null,那么ServiceProvider最终会利用其ImplementationType属性返回的真实类型选择一个适合的构造函数来创建最终的服务实例。我们知道服务服务的真实类型可以定义了多个构造函数,那么ServiceProvider针对构造函数的选择会采用怎样的策略呢? 阅读全文
posted @ 2016-04-10 21:21 Artech 阅读(14484) 评论(34) 推荐(38) 编辑
摘要:在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象。ASP.NET Core中的DI容器体现为一个实现了IServiceProvider接口的对象。ASP.NET Core针对依赖注入的编程主要体现在两个方面:其一,创建一个ServiceCollection对象并将服务注册信息以ServiceDescriptor对象的形式添加其中;其二,针对ServiceCollection对象创建对应的ServiceProvider并利用它提供我们需要的服务实例。 阅读全文
posted @ 2016-04-06 19:03 Artech 阅读(29707) 评论(30) 推荐(68) 编辑
摘要:IoC主要体现了这样一种设计思想:通过将一组通用流程的控制从应用转移到框架之中以实现对流程的复用,同时采用“好莱坞原则”是应用程序以被动的方式实现对流程的定制。我们可以采用若干设计模式以不同的方式实现IoC,比如我们在上面介绍的模板方法、工厂方法和抽象工厂,接下来我们介绍一种更为有价值的IoC模式,即依赖注入(DI:Dependency Injection,以下简称DI)。 阅读全文
posted @ 2016-04-05 19:52 Artech 阅读(33407) 评论(36) 推荐(68) 编辑
摘要:ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了“标准化”,我们将这些标准化的组件称为服务,ASP.NET在内部专门维护了一个DI容器来提供所需的服务。要了解这个DI容器以及现实其中的服务提供机制,我们先得知道什么是DI(Dependence Injection),而一旦我们提到DI,又不得不说IoC(Inverse of Control)。 阅读全文
posted @ 2016-04-04 19:37 Artech 阅读(44896) 评论(113) 推荐(215) 编辑
摘要:ReactJS学习日志 阅读全文
posted @ 2015-09-16 10:34 Artech 阅读(8782) 评论(14) 推荐(5) 编辑
摘要:这是昨天一个同事遇到的问题,我觉得这是一个蛮大的问题,而且应该不是ASP.NET MVC的设计者有意为之,换言之,这可能是ASP.NET MVC的一个大Bug。 阅读全文
posted @ 2015-07-17 17:18 Artech 阅读(11475) 评论(33) 推荐(20) 编辑
摘要:设置自定义的入口程序体现应用本身与应用托管之间的分离,它使我们可以创建独立于托管环境的应用,并根据需要寄宿于任何一个我们希望的宿主程序下,对于Web应用来说这一点尤为重要。对于之前的Web应用来说,IIS是它们唯一的宿主,但是ASP.NET 5应用却可以将我们指定的入口程序作为宿主。如果将应用寄宿于我们指定的宿主程序,这样的寄宿方式被称为Self-Host,接下来我们通过一个具体的例子来演示如何定义一个简单的ASP.NET MVC应用,并采用Self-Host的方式启动它。 阅读全文
posted @ 2014-12-09 09:25 Artech 阅读(14033) 评论(31) 推荐(27) 编辑
摘要:对于上面创建的这个Hello World应用来说,程序入口点由应用自身来提供,所以应用本身具有自我执行的能力。从应用托管(Host)的角度来讲,这样的应用同时负责对自身的托管。将应用与托管环境独立起来其实是更好的选择,因为这样可以使同一个应用运行于不同的环境中。接下来我们就来演示如何为应用指定入口程序来达到应用与应用托管的分离。 阅读全文
posted @ 2014-12-08 17:37 Artech 阅读(7924) 评论(21) 推荐(12) 编辑
摘要:微软在开发ASP.NET 5(当时被称为ASP.NET vNext)是采用的代号为Project K,所以运行时被称为KRuntime。KRuntime是一个SDK,它包含了编译和运行应用程序的所有资源。接下来我们通过三个Hello World实例来演示如何利用KRuntime让我们编写的应用运行起来。这三个实例如此的简单,以至于我们根本不需要利用IDE来编写。作为第一个Hello World应用,我们会编写一个包含入口点的程序,并通过执行KRuntime的K.cmd命令来启动它。 阅读全文
posted @ 2014-12-08 10:47 Artech 阅读(12871) 评论(25) 推荐(32) 编辑
摘要:上次针对《ASP.NET Web API 2框架揭秘》举办了一次评论赠书活动,很多人问我相同的活动要不要针对《ASP.NET MVC 5框架揭秘》再来一次,为此我向出版社要了10本,其中5本以评论博客的形式送出,另5本则以转发微博的形式送出. 阅读全文
posted @ 2014-08-18 11:51 Artech 阅读(13234) 评论(1364) 推荐(38) 编辑
摘要:今天算是新作《ASP.NET MVC 5框架揭秘》正式上架销售的日子(目前本书在互动网已经到货),为了让更多适合的朋友们能够阅读此书,同时也避免让不适合的读者误买此书,特将此书的样章发布出来。 阅读全文
posted @ 2014-08-14 21:37 Artech 阅读(12546) 评论(101) 推荐(25) 编辑
摘要:本书以一个模拟ASP.NET MVC内部运行机制的“迷你版MVC框架”作为开篇,其目的在于将ASP.NET MVC真实架构的“全景”勾勒出来。接下来本书以请求消息在ASP.NET MVC框架内部的流向为主线将相关的知识点串连起来,力求将”黑盒式”的消息处理管道清晰透明地展示在读者面前。相信精读本书的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的执行以及View的呈现等相关的机制具有深刻的理解。本书以实例演示的方式介绍了很多与ASP.NET MVC相关的最佳实践,同时还提供了一系列实用性的扩展,相信它们一定能够解决你在真实开发过程中遇到的很多问题。本书最后一章提供的案例不仅仅用于演示实践中的ASP.NET MVC,很多的架构设计方面的东西也包含其中。除此之 阅读全文
posted @ 2014-08-07 15:28 Artech 阅读(44663) 评论(257) 推荐(107) 编辑
摘要:在继《WCF全面解析》、《ASP.NET MVC 4框架揭秘》之后,我的另一本书《ASP.NET Web API 2框架揭秘》于本月正式出版,《ASP.NET MVC 5框架揭秘》也即将推出。这几本上算畅销的技术书籍的出版源于多年写博客的积累,所以离不开博客园这个平台和广大网友的支持。作为回馈,我也学学汤姆大叔来一个评论送书活动。 阅读全文
posted @ 2014-07-14 08:15 Artech 阅读(16508) 评论(3471) 推荐(85) 编辑
摘要:《ASP.NET Web API 2框架揭秘》以实例演示的方式介绍了很多与ASP.NET Web API相关的最佳实践,同时还提供了一系列实用性的扩展。本书详细讲解了ASP.NET Web API从接收请求到响应回复的整个流程,包括路由、Http Controller的激活、Action方法的选择与执行、参数的绑定与验证、过滤器的执行和安全等相关的机制。 阅读全文
posted @ 2014-07-07 22:21 Artech 阅读(18381) 评论(116) 推荐(35) 编辑
摘要:本书以实例演示的方式介绍了很多与ASP.NET Web API相关的最佳实践,同时还提供了一系列实用性的扩展。本书详细讲解了ASP.NET Web API从接收请求到响应回复的整个流程,包括路由、Http Controller的激活、Action方法的选择与执行、参数的绑定与验证、过滤器的执行和安全等相关的机制。除此之外,本书在很多章节还从设计的角度对ASP.NET Web API的架构进行了深入分析,所以可以将本书当作一本架构设计的书来读。虽然与市面上任何一本相关的书相比,本书走得更远并更加近距离地触及到ASP.NET Web API框架的内核,但是就其内容本身来讲却没有涉及太多“高深莫测”的知识点,所以阅读本书不存在太高的门槛。如果你觉得自己对ASP.NET Web API所知甚少,可以利用此书来系统地学习ASP.NET Web API;如果你觉得自己对ASP.NET Web API足够精通,也一 阅读全文
posted @ 2014-07-07 21:07 Artech 阅读(15868) 评论(75) 推荐(26) 编辑
摘要:在《ASP.NET MVC下的四种验证编程方式》一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式(“手工验证”、“标注ValidationAttribute特性”、“让数据类型实现IValidatableObject或者IDataErrorInfo”),那么在ASP.NET MVC框架内部是如何提供针对这四种不同编程方式的支持的呢?接下来我们就来聊聊这背后的故事。 阅读全文
posted @ 2014-04-29 08:44 Artech 阅读(9907) 评论(23) 推荐(19) 编辑
摘要:由于频繁地使用反射会影响性能,所以ASP.NET MVC采用了表达式树的方式来执行目标Action方法。具体来说,ASP.NET MVC会构建一个表达式来体现针对目标Action方法的执行,并且将该表达式编译成可执行代码。编译后的可执行代码体现为一个委托对象,该委托对象会被缓存起来以用于针对同一个Action方法的执行。为了让大家能够和直观地理解两种(直接利用反射和利用表达式编译后的委托对象)方法执行在性能上的差异,我们来做一个简单的实例演示 阅读全文
posted @ 2014-04-17 08:44 Artech 阅读(9622) 评论(31) 推荐(30) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 19 下一页