sách gpt4 ăn đã đi

ABPvNext-Giới thiệu kiến ​​thức cơ bản về microservice framework

In lại Tác giả: Tôi là chú chim nhỏ Thời gian cập nhật: 2023-04-14 22:31:53 37 4
mua khóa gpt4 giày nike

ABPvNext-Giới thiệu kiến ​​thức cơ bản về microservice framework

Bài viết này sử dụng phiên bản ổn định mới nhất 7.0.2 của phiên bản thương mại ABPvNext làm cơ sở để trình diễn. Nếu nó được cập nhật trong tương lai, tôi sẽ viết một bài riêng về phiên bản mới nhất. Bài viết này là hướng dẫn giới thiệu dựa trên zero. và các mã liên quan tiếp theo sẽ được cập nhật đồng thời vào kho gitee.


Sự chuẩn bị:

  • 1. Đăng nhập vào trang web chính thức của ABPvNext http://abp.io.

  • 2. Chuyển sang tài liệu của phiên bản thương mại Hiện tại, phiên bản thương mại không có tiếng Trung nên bạn chỉ có thể sử dụng chức năng dịch tích hợp của Google Chrome.

  • 3. Vui lòng tự mình kiểm tra các yêu cầu về môi trường có liên quan của khuôn khổ.

    • Visual Studio 2022 (v17.3+) dành cho Windows / Visual Studio dành cho Mac. 1
    • .NET 7.0 trở lên
    • Nút v16 hoặc v18
    • Yarn v1.20+ (không phải v2) 2 hoặc npm v6+ (được cài đặt với Node)
    • Redis (dưới dạng bộ đệm được phân phối).
  • 4. Cài đặt công cụ ABP CLI. Phương pháp cài đặt là sử dụng công cụ dòng lệnh dotnet. Là nhà phát triển .NET, bạn phải có máy này.

                                        
                                          //Cài đặt hoặc cập nhật công cụ xây dựng. Nếu bạn muốn thực hiện tương tự như bài viết này, vui lòng chỉ định số phiên bản cài đặt dotnet tool install -g Volo.Abp.Cli //Đăng nhập vào tài khoản trang web chính thức của ABP. khi sử dụng phiên bản thương mại, bạn phải có tài khoản liên quan đăng nhập abp  //Cài đặt bộ ABP (chức năng chính sau đó là tạo các giải pháp và công cụ tạo mã, v.v.) abp suite install
    
    
    
                                        
                                      

