官方文档:https://docs.microsoft.com/zh-cn/dotnet/
官方资讯:.NET Blog
简析.NET Core 以及与 .NET Framework的关系
工具先行
图解VS 2017升级并安装.NET Core 2.1 SDK
Ubuntu18.04上安装.NET Core(dotnet-sdk)
下载 SDK 地址 :https://dotnet.microsoft.com/download
SDK 和 RunTime 的区别: 1、SDK 是用来开发 NetCore 的,内部捆绑了 Runtime 运行时; 2、但是如果只想运行 NetCore 项目的话,只需要在服务器中安装 Runtime 运行时即可;
.NET Core
ASP.NET Core
一、设计思想
1、约定优于配置
2、默认存在的组件简单(不该有的东西不加入框架),易于扩展
二、基于环境的配置:
当我们开发应用程序时,它处于开发环境。但是一旦我们发布之后,它将处于生产环境。因此,将每个环境进行隔离配置往往是一种好的实践方式。
在 .NET Core 中,这一点很容易实现。一旦我们创建好了项目,就已经有一个 appsettings.json
文件,当我们展开它时会看到 appsettings.Development.json
文件:
此文件中的所有设置将用于开发环境。
我们应该添加另一个文件 appsettings.Production.json
,将其用于生产环境:
设置修改后,我们就可以通过不同的 appsettings 文件来加载不同的配置,取决于我们应用程序当前所处环境
三、记录接口访问日志
.NET Framework WebApi 记录接口访问日志,一般是通过Filter的方式进行拦截,通过重写ActionFilterAttribute的OnActionExecuting实现拦截记录Request内容,通过重写OnActionExecuted实现拦截记录Response内容
.Net Core WebApi 下通过中间件的拦截方式记录接口访问日志,关键部分是通过读取获取 Request.Body 时需要开启 Request.EnableRewind () 启用倒带功能,即可以读取多次【.NET Core 3.0 中被改名为 EnableBuffering】。
参考:
ASP.NET Core 入门(2)(WebApi接口请求日志 Request和Response)
ASP.NET Core 中读取 Request.Body 的正确姿势
理论篇
系统必备:.NET Core 2.2 SDK
2、老张的哲学 【强烈推荐】
部分解释:
可能是你还没在UseSwaggerMildd中添加ApiVersions版本的代码。
- 从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之四 || Swagger的使用 3.2 中的 9、自定义 Swagger Index 静态页模板
【注意 index.html属性为 嵌入的资源】
其他问题
1、页面输出中文乱码,参考:【看第一条评论】asp.net core输出中文乱码的问题
EF Core CodeFirst实践 ( 使用MS SqlServer)
在文件资源管理器中找到这个项目,找到 project.json文件【这一步不需要。core2.0中没有了此文件】
编辑csproj文件,在相应位置加入以下:
<ItemGroup> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> </ItemGroup>
实战篇
Asp.net Core WebAPI
1、Startup类和服务配置:方法:ConfigureServices
是用于服务注册,Configure
方法是向应用程序的请求管道中添加中间件。
最好的方式是保持 ConfigureServices
方法简洁,并且尽可能地具有可读性。当然,我们需要在该方法内部编写代码来注册服务,但是我们可以通过使用 扩展方法
来让我们的代码更加地可读和可维护。
2、项目组织:我们的实体、契约、访问数据库操作、记录信息或者发送邮件的业务逻辑应该始终放在单独的 .NET Core 类库项目中。
3、全局异常处理,参考 如何在ASP.Net Core Web API中实现全局异常处理
从我们的 action 中删除 try-catch
,并将其放在一个集中的地方会是一种更好的方式。.NET Core 给我们提供了一种处理全局异常的方式。
4、使用过滤器来移除重复代码:我们在请求管道的特定状态之前或之后运行一些代码,通过使用 ActionFilter 来代替。
5、路由:应该使用属性路由代替传统路由
发布部署
/home/huy/Publish/News/publish 下执行:dotnet NewsPublish.dll
然后测试下 http://localhost:5000
机器学习
其他参考
微服务根据自己的需要,而不是选什么框架
可以看看这个基于.netcore的小项目,
https://github.com/geffzhang/NanoFabric
https://www.csharpkit.com/microservice.html
还有这个框架也不错 https://github.com/dotnetcore/surging
https://github.com/OrchardCMS/OrchardCore/wiki/Roadmap
这个框架值得研究下
asp.net core 很多设计都来自于Orchard