ฉันต้องการสร้างบริการ gRPC แต่ฉันต้องโฮสต์ในแอปพลิเคชัน winform .net มีตัวอย่างพิเศษของวิธีการ การโฮสต์ ASP.NET Core API ใน Windows Forms Application ฉันอยากให้ใครสักคนอธิบายให้ฉันฟังว่าฉันต้องติดตั้งอะไร และควรเปลี่ยนแปลงอะไรในตัวอย่างนี้ เพื่อโฮสต์บริการ grpc ในรูปแบบของ Windows ...
การโฮสต์บริการ gRPC ในแอปพลิเคชัน Windows Forms
comment
คุณจะทำเหมือนกับในโพสต์นั้นทุกประการ แต่เพียงใช้จุดสิ้นสุด grpc (endpoints.MapGrpcService) เหมือนที่นี่ - docs.microsoft.com/en-us/aspnet/core/grpc/?view=aspnetcore-3.1 แทนจุดสิ้นสุด mvc อีกครั้ง - เช่นเดียวกับในโพสต์นั้น แต่เพียงแทนที่การตั้งค่า mvc ด้วยการตั้งค่า grpc เช่นเดียวกับในเอกสารอย่างเป็นทางการ
- person Nikita Chayka   schedule 01.11.2020
comment
ลิงค์กำลังสร้างไคลเอนต์และเซิร์ฟเวอร์และเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ รูปแบบหน้าต่างคือไคลเอนต์และตัวควบคุมคือเซิร์ฟเวอร์ โดยปกติโครงการแบบฟอร์ม windows จะมี Startup.cs พร้อมการเรียกไปยังแบบฟอร์มที่มี [STAThread] ลิงก์กำลังเริ่มต้น WebHost ก่อนที่แบบฟอร์มจะเริ่มต้น ดังนั้นเซิร์ฟเวอร์จึงเริ่มทำงานก่อนไคลเอนต์ รหัสแบบฟอร์มปกติอยู่ในคลาสเริ่มต้นของแบบฟอร์ม ดังนั้นเมื่อคุณสร้างโปรเจ็กต์ฟอร์มใหม่ให้เพิ่มโค้ดในขั้นตอนที่ 7 ลงใน program.cs จากนั้นขั้นตอนที่ 6 จะเข้าสู่โมดูลฟอร์มหลัก
- person jdweng   schedule 01.11.2020
comment
ขอบคุณสำหรับคำตอบ. ฉันได้ลองทำตามบทช่วยสอนแล้ว แต่ทำไม่ได้เพราะ gRPC สร้างบริการโดยอัตโนมัติและบันทึกไว้ในโฟลเดอร์ obj และฉันไม่สามารถสร้างมันขึ้นมาได้ ปัญหาอีกอย่างคือ services.AddGrpc () ใช้ส่วนขยาย ของไลบรารี Grpc.AspNetCore.Server ซึ่งเข้ากันไม่ได้กับ .net framework 4.X ดังนั้นฉันจึงเห็นว่ามันไม่รองรับอย่างเห็นได้ชัด
- person Fabian Wesling   schedule 01.11.2020
คำตอบ (1)
คุณสามารถทำตามขั้นตอนเดียวกันแต่มีขั้นตอนเพิ่มเติมหลายประการ:
- ติดตั้งแพ็คเกจ Microsoft.AspNetCore.Grpc.HttpApi สิ่งนี้จะแมปจุดสิ้นสุด gRPC ของคุณกับ HTTP แบบคลาสสิก ไม่ใช่โดยอัตโนมัติ คุณจะต้องระบุบริการใน Startup.cs ดังนี้:
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<MygRPCService>();
});
- ในโปรโตของคุณ คุณต้องระบุเส้นทาง HTTP บางอย่างเช่นนี้:
rpc Get(GetRequest) returns (GetReply) {
option (google.api.http) = {
get: '/my-endpoint'
body: '*'
};
}
- เพิ่มวิธีการ Startup.cs ConfigureService ของคุณ:
services.AddGrpc();
services.AddGrpcHttpApi();
person
Jesus Santander
schedule
02.11.2020