Tạo dự án và bắt đầu:

  • 1. Tạo một dự án mới thông qua bộ phần mềm thương mại do ABP cung cấp. Lần này, nó được tạo bằng đồ họa.

                                        
                                          // Sau khi quá trình thực thi hoàn tất, bảng điều khiển và trang web sẽ được kéo lên. Không đóng bộ abp bảng điều khiển.
    
                                        
                                      
  • 2. Trong trang mở ra, hãy nhấp vào Tạo giải pháp mới.

  • 3. Tạo bằng mẫu microservice, vì vậy hãy chọn mẫu Microservice.

  • 4. Nhập Tên dự án, thư mục đầu ra và chế độ giao diện người dùng (MVC) tương ứng và nhấp vào OK để bắt đầu tạo dự án.

  • 5. Sau khi quá trình tạo dự án hoàn tất, hãy mở thư mục liên quan và bạn có thể thấy dự án vi dịch vụ ABPvNext do công cụ tạo ra.

  • 6. Tiếp theo, chúng ta mở file run-tye.ps1 và cần sửa đổi một số cấu hình (trước khi thay đổi).

                                        
                                          <# Kiểm tra chứng chỉ phát triển #> <# Chứng chỉ cục bộ, vì dự án được xếp lớp nên tất cả các cuộc gọi đều sử dụng https, vì vậy việc gỡ lỗi cục bộ phải có chứng chỉ #> if (! ( Test-Path ".\etc\dev-cert \localhost. pfx" -PathType Leaf ) ){ Thông tin ghi "Tạo chứng chỉ dev..." cd ".\etc\dev-cert" .\create-certificate.ps1 cd ../.. } <# Đây là môi trường hoạt động chính thức. Bạn nên cài đặt riêng, nếu không máy phát triển sẽ bị kẹt, vì vậy hãy xóa nó trực tiếp #> $requiredServices = @( 'sql-server-db', 'grafana', 'prometheus' , 'kibana', 'rabbitmq', 'elasticsearch', 'redis' ) foreach ($requiredService in $requiredServices) { $nameParam = -join("name=", $requiredService) $serviceRunningStatus = docker ps --filter $nameParam $isDockerImageUp = $serviceRunningStatus -split " " -contains $requiredService if( $isDockerImageUp ) { Write-Host ($requiredService + " [up]") } else { cd " ./etc/docker/" mạng docker tạo abpmicservie-network docker-compose -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml up -d cd ../.. break; } } <# Điều này sẽ được thực thi thủ công sau, vì vậy hãy xóa nó đi #> cd "./ đã chia sẻ /ABPMicServie.DbMigrator" dotnet run cd ../.. <# Run all services #> tye run --watch
    
                                        
                                      
  • Chúng ta đổi tên file thành run.ps1 với nội dung như sau.

    <# Kiểm tra chứng chỉ phát triển #> 。

    nếu (! ( Đường dẫn thử nghiệm ".\etc\dev-cert\localhost.pfx" -PathType Leaf ) ){ 。

    Write-Information "Đang tạo chứng chỉ dev..." 。

    cd ".\etc\dev-cert" 。

    .\create-certificate.ps1 。

    đĩa CD ../.. .

    } 。

    <# Chạy tất cả các dịch vụ #> 。

    chạy --xem 。

  • 7. Chưa chạy dự án, hãy mở PowerShell trong thư mục gốc của dự án, chạy lệnh dotnet build và khôi phục toàn bộ gói dự án.

  • 8. Mở dự án và thay đổi chuỗi liên kết cơ sở dữ liệu của dự án chia sẻ/ABPMicServie.DbMigrator.

    Dự án ban đầu yêu cầu sửa đổi bốn cơ sở dữ liệu và mỗi cơ sở dữ liệu cần được thiết lập thủ công.

  • 9. Tạo bốn dữ liệu trong cơ sở dữ liệu, sau đó thay đổi IP, tên người dùng, v.v. của chuỗi liên kết trong dự án.

  • 10. Nhấp chuột phải vào dự án ABPMicServie.DbMigrator → Gỡ lỗi → Bắt đầu một ví dụ mới và chạy dự án di chuyển. Nếu chuỗi liên kết được đặt chính xác và quá trình thực thi thành công, bảng tương ứng trong cơ sở dữ liệu sẽ được tạo. kiểm tra cơ sở dữ liệu để xem bảng tương ứng đã được tạo hay chưa.

  • 11. Bước tiếp theo là thay đổi chuỗi liên kết của từng dự án và sửa đổi nó theo liên kết ban đầu:

    • ABPMicServie.AuthServer
    • ABPMicServie.AdministrationService.HttpApi.Host
    • ABPMicServie.IdentityService.HttpApi.Host
    • ABPMicServie.ProductService.HttpApi.Host
    • ABPMicServie.SaasService.HttpApi.Host
  • 12. Tiếp theo, bạn cần sửa đổi cấu hình phần mềm trung gian của từng dự án, bao gồm RabbitMQ, Redis, ElasticSearch, v.v. Vì việc sửa đổi về cơ bản bao gồm tất cả các dự án trong ba thư mục ứng dụng, cổng và dịch vụ nên tôi sẽ không liệt kê từng dự án một một.

  • 13. Cài đặt tye, cũng chỉ trực tiếp bằng công cụ bảng điều khiển dotnet.

                                        
                                          dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
    
                                        
                                      
  • 14.安装完成后,直接在项目目录的运行.ps1文件单击右键→使用powershell运行,出现下面窗口 。

  • 15.在浏览器中打开 localhost:8000,出现tye管理界面,具体每个服务的端口,日志都可以查看 。

  • 16.访问web项目对应的端口,我这次对应的端口为 https://localhost:44321/ ,看到这个界面说明web服务已正常运行,接下来我们点击登录,进入登录界面 。

  • 17.微服务模式的登陆使用的统一认证方式,所以在登录界面实际是调用了ABPMicServie.AuthServer相关的服务,默认的管理用户名:admin 密码:1q2w3E* 这个密码是在迁移文件中设置的 。

  • 18.登录成功,看到如下页面,就说明ABPvNext的微服务框架已顺利执行成功,撒花 。

