Skip to content

Release v22.142.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 19:25
0a77986

Commands, queries and controllers can now be put in a named endpoint group that is served only on the local ports you assign to it, so internal operations stay off the public listener.

Added

  • [EndpointGroup("name")] on a command, read model, controller or assembly puts it in a named endpoint group; artifacts without the attribute behave exactly as before (#2848)
  • Assign ports to a group with ArcOptions.EndpointGroups.Assign("internal", 5001) or the Cratis:Arc:EndpointGroups:Ports configuration section; a grouped endpoint is matched only on a connection to one of its ports, and the request's Host header is never used to decide (#2848)
  • Observable queries respect groups: a WebSocket or SSE subscription to a grouped query is accepted only on the group's ports, and an SSE connection cannot subscribe or unsubscribe from a port that serves other groups (#2848)
  • Startup refuses to run when a group that is used has no port, when every listening port is a group port, or when groups are used on the Arc.Core HTTP listener host, which cannot isolate ports (#2848)
  • Grouped endpoints are left out of introspection and OpenAPI, and the proxy generator emits only the default group unless you select one with --endpoint-group=<name> or the CratisProxiesEndpointGroup MSBuild property (#2848)
  • A guide to endpoint groups, including the network and proxy restrictions a port boundary needs: https://github.com/Cratis/Arc/blob/main/Documentation/backend/csharp/endpoint-groups.md (#2848)