问题背景
我目前有两个项目链接到同一个数据库。第一个应用程序是使用实体框架的Asp.Net Core MVC项目。它托管了一堆仪表板和REST API。
第二个项目是Asp.Net核心控制台应用程序,它在一个单独的端口上托管gRPC服务器。
第三个项目是一个中间Schema项目,它将模型作为上述两个项目的类库提供。
问题
在与MVC项目相同的项目中托管gRPC项目是否可能/更好?如果是这样,那么在kestrel / grpc的线程池中是否会有冲突?最后,这会删除使用IISIntergration在IIS服务器上托管应用程序的能力吗?
TL; DR 可以/我应该使用相同的项目在aspnet核心上托管gRPC和MVC服务器以及会产生什么影响?
答案 0 :(得分:4)
关于线程池冲突的部分问题:
如果是这样,那么kestrel / grpc的线程池中是否会出现冲突?
GRPC生成自己的线程池来完成工作并完成与grpc调用相关的任务。只要在任何地方使用async / await并且可能会卸载长时间运行的CPU工作,那么就不应该出现任何问题。
答案 1 :(得分:0)
令人惊讶的是,自版本3:https://docs.microsoft.com/en-us/aspnet/core/grpc/aspnetcore?view=aspnetcore-3.1&tabs=visual-studio
开始,ASP.NET Core现在正式本地支持GRPC。