.NET Core学习之路

官方文档:https://docs.microsoft.com/zh-cn/dotnet/ 

官方资讯:.NET Blog

简析.NET Core 以及与 .NET Framework的关系

.NET Core全面扫盲贴

工具先行

图解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 文件来加载不同的配置,取决于我们应用程序当前所处环境

更多参考:ASP.NET Core 如何设置发布环境

 

三、记录接口访问日志

 .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 的正确姿势

理论篇

1、教程:ASP.NET Core 入门

系统必备:.NET Core 2.2 SDK

ASP.NET Core免费(视频)教程汇总

简明 ASP.NET Core 手册

2、老张的哲学 【强烈推荐】

部分解释:

可能是你还没在UseSwaggerMildd中添加ApiVersions版本的代码。

        【注意 index.html属性为 嵌入的资源】 

 

其他问题

1、页面输出中文乱码,参考:【看第一条评论】asp.net core输出中文乱码的问题

EF Core CodeFirst实践 ( 使用MS SqlServer)

在文件资源管理器中找到这个项目,找到 project.json文件【这一步不需要。core2.0中没有了此文件】

未找到与命令“dotnet-ef“匹配的可执行文件

编辑csproj文件,在相应位置加入以下:

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
 博客参考:大内老A
 
https:
如果你的项目已经创建好了并且勾选那个 HTTPS选项,每次访问都是HTTPS的,但是你不想这么做,可以在 launthSettings.json 文件中,把sslPort 端口号改成0即可

实战篇

Asp.net Core WebAPI

ASP.NET Core Web API 最佳实践指南

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

两种发布模式:

  1. 以自包含(独立)的方式发布应用程序

      这种模式包含.NET运行时和应用程序及其依赖项的应用程序。我们可以在未安装.NET运行时的操作系统上运行它。

      总结一句话:把.NET Runtime运行时打包到程序运行目录中,应用程序运行的主机不需要安装.NET Runtime运行时。

  2. 以依赖于框架的方式发布应用程序

      生成一个仅包含应用程序本身及其依赖项的应用程序。应用程序的运行环境必须单独安装.NET运行时。

      总结一句话:不包含.NET Runtime运行时,只有应用程序本身和依赖的应用程序。应用程序运行的主机需要单独安装应用程序所需的.NET Runtime运行时。

快速搞懂.NET 5/.NET Core应用程序的发布部署

机器学习

ML.NET学习

其他参考

.Net Core 微服务容器系列基础目录篇

微服务根据自己的需要,而不是选什么框架
可以看看这个基于.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

报错

1、NetCore程序在发布的时候,找不到xxx包,源a,b中不存在具有此ID的包

 

需要上Nuget下载这些包

 

posted @ 2021-08-07 21:21  peterYong  阅读(774)  评论(0编辑  收藏  举报