第1章 .NET Core微服务架构

1.1微服务架构概述

微服务架构概述:
ASP.NETCore是一个全新的开源、跨平台框架,可以用它来构
建基于网络连接的现代云应用程序,比如: Web应用,loT应用和
移动后端等。
ASP.NET Core可以运行在.NET Core或完整的.NET Framework 2
上,其架构为发布到云端或本地运行的应用提供了一个最佳的开发
框架,由开销很小的模块化组件构成。
 

1.介绍微服务架构的概念、优缺点和设计原则
2. .NET Core技术的特点、组成和安装
3.使用.NET Core CLI和Virsual Studio创建并运
行.NET Core控制台应用程序
4. .NETCore异步编程的概念和使用步骤
 

1. 微服务架构的起源:
2014年,马丁。福勒(MrinoWe)和詹姆斯.刘易斯( Jomes Lewis )
共同提出了微服务的概念,定义了微服务架构是以开发一-组小型服
务的方式来开发一个独立的应用系统,每个服务都以一个独立进程
的方式运行,每个服务与其他服务使用轻量级(通常是HTTP API)
的通信机制。
 

微服务的诞生重要因素与意义:
(1)敏捷开发,减少浪费、快速反馈,以用户体验为目标;
(2)持续交付使开发团队更快、更可靠、更频繁地改进软件;
(3)基础设施即代码帮助开发团队简化环境的管理。
 

2.微服务架构的优缺点:
基于微服务架构的应用程序有以下优点:
(1)每个服务都很小,这样能聚焦一个指定的业务功能或业务需求。
(2)微服务能够被小团队单独开发,可由2~ 5人的开发人员组成。
(3)微服务是松耦合的,是有功能意义的服务,微服务在开发阶段或部署
阶段都是独立的。
(4)微服务能使用不同的语言开发。
(5)微服务易于被开发人员理解、修改和维护。
(6)微服务允许利用最新技术。
(7)微服务只是业务逻辑的代码,不会和HTML、CSS 或其他界面组件混合。
 

基于微服务架构的应用程序有以下缺点:
(1)微服务架构可能带来过多的操作。
(2)微服务的分布式系统可能复杂并难以管理。
(3)分布式系统部署和跟踪问题难。
(4)当服务器数量增加后,管理复杂性增加。
 

3.微服务架构的设计原则:
基于微服务架构程序的设计过程,需遵循以下原则:
(1)垂直划分优先原则:应该根据业务领域对服务进行垂直划分
(2)持续演进原则:微服务开发需要逐步划分和持续演进,避免服务
数量的爆炸性增长。
(3)服务自治、接口隔离原则:服务通过标准的接口隔离,隐藏内
部实现细节。
(4)自动化驱动原则:在服务划分之前,应该首先构建自动化的工
具及环境。
 

4.微服务架构与.NET平台:
微服务架构中需要处理的问题包括服务间通信、服务治理与服
务发现、网关和安全认证、限流与容错以及日志监控等。
(1)第一代微服务框架技术: Dubbo服务框架、Orleans分布式应用
框架等,这些框架与特定编程语言绑定紧密。
(2)第二代微服务框架技术:如Spring Cloud云应用开发框架,这个
框架适合混合开发。
(3)第三代微服务框架技术:以服务网格( Service Mesh )为概念的
新一代框架,如Service Fabric 框架、Istio服务治理框架、Conduit等。
 

1.2 .NET Core 平台简介和安装实践 

1.NET Core平台介绍:
.NET Core平台是适用于Windows、Mac OSX和Linux操作系统免
费的、开源托管的计算机软件平台,是微软公司开发的第一个官方
版本,具有跨平台能力的应用程序开发框架。
未来也将会支持FreeBSD与Alpine平台,也是微软公司在一开始
发展时就开源的软件平台,经常也会拿来和现有的开源.NET平台
Xamarin Mono比较。
 

2..NET Core平台的特点:
.NET Core平台具有以下特点:
(1)跨平台:可以支持在Windows、macOS 和Linux操作系统上运行。
(2)跨体系结构保持一致: 在多个体系结构上以相同的行为运行代码。
(3)命令行工具:包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
(4)部署灵活:可以包含在应用、已安装的并行用户或计算机范围中。
(5)兼容性: .NET Core通过.NET Standard与.NET Framework和Xamarin Mono兼容。
(6)开放源代码: .NET Core平台是开放源代码,使用MIT和Apache 2许可证授权。
(7 )由Microsoft支持: .NET Core由Microsoft提供支持。
 

