.NET Core .NET Core是适用于 Windows、Linux 和 macOS 的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台能力的应用程序开发框架 (Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台,也是微软在一开始发展时就开源的软件平台 ,它经常也会拿来和现有的开源 .NET 平台 Mono 比较。
微软在2002年推出了第一个版本的 .NET Framework,这是一个主要面向Windows 桌面(Windows Forms)和服务器(ASP.NET Web Forms)的基础框架。在此之后,
时间:2020-10-24
旨在生成Options对象的配置绑定实现在IConfiguration接口的扩展方法Bind上。配置绑定的目标类型可以是一个简单的基元类型,也可以是一个自定义数据类型,还可以是一个数组、集合或者字典类
时间:2020-10-24
对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可。当.NET Core跨出了Windows的围栏,正式拥抱其他平台
时间:2020-10-24
提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两
时间:2020-10-24
如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择。一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R
时间:2020-10-24
ConfigurationBuilder在生成以Configuration对象的时候会利用注册其中的ConfigurationProvider加载原始的配置数据,那么一旦配置源中的数据发生变化,应用程
时间:2020-10-24
在《.NET Core采用的全新配置系统[1]: 读取配置数据》中,我们通过实例的方式演示了几种典型的配置读取方式,其主要目的在于使读者朋友们从编程的角度对.NET Core的这个全新的配置系统具有一
时间:2020-10-24
提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两
时间:2020-10-24
由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止。出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得
时间:2020-10-24
对于一个控制台应用,比如采用控制台应用作为宿主的ASP.NET Core应用,我们可以将记录的日志直接输出到控制台上。针对控制台的Logger是一个类型为ConsoleLogger的对象,Consol
时间:2020-10-24
ASP.NET Core 具有很多针对文件读取的应用。比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取。如果用户发送一个针对物理文件的HTTP请求,应用会根据指定的路径读取目
时间:2020-10-24
作为这个星球上最强大的IDE,Visual Studio不仅仅提供了很多原生的特性,更重要的是它是一个可定制的IDE,比如自定义Project Template和Item Template就是一个非常
时间:2020-10-24
ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI
时间:2020-10-24
较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持。我们可以将内存变量、命令行参
时间:2020-10-24
ASP.NET Core应用中使用得最多的还是具体的物理文件,比如配置文件、View文件以及网页上的静态文件,物理文件系统的抽象通过PhysicalFileProvider这个FileProvider
时间:2020-10-24
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的
时间:2020-10-24
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的。如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间
时间:2020-10-24
.NET Core 使用Nuget包一般是先写入csproj文件,然后下载保存在\bin\Debug\netcoreapp2.0\publish\下,所以可以采用如下方案进行删除操作(其中netcoreapp2.0是.NET Core版本)。 第一种:修改配置和手动删除文件(不建议) 对于任何系统环境下都有效,直接修改csproj文件,nuget包都包含在这个文件下,修改后删除你本地相同包名称的文
时间:2020-10-09
public Class SysActionAttribute :Attribute, IActionFilter // Attribute 用于控制器中 特性控制,当在控制器或控制器的Action加使用过滤器时只须加【SysActionAttribute 】即可 { pubic void onActionExicuting(ActionExcutedContext
时间:2020-10-15
Entity Framework在.NET Core中被命名为Entity Framework Core。虽然一般会用于对SQL Server数据库进行数据操作,但其实它还支持其它数据库,这里就以PostgreSQL作为例子。 PostgreSQL PostgreSQL可以选用原生系统与Docker两种安装方式。 Official Docker Package 在应用程序工程中添加相关的引用。 d
时间:2020-08-07
前言 swagger是一个api文档自动生动工具,还集成了在线调试. 可以为项目自动生成接口文档, 非常的方便快捷 Swashbuckle.AspNetCore 是一个开源项目,用于生成 ASP.NET Core Web API 的 Swagger 文档. 本文采用这个! 一. 利用nuget添加引用 washbuckle.AspNetCore 二. 在 Startup.cs 里面注册服务,
时间:2020-08-05
我的目标是dotnet-test-mstest“:”我的测试项目中的dotnet core rc2上的1.0.1预览. 编辑: 好的.我的目标是桌面.NET.但这不应该有任何区别. project.json {
"version": "1.0.0-*",
"testRunner": "mstest",
"dependencies": {
"Betgame
时间:2020-09-05
ASP.NET Core 1.0 是 ASP.NET 的完全重新编写,这个新框架的主要目标之一就是更多的模块化设计。即,应用应该能够仅利用其所需的框架部分,方法是框架在它们请求时提供依赖关系。此外,使用 ASP.NET Core 构建应用的开发人员应该能够利用这一相同功能保持其应用松散耦合和模块化。借助 ASP.NET MVC,ASP.NET 团队极大地提高了框架的支持以便编写松散耦合代码,但仍非
时间:2020-09-13
在本专栏中,我将继续深入探讨 .NET Core,并重点探讨 .NET Core 依赖关系注入 (DI) 功能,以及如何利用这些功能启用控制反转 (IoC) 模式。如前所述,可以从“传统的”CSPROJ 文件和新兴的 project.json 类型的项目中利用 .NET Core 功能。对于示例代码,这一次我会使用来自 project.json 项目的 XUnit。 为什么使用依赖关系注入? 使用
时间:2020-09-13
前言 DIP、IoC、DI 说起DI不得不提IoC这个模式,很多人会把DI和IoC混为一谈,但其实这两者是概念和实现的关系。 依赖倒置原则(DIP):软件设计原则,要依赖于抽象,不要依赖具体实现。 控制反转(IoC):一种实现DIP原则的模式。 依赖注入(DI):IoC的具体实现。 DIP就好比一个目标一个法则。 IoC就好比是论文,“应该怎么做才能遵循DIP” DI就好比是实际的产品,“落实到具
时间:2020-09-13
上一篇“拥抱.NET Core系列:依赖注入(1)大体介绍了服务注册、获取和生命周期,这一篇来做一些补充。由于内容跨度大(.NET Core、ASP.NET Core),所以文章并不是非常的贯穿,大家可以挑着看。 构造函数的选择 如果一个服务中包含多个构造函数,.NET Core会选择哪一个呢? 答案是:最大匹配的构造函数。 我们来看个示例 泛型服务 单个泛型 多个泛型 集成第三方DI容器 我们这
时间:2020-09-13
基本使用 DI1 就不多说了,相信大家多多少少都有所了解。 我们直接上代码,首先新建一个控制台应用程序。 定义示例所使用的接口 public interface IAnimal
{
void Say();
} 实现此接口 public class Cat : IAnimal
{
public void Say()
{
Console.WriteLine("喵
时间:2020-09-13
该系列第1篇: 讲述了如何创造"缝". "缝"(seam)是需要知道的概念. 本文是第2篇, 介绍的是如何避免在构建对象时写出不易测试的代码. 本文的概念性内容大部分都来自Misko Hevery的这篇博客文章. 构建 还是用上文里汽车的例子. 通常情况下, 我们是先去建造汽车, 组装好汽车后, 我们再去驾驶它. 软件开发也类似, 我们应该把对象构造完毕之后, 再去用它. 但是有时候, 开发者会
时间:2020-09-13
第1篇: 讲述了如何创造"缝". "缝"(seam)是需要知道的概念. 第2篇, 避免在构建对象时写出不易测试的代码. 第3篇, 依赖项和迪米特法则. 本文是第4篇, 将介绍全局状态引起的问题. 全局状态 全局状态, 也可以叫做应用程序状态, 它是一组变量, 这些变量维护着应用程序的高级状态. 在程序里, 全局状态可能都存放在一个全局状态对象里, 例如ASP.NET里面的HttpContex
时间:2020-09-13
第1篇: 讲述了如何创造"缝". "缝"(seam)是需要知道的概念. 第2篇, 避免在构建对象时写出不易测试的代码. 第3篇, 依赖项和迪米特法则. 第4篇, 全局状态引起的问题. 本文是第5篇, 也是最后一篇, 介绍的是单一职责 类做了太多的工作 例子, 某软件公司, 原有项目开发, 测试, 售前, 售后, 财务等员工. 后来由于公司没钱, 裁掉了测试, 让开发兼职; 过了段时间, 又裁
时间:2020-09-13