第 3 章 ASP.NET Core 核心特性 3.5 配置 要访问配置,需要使用 ConfigurationBinder 类,它实现了 IConfigurationBuilder 接口,该接口包括两个重要的方法...API 输出的日志 ASP.NET Core 框架内部集成了日志的功能,主要由以下几个接口组成: Ilogger IloggerProvider IloggerFactory public interface...个日志提供程序,可以调用 ILoggerProvider 接口的 ClearProviders 方法,然后再添加所需要的日志提供程序 ILoggerFacotry 接口用于创建 ILogger 类型的对象...ILoggerFacotry 与 ILogger 一样,可以在程序任何位置注入使用 将日志信息进行分组,需要使用 Scope 来实现,ILogger 接口有一个方法,BeginScope(TState state) 用于创建...Scope 要在 scope 中输出日志,除了创建 scope 外,还要在 ILoggerProvider 对象中启用这一功能,在添加日志提供程序时可以指定该 ILoggerProvider 的一些选项
2.2.2 核心模块--日志 ILogger 的使用 日志的 ID 日志的分类 日志的级别 LoggerProvider 日志的最佳实践 .NET Core 和 ASP.NET Core 中的日志记录:...一般是用于sdk、或者一些基础设施上 开发环境/特殊环境 Debug 1 LogDebug 调试日志:记录一些比较容易出错的一些跟踪信息 开发环境/特殊环境 Information 2 LogInformation...LogCritical 致命:记录信息要求,系统崩溃 生产 None 6 LoggerProvider 源码:https://github.com/aspnet/Logging/tree/master/src/ ILoggerProvider.cs...a type that can create instances of . /// public interface ILoggerProvider...ILoggerProvider>();// 获取容器中所有注入的实例 foreach (var provider in providers) { Console.WriteLine(provider.GetType
Microsoft.Extensions.Logging.Abstractions 有三个主要接口: ILogger 用于输出日志 ILoggerFactory 获取日志接口,并保存日志提供器。...ILoggerProvider 提供日志接口。...通过实现ILoggerProvider接口可以创建自己的日志记录提供程序,比如控制台、文件等,表示可以创建 ILogger 实例的类型。...Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information", "Microsoft": "Warning", "System": "Warning" } 在 ASP.NET...类别 说明 Microsoft.AspNetCore 常规 ASP.NET Core 诊断。 Microsoft.AspNetCore.DataProtection 考虑、找到并使用了哪些密钥。
对象具有一个名为ModelBinder的组件用于完成针对当前参数的Model绑定。...ModelBinder可以看成是整个Model绑定系统的核心,我们先来认识这个重要的组件。[本文已经同步到《How ASP.NET MVC Works?》...在一个通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中定义了如下几个类型,其中FooModelBinder和BarModelBinder是显现了IModelBinder...不过在ASP.NET MVC现有的应用编程接口中并没有定义任何一个实现该接口的ModelBinderProvider类型。...围绕着ModelBinder的Model绑定系统中的核心组件之间的关系基本上可以通过下图所示的UML来表示。 ?
ILoggerProvider ILogger 这些基础接口类.来实现过日志记录....,研究过ASP.NET Core日志记录的同学,应该就很熟悉了..这是ASP.NET Core日志记录的工厂类....也就是为什么我们如果在ASP.NET Core中注入自己的日志记录,也可以通过配置来记录相关的SQL操作的原因. 这里我们主要是直接只监控EF Core的日志....我们发现,这个库还是很强大的.. 因为它是对IQueryable进行的扩展,所以没有数据库不支持的情况..只要有相关的驱动,就可以基于驱动来生成相关的SQL代码.....EF core2.0已经完全可以用于生产环境了..虽然在之前的线路图中答应的事情..比如更方便的映射..比如分组..比如拦截..都延期到了2.1版本..但是这些并不影响它的强大~..
ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...二、RouteContext 接下来我们来了解一下整个路由解析涉及到了几个核心类型,首先来看看为整个路由解析提供执行上下文的这个RouteContext类型。...如上图所示,一个RouteContext上下文包含三个核心对象,一个是代表当前请求上下文的HttpContext对象,对应的属性是HttpContext。...get; set; } 6: 7: public RouteContext(HttpContext httpContext); 8: } 三、RouteData 我们先来看看用于存放路由参数的...值得一提的是RouteValueDictionary具有一个特殊的构造函数,作为唯一参数的是一个object类型的对象。
ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...[本文已经同步到《ASP.NET Core框架揭秘》之中] 目录 一、IRouter接口 二、RouteContext 三、RouteData 四、Route 五、RouteHandler 总结 一...二、RouteContext 接下来我们来了解一下整个路由解析涉及到了几个核心类型,首先来看看为整个路由解析提供执行上下文的这个RouteContext类型。...如上图所示,一个RouteContext上下文包含三个核心对象,一个是代表当前请求上下文的HttpContext对象,对应的属性是HttpContext。...get; set; } 6: 7: public RouteContext(HttpContext httpContext); 8: } 三、RouteData 我们先来看看用于存放路由参数的
数据库连接字符串 在 ASP.NET Core 添加配置片段: { "ConnectionStrings": { "BloggingDatabase": "Server=(localdb)\...,例如数据操作语句,可以在ILoggerProvider中进行配置: public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory...DbLoggerCategory.Database.Command.Name && level == LogLevel.Information, true) }); 配置弹性连接 EF Core 可以根据不同的数据库失败...context.SaveChanges(); transaction.Commit(); } } }); } 此方法同样适用于环境事物...options.UseSqlite("Data Source=blog.db")); } 避免多线程操作 EF Core 提供了async/await操作,但是这是一个语法糖,它并不支持并行操作,这是由于数据库连接的特性限制的
2.MySQL的核心日志 在MySQL数据库中有三个非常重要的日志binlog,undolog,redolog. ...,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。...,读操作只读该事务开始前的数据库的快照。...5.1 三个隐藏字段 DB_ROW_ID 是数据库默认为该行记录生成的唯一隐式主键,DB_TRX_ID 是当前操作该记录的事务 ID ,而 DB_ROLL_PTR 是一个回滚指针,用于配合 undo...undolog:回滚日志,保存了事务发生之前的数据的一个版本,作用: 可以用于回滚 同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。
Alembic 是SQLAlchemy的作者编写的数据库迁移工具。...安装配置 pip install alembic #初始化 alembic init {指定目录,比如 alembic } 配置 将alembic.ini中的sqlalchemy.url改为你数据库地址...上面那种方式是需要手动填充表字段,下面这种方式可以自动生成 https://alembic.sqlalchemy.org/en/latest/autogenerate.html 修改alembic文件夹下的env.py...CategoryModel from core.db.sqlite import Base target_metadata = Base.metadata 一些文档说要知道路径,否则会引入失败;我这用的新版本没遇到这个问题...alembic revision --autogenerate -m "create table" #执行迁移,升到最高版本 alembic upgrade head 生成sql Alembic 的一个主要功能是将迁移生成为
(本篇提供的实例已经汇总到《ASP.NET Core 6框架揭秘-实例演示版》) [S801]将日志输出到控制台和调试窗口(源代码) [S802]利用ILoggerFactory工厂创建Ilogger...如代码片段所示,我们创建了一个ServiceCollection对象,并调用AddLogging扩展方法注册了与日志相关的核心服务,作为依赖注入容器的IServiceProvider对象被构建出来后,我们从中提取出...,还是通过调用AddFilter扩展方法提供的过滤器,设置的日志过滤规则针对的都是所有注册的ILoggerProvider对象,但是有时需要将过滤规则应用到某个具体的ILoggerProvider对象上...ILoggerProvider类型的全名、日志类别和等级。...图5 对ILoggerProvider类型的日志过滤
ASP.NET一堆内建服务,只提供SqlProvider,至于Oracle或MySQL怎么办?...现在Oracle或MySQL也应该是因为微软的不支持,而自己开发相关Provider来提供给他们的数据库使用者及客户。...似乎比微软自己提供的还多,但是还是Beta版的,所以需要正式版的人可能要再多等一阵子....Oracle还提供了在Vistual studio中对Oracle数据库支持的插件的,用Oracle的可以到Oracle网站去看看去,里面有不少的好资源。...database-drivers-not-provided-by-microsoft.aspx AspSQLProvider is a PostgreSQL implementation of the ASP.NET
ASP.NET MVC将这种基于不同数据来源的数据获取/提供机制实现在一个叫做ValueProvider的组件中。[本文已经同步到《How ASP.NET MVC Works?》...,还可以用于数据筛选。...在通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中,我们定义了如下一个默认的HomeController。...MVC以ValueProvider为核心的值提供系统: NameValueCollectionValueProvider ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider...ASP.NET MVC以ValueProvider为核心的值提供系统: ValueProviderFactory
前面篇文章我们分别介绍用真正用于实施Model验证的ModelValidator(《ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator》),以及用于提供...ModelValidator的ModelValidatorProvider(《ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProvider...,整个ModelValidator的提供机制以此三类组件为核心,下图所示的UML体现了它们之间的关系。...1: N/A: Contact ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator ASP.NET MVC以ModelValidator为核心的...Model验证体系: ModelValidatorProvider ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProviders
[本文已经同步到《How ASP.NET MVC Works?》...在通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中创建一个具有如下定义的HomeController。...的不同之处在于它不能用于响应来自客户端的请求,而在某个View中被调用以生成某个部分的HTML。...ASP.NET MVC以ValueProvider为核心的值提供系统: NameValueCollectionValueProvider ASP.NET MVC以ValueProvider为核心的值提供系统...: DictionaryValueProvider ASP.NET MVC以ValueProvider为核心的值提供系统: ValueProviderFactory
在《ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator》中我们介绍了ASP.NET MVC用于Model验证的四种ModelValidator...ASP.NET MVC的很多组件(比如ModelBinder和Filter)都采用了基于Provider的提供机制,这篇文章为你讲述这些ModelValidator对应的ModelValidatorProvider...[本文已经同步到《How ASP.NET MVC Works?》...关联(Association)”实际上代表的是关联的特性列表,即它根据从Model元数据中得到的用于定义验证规则的特性列表来提供相应的ModelValidator。...在通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中我们定义了如下一个实现了IDataErrorInfo接口的Contact类型。
在ASP.NET Model绑定系统中,用于提供数据值的ValueProvider对象通过ValueProviderFactory来创建。...一、ValueProviderFactory 如下面的代码片断所示,ValueProviderFactory是一个抽象类,唯一的抽象方法GetValueProvider用于实现基于指定Controller...以ValueProvider为核心的值提供系统中涉及到了三类组件/类型,即用于具体实现数据值提供的ValueProvider,ValueProvider通过ValueProviderFactotry,而...MVC以ValueProvider为核心的值提供系统: NameValueCollectionValueProvider ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider...ASP.NET MVC以ValueProvider为核心的值提供系统: ValueProviderFactory
虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除了对...也就是说,ASP.NET Web API核心框架的URL路由系统与ASP.NET本身的路由系统是相对独立的。...ASP.NET的路由系统通过RouteData对象来封装解析出来的路由数据,其核心自然是通过Values和DataTokens属性封装的路由变量。...ASP.NET Web API用于封装路由数据的对象被称为HttpRouteData,其类型实现了具有如下定义的接口IHttpRouteData。...ASP.NET Web API管道的HttpConfiguration对象,这依赖于我们对Web API的寄宿方式,这并没有定义在ASP.NET Web API的核心框架之中。
ASP.NET MVC的整个Model验证系统以组件ModelValidator为核心,或者说Model对象的验证最终通过某个ModelValidator对象来完成,所以我们有必要先来认识一下ModelValidator...等)的方式来定义相应的验证规则,这是ASP.NET MVC 提供的默认Model验证方式。...三、ClientModelValidator ClientModelValidator是定义在程序集System.Web.Mvc.dll中的内部类型,在客户端用于数据类型的验证。...如下面的代码片断所示,这两个ClientModelValidator用于表示验证数据类型的字符串分别是“number”和“date”。而表示错误消息的字符串是从内部维护的资源文件中获取的。...如下面的代码片断所示,IDataErrorInfo具有两个成员,只读属性Error用于获取基于自身的错误消息,而只读索引用于返回指定数据成员的错误消息。
领取专属 10元无门槛券
手把手带您无忧上云