3..NET Core平台组成:
.NET Core平台组成包括以下部分:
(1) .NET Core运行时:提供类型系统、程序集加载、垃圾回收器、本机互操
作和其他基本服务。.提供基元数据类型、应用编写类型和基本实用程序。
(2) ASP.NET Core运行时:提供框架以生成基于新式云的Internet连接的应用
程序,例如Web应用、loT ( Internet of Things,物联网)应用以及移动后端。
(3) .NET CoreCu工具和语言编译器( Roslyn和F#) :提供.NET Core开发人员体验。
(4) dotnet工具:用于启动.NET Core应用和CL工具,它在选择运行和托管
运行时会提供程序集加载策略并启动应用和工具。

4.安装.NET Core平台
:
使用.NET Core平台之前需要先在当前计算机中安装.NET Core平
台,安装方式有两种:独立安装和使用VisualStudio Installer安装。
(1)独立安装:就是从微软官方网站上下载NET Core SDK安装包,再在当前
计算机中安装。
(2 )使用Visual Studio Installer安装
如果在当前计算机中安装有Visual Studio 2017或Visual Studio 2019以上版本,
则可以使用Visual Studiolnstaller安装。
 

1.4 异步编程

1.异步编程介绍
服务器端的运行任务都交给了多个虚拟机来运行,方便企业根
据业务需求的变化调整虚拟机上的CPU数目、内存大小和存储空间
大小。
异步编程可以直接处理多个服务或计算核心上的阻塞输入/输
出( Input/Output, 1/0 )操作和并发操作。.NET可以通过语言级异步
模型来提高应用和服务的响应速度及灵活性。
第1章 .NET Core微服务架构_第1张图片

 .NET支持三种异步编程模式:
异步编程模型( Asynchronous Programming Model, APM)
基于事件的异步模式( Event- -based AsynchronousPattern, EAP )
基于任务的异步模式( Task-based Asynchronous Pattern, TAP )
这三种异步编程模式都能有效改进文件和网络I/O程序的体验。

.NET Core平台中基于任务的异步模式,具有以下特点:
(1)等待I/O请求返回的同时可通过生成处理更多请求的线程,处理更多的
服务器请求。
(2)等待I/O请求的同时生成UI交互线程,并通过将长时间运行的工作转换
到其他CPU核心,让UI的响应速度更快。
(3)许多较新的.NET APIs都是异步的。
(4)在.NET中编写异步代码很简单。
 

2.使用TAP模式实现异步编程
基于任务的异步模式是基于System.Threading.Tasks.Task命名
空间中的System.Threading.Tasks.Task和System.Threading.
Tasks类型,这些类型用于表示任意异步操作。
为了简化异步编程的过程,.NET Framework 4.5在C#中引入了
await和async关键字。
await关键字应用于异步方法,在方法的执行中插入挂起点,直到等待任务
完成。使用await和async关键字定义异步方法不一定会创建新线程,当编译器看
到await关键字时,线程会挂起,等待运行结束。
 

在.NET Core中进行基于任务的异步模式编程的步骤如下:
(1)创建任务方法:创建的任务方法是一一个耗时方法,可能是I/O操作或
者CPU密集型工作。不返回值的任务由System.Threading.Tasks.Task类表示,返
回值的任务由System.Threading.Tasks.Task类表示,该类从Task继承。
(2)调用任务方法: -般通过加入await关键字来调用任务方法,而任务
方法将异步执行,但是只能在通过async关键字修改的方法中、lambda表达式中
或匿名方法中使用await关键字,async修饰符只能用于返回Task和Void的方法,
不能用于程序的入口。
 

控制台应用 案例


        static void Main(string[] args)
        {
            CallWithAsync();
        }
        //1.创建任务方法
        static Task GeetingAsync(string name)
        {
           //1.1创建Task对象
           Task task = new Task(() => { 
           Thread.Sleep(2000);
           return string.Format("您好! {0}", name);
         });
        //1.2启动任务
        task.Start();
        Console.WriteLine("启动任务");
        task.Wait();
        return task;
        }
        //2.调用任务方法
        async static void CallWithAsync() {
        string result=await GeetingAsync("张三");
            Console.WriteLine(result); 
        }

你可能感兴趣的:(.NET,Core,c#)