using Grpc.Core; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks;
publicoverride Task<EmployeeResponse> GetByNo(GetByNoRequest request, ServerCallContext context) { return Task.FromResult(new EmployeeResponse { Employee = new Employee() { Id = 123, No = 123456, FirstName = Guid.NewGuid().ToString(), } }); }
publicoverrideasync Task GetAll(GetAllRequest request, IServerStreamWriter<EmployeeResponse> responseStream, ServerCallContext context) { for (int i = 0; i < 10; i++) { await responseStream.WriteAsync(new EmployeeResponse() { Employee = new Employee() { No = i, } }); } }
publicoverrideasync Task<AddPhotoResponse> AddPhoto(IAsyncStreamReader<AddPhotoRequest> requestStream, ServerCallContext context) { var data = new List<byte>(); while (await requestStream.MoveNext()) { data.AddRange(requestStream.Current.Data); } using MemoryStream memoryStream = new MemoryStream(data.ToArray());
using FileStream fileStream = new FileStream("test.png", FileMode.OpenOrCreate); memoryStream.WriteTo(fileStream);
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Grpc.Demo.Server.Service; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting;
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Grpc.Demo.Client.Models; using Grpc.Net.Client; using Grpc.Core; using System.IO; using Google.Protobuf;
publicasync Task<IActionResult> Index(int id) { var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new GreetService.GreetServiceClient(channel); string msg = string.Empty; switch (id) { case1: msg = await SayHelloAsync(client); break;
case2: msg = await GetByNoAsync(client); break;
case3: msg = await GetAllAsync(client); break;
case4: msg = await AddPhotoAsync(client); break;
case5: msg = await SaveAsync(client); break;
case6: msg = await SaveAllAsync(client); break;
default: break; }
ViewData["Message"] = msg; return View(); }
privateasync Task<string> SaveAllAsync(GreetService.GreetServiceClient client) { var employees = new List<Employee>() { new Employee(){Id=2, FirstName ="zhangsan"}, new Employee(){Id=3, FirstName ="lisi"}, };
var cell = client.SaveAll(); var requestStream = cell.RequestStream; var responseStream = cell.ResponseStream;
var result = new List<Employee>();
var responseTask = Task.Run(async () => { while (await responseStream.MoveNext()) { result.Add(responseStream.Current.Employee); } });