【问题标题】:gRPC running along side with Asp.net Core MvcgRPC 与 Asp.net Core Mvc 一起运行
【发布时间】:2017-04-11 19:57:51
【问题描述】:

问题背景

我目前有两个项目链接到同一个数据库。第一个应用程序是使用实体框架的 Asp.Net Core MVC 项目。它托管了一堆仪表板和 REST API。

第二个项目是一个 Asp.Net Core Console 应用程序,它在一个单独的端口上托管一个 gRPC 服务器。

第三个项目是一个中间模式项目,它将模型作为上述两个项目的类库。

问题

将 gRPC 项目托管在与 MVC 项目相同的项目中是否可能/更好?如果是这样,那么在 kestrel/grpc 的线程池中是否没有冲突?最后,这是否会取消使用 IISIntergration 在 IIS 服务器上托管应用程序的能力?

TL;DR 我可以/应该使用同一个项目在 aspnet 核心上同时托管 gRPC 和 MVC 服务器吗?会有什么影响?

【问题讨论】:

  • 您肯定希望在同一个服务中拥有一个 HTTP 端点,该端点为 gRPC 提供健康检查和指标收集服务,如果您查看 Prometheus 和 K8S,目前只能通过 HTTP 完成。

标签: c# asp.net-core console-application asp.net-core-mvc grpc


【解决方案1】:

关于线程池冲突的部分问题:

如果是这样,那么kestrel/grpc的线程池中不会有冲突吗?

GRPC 产生自己的线程池来完成与 grpc 调用相关的工作和任务。只要在任何地方都使用 async/await 并卸载可能长时间运行的 CPU 工作,那么这方面应该没有任何问题。

【讨论】:

    【解决方案2】:

    Amazingly ASP.NET Core 现在从版本 3 开始正式原生支持 GRPC:https://docs.microsoft.com/en-us/aspnet/core/grpc/aspnetcore?view=aspnetcore-3.1&tabs=visual-studio

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2019-06-05
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 2018-08-22
      • 1970-01-01
      相关资源
      最近更新 更多