Browse Source

added basket client

ipaddr
Galip Tolga Erdem 5 years ago
parent
commit
55d5d6dc1f
  1. 9
      services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/BasketServiceHttpApiHostModule.cs
  2. 7
      services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/Configs/UrlsConfig.cs
  3. 13
      services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj
  4. 4
      services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/appsettings.Development.json
  5. 47
      services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Program.cs
  6. 12
      services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Protos/product.proto

9
services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/BasketServiceHttpApiHostModule.cs

@ -7,7 +7,10 @@ using Microsoft.Extensions.Hosting;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using EShopOnAbp.BasketService.Configs;
using EShopOnAbp.CatalogService.Grpc;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.AntiForgery; using Volo.Abp.AspNetCore.Mvc.AntiForgery;
@ -72,6 +75,12 @@ public class BasketServiceHttpApiHostModule : AbpModule
}); });
Configure<AbpAntiForgeryOptions>(options => { options.AutoValidate = false; }); Configure<AbpAntiForgeryOptions>(options => { options.AutoValidate = false; });
context.Services.AddGrpcClient<ProductPublic.ProductPublicClient>((services, options) =>
{
var catalogApi = services.GetRequiredService<IOptions<UrlsConfig>>().Value.GrpcCatalog;
options.Address = new Uri(catalogApi);
});
} }
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)

7
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; }
}

13
services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/EShopOnAbp.BasketService.HttpApi.Host.csproj

@ -17,6 +17,15 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Hosting.Microservices\EShopOnAbp.Shared.Hosting.Microservices.csproj" /> <ProjectReference Include="..\..\..\..\shared\EShopOnAbp.Shared.Hosting.Microservices\EShopOnAbp.Shared.Hosting.Microservices.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.19.3" />
<PackageReference Include="Grpc.AspNetCore.Server.ClientFactory" Version="2.42.0" />
<PackageReference Include="Grpc.Core" Version="2.42.0" />
<PackageReference Include="Grpc.Net.Client" Version="2.42.0" />
<PackageReference Include="Grpc.Net.ClientFactory" Version="2.42.0" />
<PackageReference Include="Grpc.Tools" Version="2.42.0" PrivateAssets="All" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="Logs\**" /> <Compile Remove="Logs\**" />
@ -25,4 +34,8 @@
<None Remove="Logs\**" /> <None Remove="Logs\**" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Protobuf Include="..\..\..\catalog\src\EShopOnAbp.CatalogService.HttpApi.Host\Protos\product.proto" GrpcServices="Client" />
</ItemGroup>
</Project> </Project>

4
services/basket/src/EShopOnAbp.BasketService.HttpApi.Host/appsettings.Development.json

@ -1,2 +1,6 @@
{ {
"urls": {
"catalog": "https://localhost:44354",
"grpcCatalog": "http://localhost:81"
}
} }

47
services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Program.cs

@ -2,6 +2,10 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using EShopOnAbp.Shared.Hosting.AspNetCore; using EShopOnAbp.Shared.Hosting.AspNetCore;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
namespace EShopOnAbp.CatalogService; namespace EShopOnAbp.CatalogService;
@ -17,8 +21,31 @@ public class Program
try try
{ {
Log.Information($"Starting {assemblyName}."); Log.Information($"Starting {assemblyName}.");
var app = await ApplicationBuilderHelper // var app = await ApplicationBuilderHelper
.BuildApplicationAsync<CatalogServiceHttpApiHostModule>(args); // .BuildApplicationAsync<CatalogServiceHttpApiHostModule>(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<CatalogServiceHttpApiHostModule>();
var app = builder.Build();
await app.InitializeApplicationAsync(); await app.InitializeApplicationAsync();
await app.RunAsync(); await app.RunAsync();
@ -34,4 +61,20 @@ public class Program
Log.CloseAndFlush(); 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();
// }
} }

12
services/catalog/src/EShopOnAbp.CatalogService.HttpApi.Host/Protos/product.proto

@ -1,11 +1,21 @@
syntax = "proto3"; syntax = "proto3";
/* >>
import "google/api/annotations.proto";
<< */
option csharp_namespace = "EShopOnAbp.CatalogService.Grpc"; option csharp_namespace = "EShopOnAbp.CatalogService.Grpc";
package CatalogApi; package CatalogApi;
service ProductPublic { service ProductPublic {
rpc GetAsync(ProductRequest) returns (ProductDto) {} rpc GetAsync(ProductRequest) returns (ProductDto) {
/* >>
option (google.api.http) = {
get: "/api/catalog/product/{id}"
};
<< */
}
} }
message ProductRequest { message ProductRequest {

Loading…
Cancel
Save