向现有解决方案中新增一个微服务

  • 1.来到解决方案的根目录下,打开powershell,执行创建新服务的命令 。

                                        
                                          //OrderService 是你新创建服务的名称,建议试用Serviec结尾,保证和其他服务的统一性 abp new OrderService -t microservice-service-pro
    
    
    
                                        
                                      
  • 2.执行完成后,services文件夹下会多出一个order目录,这就是新增的微服务项目 。

  • 3.进入这个目录,使用powershell执行dotnet build 还原orderServie项目包 。

  • 4.接下来的操作就是将新建的服务新增到解决方案中,可以使用vs界面操作,我这里就介绍另外一种添加的方法,使用dotnet命令新增一个项目 。

                                        
                                          dotnet sln add services/order/src/ABPMicServie.OrderService.HttpApi.Host/ABPMicServie.OrderService.HttpApi.Host.csproj --solution-folder services
    
    
                                        
                                      
  • 接下来配置新增微服务的授权,新增授权主要是更改OpenIddictDataSeeder.cs文件,项目中有两个地方需要修改,分别是:

    1. Acme.BookStore.DbMigrator\OpenIddictDataSeeder.cs
    2. Acme.BookStore.IdentityService.HttpApi.Host\DbMigrations\OpenIddictDataSeeder.cs .
  • 创建ApiScope 。

                                        
                                          await CreateScopesAsync("OrderService");
    
                                        
                                      

  • 然后在:zymictest.OrderService.HttpApi.Host/appsettings.json 节点中新增 。

    "SwaggerClientId": "WebGateway_Swagger" 。

  • 在ABPMicServie.DbMigrator/OpenIddictDataSeeder.cs文件的CreateClientsAsync方法中,新增其他内部客户端的调用权限,哪个客户端需要调用,就添加哪个,现在为了测试,就讲所有的客户端都添加了,图片里只截图了一个,下面的每个客户端权限都添加了,具体可以参考 Product Service添加 。

  • 在ABPMicServie.DbMigrator/OpenIddictDataSeeder.cs文件的CreateWebGatewaySwaggerClientsAsync方法中参照 Product Service,添加OrderService,这是为了增加swagger的客户端 。

  • 接下来ABPMicServie.IdentityService.HttpApi.Host项目中的OpenIddictDataSeeder.cs也要同步更改,官方文档文档中解释是使用迁移命令就必须更改两个 。

  • CreateSwaggerClientAsync方法中需要修改两处,一个是通过配置文件获取到的RootUrl,然后把这个RootUrl拼接完整后,添加到Swagger Client客户端中,这个是授权服务中需要使用的 。

  • 代码修改完成后 需要更改ABPMicServie.DbMigrator/appsettings.json 配置文件,新增OrderService,具体样式参考ProductService,OrderService端口可以在ABPMicServie.OrderService.HttpApi.Host项目中查看 。

  • 接下来更新网关的授权文件,打开ABPMicServie.WebGateway项目的ABPMicServieWebGatewayModule.cs文件,参考ProductService ,新增一个OrderService 。

  • 新增ABPMicServie.WebGateway/ocelot.json 的路由配置,注意端口要更改成你orderservice项目的端口 。

  • 新建一个OrderService的数据库,并更改下面两个项目的数据库连接字符串 。

    • ABPMicServie.OrderService.HttpApi.Host,
    • ABPMicServie.DbMigrator
  • 在ABPMicServie.DbMigrator项目中添加OrderService的引用 。

                                        
                                           
    
    
                                        
                                      
  • 添加完成后的项目引用应该是这样的 。

  • 在ABPMicServie.DbMigrator/ABPMicServieDbMigratorModule.cs文件中添加模块的依赖 。

                                        
                                          typeof(OrderServiceApplicationContractsModule), typeof(OrderServiceEntityFrameworkCoreModule)
    
    
                                        
                                      
  • 为了在web项目中使用orderService微服务中的页面,我们需要讲引用添加到web项目中 。

                                        
                                               
    
                                        
                                      
  • 然后在 ABPMicServie.Web /ABPMicServieWebModule.cs中添加依赖 。

                                        
                                          typeof(OrderServiceWebModule), typeof(OrderServiceHttpApiClientModule)
    
    
                                        
                                      
  • 在ABPMicServieWebModule.cs的AddAbpOpenIdConnect方法中,添加 OpenID 连接范围 。

  • 接下来我们要更新tye配置文件,把刚刚新建的微服务相关参数新增上去,方便以后启动调试,一定要修改端口号,每个新的项目端口号都是不一致的 。

                                        
                                          - name: order-service project: services/order/src/Acme.BookStore.OrderService.HttpApi.Host/Acme.BookStore.OrderService.HttpApi.Host.csproj bindings: - protocol: https port: 45247 ***** do not forget to replace this port with yours ***** env: - Kestrel__Certificates__Default__Path=../../../../etc/dev-cert/localhost.pfx - Kestrel__Certificates__Default__Password=e8202f07-66e5-4619-be07-72ba76fde97f
    
    
                                        
                                      
  • 接下来添加新服务的迁移配置,更改ABPMicServie.DbMigrator/ABPMicServieDbMigrationService.cs,添加 。

  • 在最后的生成迁移数据库之前,一定记得把ABPMicServie.IdentityService.HttpApi.Host项目中的OpenIddictDataSeeder.cs文件也同步更改,具体更改参见ABPMicServie.DbMigrator项目中的同名文件 。

  • 重新使用运行.ps1运行所有项目后,如果登录报错,大概率是犹豫新增加的种子数据没有初始化到表中,可以使用各种方式修改,我这里使用简单粗暴的方式,删除所有 。

  • ordreService的swagger授权报错,是因为ABPMicServie.AuthServer/appsettings.json 中的跨域请求,不设置的话获取时会报错 。

