Repository navigation
Release v22.142.0
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 theCratis:Arc:EndpointGroups:Portsconfiguration 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 theCratisProxiesEndpointGroupMSBuild 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)