在单个进程中托管 HotChocolate 服务器和 Strawberry Shake 客户端

Host HotChocolate server and Strawberry Shake client in a single process

我正在开发一个 Blazor 应用程序,最初是作为 Blazor 服务器应用程序,但长期目标是在 Web 程序集 + 服务器配置中部署相同的应用程序。

我的偏好是在创建 Blazor 服务器原型时从编码的第一天起就采用 GraphQL,但这会造成 GraphQL 客户端代码和 HotChocolate 服务器代码 运行 在同一进程中的情况。这可能吗?

HotChocolate 文档中的以下代码显示可以通过在 schema.Execute(q) 中表达查询来向 Hotchocolate 提交 GraphQL 查询,但是我更愿意编写完整的 GraphQL 堆栈并跳过网络activity 当整个堆栈 运行 正在单个 Blazor 服务器进程中时。

https://github.com/ChilliCream/hotchocolate-docs/blob/master/docs/introduction.md

public class Query
{
 public string Hello() => "World!";
}

var schema = SchemaBuilder.New().AddQueryType<Query>().Create();
var executor = schema.MakeExecutable();

Console.WriteLine(executor.Execute("{ hello }").ToJson());

根据 Hotchocolate Slack 频道中的 post,计划于 2021 年 1 月发布的下一个 StrawberryShake 版本将引入“InMemory 传输”。 HotChocolate 的主要开发人员随后确认 InMemory 传输将在同一进程中支持客户端和服务器 GraphQL 代码 运行。