第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可以通过语言级异步
模型来提高应用和服务的响应速度及灵活性。

 .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<TResult>和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<TResult>类表示,该类从Task继承。
(2)调用任务方法: -般通过加入await关键字来调用任务方法,而任务
方法将异步执行,但是只能在通过async关键字修改的方法中、lambda表达式中
或匿名方法中使用await关键字,async修饰符只能用于返回Task和Void的方法,
不能用于程序的入口。
 

控制台应用 案例


        static void Main(string[] args)
        {
            CallWithAsync();
        }
        //1.创建任务方法
        static Task<string> GeetingAsync(string name)
        {
           //1.1创建Task对象
           Task<string> task = new Task<string>(() => { 
           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); 
        }

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在.NET微服务架构中,Nginx可以用作服务集群的负载均衡器。Nginx可以将请求分发给多个相同的服务器,以实现高可用性和可扩展性。然而,Nginx本身无法进行服务注册和健康检查,这意味着如果Nginx下的某个服务挂掉,Nginx无法感知并停止转发请求。因此,在微服务架构中,通常会使用其他工具来实现服务注册和健康检查,例如Consul或Eureka。这些工具可以与Nginx配合使用,以确保只有健康的服务接收到请求。微服务架构的核心思想是将一个大型的单体应用程序拆分成多个离散的服务,以实现解耦和可扩展性。每个微服务都可以独立扩展,而不是整个应用程序堆栈。微服务架构与面向服务架构(SOA)有一些相似之处,但也有一些区别。SOA是为了重用而设计的,而微服务架构更注重重写。此外,微服务架构更加水平化,而SOA更加垂直化。在微服务架构中,进程间通信是非常重要的,可以使用各种通信机制,如RESTful API或消息队列。 #### 引用[.reference_title] - *1* *2* *3* [asp.net微服务架构(概述)](https://blog.csdn.net/CrtLife/article/details/117029560)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值