From 55d5d6dc1f8f4d3372c031fbd3e796e3d1f5a96e Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Sat, 29 Jan 2022 05:22:53 +0300 Subject: [PATCH] added basket client --- .../BasketServiceHttpApiHostModule.cs | 9 ++++ .../Configs/UrlsConfig.cs | 7 +++ ...hopOnAbp.BasketService.HttpApi.Host.csproj | 13 +++++ .../appsettings.Development.json | 4 ++ .../Program.cs | 47 ++++++++++++++++++- .../Protos/product.proto | 12 ++++- 6 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/Configs/UrlsConfig.cs diff --git a/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/BasketServiceHttpApiHostModule.cs b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/BasketServiceHttpApiHostModule.cs index a1d990d5..7cd9f621 100644 --- a/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/BasketServiceHttpApiHostModule.cs +++ b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/BasketServiceHttpApiHostModule.cs @@ -7,7 +7,10 @@ using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Linq; +using EShopOnAbp.BasketService.Configs; +using EShopOnAbp.CatalogService.Grpc; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Options; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.AntiForgery; @@ -72,6 +75,12 @@ public class BasketServiceHttpApiHostModule : AbpModule }); Configure(options => { options.AutoValidate = false; }); + + context.Services.AddGrpcClient((services, options) => + { + var catalogApi = services.GetRequiredService>().Value.GrpcCatalog; + options.Address = new Uri(catalogApi); + }); } public override void OnApplicationInitialization(ApplicationInitializationContext context) diff --git a/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/Configs/UrlsConfig.cs b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/Configs/UrlsConfig.cs new file mode 100644 index 00000000..d45a3b3e --- /dev/null +++ b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/Configs/UrlsConfig.cs @@ -0,0 +1,7 @@ +namespace EShopOnAbp.BasketService.Configs; + +public class UrlsConfig +{ + public string Catalog { get; set; } + public string GrpcCatalog { get; set; } +} \ No newline at end of file diff --git a/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj index baba3357..1e6e79bb 100644 --- a/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj +++ b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj @@ -17,6 +17,15 @@ + + + + + + + + + @@ -25,4 +34,8 @@ + + + + diff --git a/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/appsettings.Development.json b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/appsettings.Development.json index 2c63c085..4ea1f3f6 100644 --- a/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/appsettings.Development.json +++ b/services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/appsettings.Development.json @@ -1,2 +1,6 @@ { + "urls": { + "catalog": "https://localhost:44354", + "grpcCatalog": "http://localhost:81" + } } diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Program.cs b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Program.cs index 74728f1c..2a50da33 100644 --- a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Program.cs +++ b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Program.cs @@ -2,6 +2,10 @@ using System.Threading.Tasks; using EShopOnAbp.Shared.Hosting.AspNetCore; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Server.Kestrel.Core; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using Serilog; namespace EShopOnAbp.CatalogService; @@ -17,8 +21,31 @@ public class Program try { Log.Information($"Starting {assemblyName}."); - var app = await ApplicationBuilderHelper - .BuildApplicationAsync(args); + // var app = await ApplicationBuilderHelper + // .BuildApplicationAsync(args); + + var builder = WebApplication.CreateBuilder(args); + builder.WebHost.ConfigureKestrel(serverOptions => + { + serverOptions.ConfigureEndpointDefaults(listenOptions => + { + listenOptions.Protocols = HttpProtocols.Http1AndHttp2; + }); + serverOptions.ListenLocalhost(44354, opts => + { + opts.UseHttps(); + opts.Protocols = HttpProtocols.Http1AndHttp2; + }); + serverOptions.ListenLocalhost(81, opts => { opts.Protocols = HttpProtocols.Http2; }); + }); + builder.Host + .AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog(); + + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); await app.RunAsync(); @@ -34,4 +61,20 @@ public class Program Log.CloseAndFlush(); } } + + // static (int httpPort, int grpcPort) GetDefinedPorts(IConfiguration config) + // { + // var grpcPort = config.GetValue("GRPC_PORT", 81); + // var port = config.GetValue("PORT", 80); + // return (port, grpcPort); + // } + // + // static IConfiguration GetConfiguration() + // { + // return new ConfigurationBuilder() + // .SetBasePath(Directory.GetCurrentDirectory()) + // .AddJsonFile("appsettings.json") + // .AddEnvironmentVariables() + // .Build(); + // } } \ No newline at end of file diff --git a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Protos/product.proto b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Protos/product.proto index b096bd65..97588fca 100644 --- a/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Protos/product.proto +++ b/services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Protos/product.proto @@ -1,11 +1,21 @@ syntax = "proto3"; +/* >> +import "google/api/annotations.proto"; +<< */ + option csharp_namespace = "EShopOnAbp.CatalogService.Grpc"; package CatalogApi; service ProductPublic { - rpc GetAsync(ProductRequest) returns (ProductDto) {} + rpc GetAsync(ProductRequest) returns (ProductDto) { + /* >> + option (google.api.http) = { + get: "/api/catalog/product/{id}" + }; +<< */ + } } message ProductRequest {