ASP.Net Core实战——初识.NetCore

什么是.NetCore

.NET Core是适用于 Windows、Linux 和 macOS 的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台能力的应用程序开发框架 (Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台,也是微软在一开始发展时就开源的软件平台。可用于构建各种软件,包括Web应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、游戏和物联网应用程序。
在这里插入图片描述

.NetCore的转变

框架思想的变化

随着市场环境的变化,前端框架的流行与多端应用的风靡(Windows应用,Web应用,APP,小程序),数据内容、业务过程与页面展示功能结构的进一步专业化,前后端分离的特征愈发明显,虽然通过MVC实现了一定程度的前后端分离,但是并不彻底,加之开源技术和跨平台技术给微软相当大的压力,促使微软不得不拥抱开源和跨平台,于是微软推出了跨平台解决方案.NET Core。

简化的设计

在.net core中改变了所有组件全部打包的传统做法,使用中间件和服务实例,按需加载所需要的功能组件,这对系统的轻量化有了很大的进步,极大地促进了系统的灵活性与组合方向。
在这里插入图片描述

依赖注入

依赖注入是ASP.Net Core的核心,当一个类需要另一个类协作来完成工作的时候就产生了依赖。比如我们在AccountController这个控制器需要完成和用户相关的注册、登录 等事情。其中的登录我们由EF结合Idnetity来完成,所以我们封装了一个EFLoginService,这里AccountController就有一个ILoginService的依赖。
在这里插入图片描述
在这种写法中能够看到AccountController对EFLoginService依赖。

private ILoginService<User> _loginService;
public AccountController()
{
    
    
  _loginService = new EFLoginService()
}

但是当LoginService发生改变,需要RedisLoginService,那么我们在修改LoginService的同时,还需要修改AccountController,这样对AccountController的侵入性很强。

public AccountController(ILoginService<User> loginService)
{
    
    
  _loginService = loginService;
}

我们只是要使用它,应该由调用者给出,而不是自己去创建,于是通过构造函数让外界把这两个依赖传进来。
自己只负责使用依赖,其它人丢给你依赖的这个过程理解为注入。
网上有很多的栗子,有兴趣的小伙伴可以取尝尝,比如小明的手机。

跨平台

Kestrel 是一个跨平台的适用于 ASP.NET Core 的 Web 服务器。 Kestrel 是 Web 服务器,默认包括在 ASP.NET Core 项目模板中。
可以单独使用 Kestrel,也可以将其与反向代理服务器(如 Internet Information Services (IIS)、Nginx 或 Apache)结合使用。 反向代理服务器接收来自网络的 HTTP 请求,并将这些请求转发到 Kestrel。
Kestrel 用作边缘(面向 Internet)Web 服务器:
Kestrel 直接与 Internet 通信,不使用反向代理服务器
在这里插入图片描述
Kestrel 用于反向代理配置:
在这里插入图片描述
Kestrel 通过反向代理服务器(如 IIS、Nginx 或 Apache)间接与 Internet 进行通信

无论配置是否使用反向代理服务器,都是受支持的托管配置。
在没有反向代理服务器的情况下用作边缘服务器的 Kestrel 不支持在多个进程间共享相同的 IP 和端口。 如果将 Kestrel 配置为侦听某个端口,Kestrel 会处理该端口的所有流量(无视请求的 Host 标头)。 可以共享端口的反向代理能在唯一的 IP 和端口上将请求转发至 Kestrel。
即使不需要反向代理服务器,使用反向代理服务器可能也是个不错的选择。

反向代理:

  • 可以限制所承载的应用中的公开的公共外围应用。
  • 提供额外的配置和防护层。
  • 可以更好地与现有基础结构集成。
  • 简化了负载均和和安全通信 (HTTPS) 配置。 仅反向代理服务器需要 X.509 证书,并且该服务器可使用普通HTTP 在内部网络上与应用服务器通信。

第一个.NetCore项目

打开VS2019,创建一个ASP.NET Core项目,这里需要注意一下,最新的.net core 需要VS2019才能很好地支持,2017的选项中没有3.1版本的勾选项。
在这里插入图片描述
到了这里,新建了一个MVC项目,看起来是不是很熟悉,asp.net的感觉迎面而来。
在这里插入图片描述
引用不见了
.NET Core 的类库采用 NuGet 包化的架构,应用程序只需要使用 project.json 的 dependencies 区块加入指定包版本的参考,就能获得该包的功能,与以往 .NET Framework 大包式的提供方法完全不同。.NET Core 团队宣布己经有 98% 的 .NET Framework 主要类库移转到 .NET Core 平台。所以想要引用特殊的功能组件需要到NuGet包中去添加。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u010796249/article/details/108415028