随笔分类 - Technology
摘要:Spring Cloud Sleuth提供了分布式追踪(distributed tracing)的一个解决方案。其基本思路是在服务调用的请求和响应中加入ID,标明上下游请求的关系。利用这些信息,可以方便地分析服务调用链路和服务间的依赖关系。 Only Sleuth 在Spring Tool Suit
阅读全文
摘要:在分布式系统中,服务发生异常是很正常的现象。为了处理这类“例外”,可以采取不同的应对策略,断路器模式即是其中一种方法。这个模式的主要特点是其可以阻断失败的级联影响,不会因为一个服务的失败导致其它关联服务一并失败。 在Spring Cloud生态系统中有Hystrix类库可以提供这个模式的解决方案,而
阅读全文
摘要:Spring Cloud Hystrix是一个容错库,它实现了断路器模式,使得当服务发生异常时,会自动切断连接,并将请求引导至预设的回调方法。 服务端 在Spring Tool Suite的文件菜单中,点击新建Spring Starter Project。建立一个普通的Restful风格的服务。 a
阅读全文
摘要:在前文 "一窥Spring Cloud Eureka" 中,已经构建了基于Eureka的服务端与客户端,可用于实现服务注册与发现功能。而借助Steeltoe的类库,可以在.NET生态系统中使用Spring Cloud的现有模块。 Package 对于ASP.NET Core,使用 类库。 对于Con
阅读全文
摘要:在Spring Cloud中Eureka负责服务发现功能。服务发现需要解决如何找到服务提供者在网络中位置的问题。 服务端 在Spring Tool Suite的文件菜单中,点击新建Spring Starter Project。 然后在入口方法加上 标记。 接着,在application.proper
阅读全文
摘要:Steeltoe是一款开源项目,其目标是选取源自Netflix及其它公司的工具,使它们能够运用于.NET社区。它不仅可以在.NET Core上,也可以在.NET Framework 4.X以上使用。此外,大多数的组件能够同时运行在本地机器及Cloud Foundry(一个领先的云应用平台)之上。 S
阅读全文
摘要:Spring Cloud Config提供了分布式系统中配置功能的服务端与客户端支持。对于不同环境的应用程序它的服务端提供了一种中心化的配置管理方式。并且其不仅适用于Spring的应用程序,其它语言开发的程序同样能够使用(这点很重要)。 环境要求 首先需要安装 "JDK1.8" 或以上版本 IDE可
阅读全文
摘要:在.NET世界,如果想要对数据库进行操作,总少不了ADO.NET的身影。在.NET Core里同样离不开那些熟悉的类库与API。这里简略地介绍下如何通过ADO.NET对SQL Server进行不同的处理。 System.Data.SqlClient 第一步先在项目工程中查看有无System.Data
阅读全文
摘要:SQL Server 2017版本已经可以在Linux系统上安装,但我在尝试.NET Core跨平台开发的时候使用的是Mac系统,所以这里记录了在Mac上安装SQL Server的过程。 最新的SQL Server没有专门为Mac系统准备安装包,但由于Mac系统上支持Docker,所以可以用一种变通
阅读全文
摘要:当一个Action完成它的任务后,通常需要返回一个实现IActionResult的对象,而最常见的就是View或者ViewResult,所谓的视图对象。那么视图与最终所看到的页面之间的联系又是怎样形成的,这便是本文想要探讨的问题。 在ResourceInvoker类之中,可以找到下列的代码。这些代码
阅读全文
摘要:ASP.NET Core MVC中的Filter作用是在请求处理管道的某些阶段之前或之后可以运行特定的代码。 Filter特性在之前的ASP.NET MVC中已经出现,但过去只有Authorization,Exception,Action,Result四种类型,现在又增加了一种Resource类型。
阅读全文
摘要:ASP.NET Core MVC中所提供的Model Binding功能简单但实用,其主要目的是将请求中包含的数据映射到action的方法参数中。这样就避免了开发者像在Web Forms时代那样需要从Request类中手动获取数据的繁锁操作,直接提高了开发效率。此功能继承自ASP.NET MVC,所
阅读全文
摘要:在叙述 "Controller" 一文中,有一处未做解释,即CreateControllerFactory方法中ControllerActionDescriptor参数是如何产生的。这是因为其与Action的关联性更大,所以放在本文中继续描述。 回到MvcRouteHandler或者MvcAttri
阅读全文
摘要:在理清 "路由" 的工作流程后,接下来需要考虑的,是MVC框架如何生成Controller以及它的生成时机。 根据以前ASP.NET MVC的经验,Controller应该是由一个ControllerFactory构建的。查看ASP.NET Core MVC的源码,果然是有一个DefaultCont
阅读全文
摘要:有过ASP.NET或其它现代Web框架开发经历的开发者对路由这一名字应该不陌生。如果要用一句话解释什么是路由,可以这样形容:通过对URL的解析,指定相应的处理程序。 回忆下在Web Forms应用程序中使用路由的方式: 然后是MVC应用程序: 再到了ASP.NET Core: 还可以用更简单的写法:
阅读全文
摘要:熟悉ASP.NET的开发者一定对web.config文件不陌生。在ASP.NET环境中,要想添加配置参数,一般也都会在此文件中操作。其中最常用的莫过于AppSettings与ConnectionStrings两项。而要在代码中获得文件中的配置信息,ConfigurationManager则是必不可少
阅读全文
摘要:本文主要是对 ".NET Core开发日志——Middleware" 的补遗,但是会从看起来平平无奇的RequestDelegate开始叙述,所以以其作为标题,也是合情合理。 RequestDelegate是一种委托类型,其全貌为 ,MSDN上对它的解释,"A function that can p
阅读全文
摘要:依赖注入(DI)不是一个新的话题,它的出现是伴随着系统解耦的需要而几乎必然产生的。 在SOLID设计原则中,DIP(Dependency inversion principle)——依赖倒置,规定了“需依赖抽象,而非实现”的准则,该原则主要目的是通过引入抽象(比如接口)的方式降低模块之间的耦合性。与
阅读全文
摘要:一个典型的ASP.NET Core应用程序会包含Program与Startup两个文件。Program类中有应用程序的入口方法Main,其中的处理逻辑通常是创建一个WebHostBuilder,再生成WebHost,最后启动之。 而在创建WebHostBuilder时又会常常会指定一个Startup
阅读全文
摘要:之前的文章记述了 "从ASP.NET Core Module到KestrelServer" 的请求处理过程。现在该聊聊如何生成ASP.NET中我们所熟悉的HttpContext。 当KestrelServer启动时,会绑定相应的IP地址,同时在绑定时将加入HttpConnectionMiddlewa
阅读全文