微服务间的通信(同步-HTTP代理模式)

目的:实现OrderService微服务中,调用 ProductService 的相关函数 。

  • 1.在 OrderService.Application.Contracts 中添加 ProductService.Application.Contracts 。

                                        
                                          
    
    
                                        
                                      
  • 2.在OrderServiceApplicationContractsModule.cs中添加依赖 。

  • 3.在ABPMicServie.OrderService.Application项目中添加ABPMicServie .ProductService.HttpApi.Client 。

  • 4.OrderServiceApplicationModule.cs添加依赖 。

                                        
                                          typeof(ProductServiceHttpApiClientModule)
    
    
                                        
                                      
  • 接下来做一个测试,在默认项目中的新增这段代码 。

                                        
                                          using System.Threading.Tasks; using ABPMicServie.ProductService.Products;//引用命名空间 using Microsoft.AspNetCore.Authorization; namespace ABPMicServie.OrderService.Samples; public class SampleAppService : OrderServiceAppService, ISampleAppService { IProductAppService _productAppService;//构造函数注入 public SampleAppService(IProductAppService productAppService) { _productAppService = productAppService; } public async Task GetAsync() { //调用另外一个服务的方法 await _productAppService.CreateAsync(new ProductCreateDto() { Name="zyzy", Price=100 }); return new SampleDto { Value = 43 }; } [Authorize] public Task GetAuthorizedAsync() { return Task.FromResult( new SampleDto { Value = 42 } ); } }
    
                                        
                                      

  • 5.这样直接调用会报错,原因就是我们需要使用管理员登录到后台,在管理→OPENID→应用程序中,找到我们远程调用的应用程序“rderServiceClient”,然后在操作菜单中,添加上需要调用服务的相关权限,比如这次我们要调用产品服务的相关权限,那就产品服务相关权限添加上 。

  • 6.这样当执行Sample的GetAsync()方法的时候,就会同步调用另外一个微服务的新增接口,实现的远程调用,客户端授权,以及权限管理的相关功能 。

微服务间的通信(异步-RabbitMQ模式)

  • 1 .在ABPMicServie.OrderService.HttpApi.Host/appsettings.json中更改RabbitMQ的链接字符配置,更改成你要使用的服务 。

  • 在ABPMicServie.ProductService.Application.Contracts项目中添加一个用来传输数据的类,如果其他服务需要使用使用这个类,需要添加ABPMicServie.ProductService.Application.Contracts的引用,注意循环引用的问题 。

  • 在需要发送mq消息的类中,使用IDistributedEventBus 发送消息,其实这就是分布式消息总线, 。

  • 新建一个类,继承 IDistributedEventHandler ,并实现HandleEventAsync方法,注意,新建的类一定要继承ITransientDependency生命周期接口,否则不会被注入到系统中 。

最后此篇关于ABPvNext-微服务框架基础入门的文章就讲到这里了,如果你想了解更多关于ABPvNext-微服务框架基础入门的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

37 4 0
tôi là một con chim nhỏ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress