Files
crank/docs/protocol-capability-matrix.md
T
2026-04-06 02:35:00 +03:00

3.6 KiB
Raw Blame History

Protocol Capability Matrix

1. Назначение документа

Этот документ фиксирует capability matrix по всем protocol families и execution modes.

Он нужен как source of truth для:

  • UI availability rules;
  • admin-api validation;
  • runtime dispatch;
  • roadmap planning.

2. Matrix by protocol and execution mode

Protocol Unary Window Session Async Job Notes
REST Yes Yes Yes Yes window/session используют SSE или bounded polling
GraphQL Yes No No Limited async job только как явная status/result workflow model
gRPC Yes Yes Yes Yes только unary и server-streaming
WebSocket No Yes Yes Yes upstream-only adapter
SOAP Yes Limited No Yes request-response first, async через separate workflow contract

3. Matrix by protocol and transport behavior

Protocol Request/Response Server Stream Stateful Session
REST Yes Yes Limited
GraphQL Yes No No
gRPC Yes Yes Yes
WebSocket No Yes Yes
SOAP Yes Limited No

4. Matrix by protocol and artifact requirements

Protocol Sample JSON Descriptor WSDL/XSD Query Template Subscribe Template
REST Optional No No No Optional
GraphQL Optional No No Yes No
gRPC Optional Yes No No No
WebSocket Optional No No No Yes
SOAP Optional No Yes No No

5. Matrix by protocol and auth support

Protocol None Bearer Basic API Key Header API Key Query WS-Security
REST Yes Yes Yes Yes Yes No
GraphQL Yes Yes Yes Yes Limited No
gRPC Yes Yes Yes Limited No No
WebSocket Yes Yes Yes Yes Limited No
SOAP Yes Yes Yes Limited Limited Future

6. Matrix by protocol and UI blocks

UI Block REST GraphQL gRPC WebSocket SOAP
Endpoint URL Yes Yes No Yes Optional
Method selector Yes No No No No
Query template No Yes No No No
Descriptor upload No No Yes No No
WSDL upload No No No No Yes
Subscribe template Optional No No Yes No
Subprotocol list No No No Yes No
SOAP headers No No No No Yes
Stream kind selector Optional No Yes Yes Limited

7. Validation rules matrix

7.1. Unsupported combinations

  • GraphQL + Window
  • GraphQL + Session
  • WebSocket + Unary
  • SOAP + Session
  • gRPC + Session для non-server-streaming method
  • REST + Server Stream без stream-capable target model

7.2. Conditionally supported combinations

  • GraphQL + Async Job Требует отдельного status/result workflow contract.

  • SOAP + Window Допускается только для polling-style workflow, а не для native stream.

  • SOAP + Async Job Требует отдельной operation family для status/result.

8. Product-wave grouping

Wave 1

  • REST
  • GraphQL query/mutation
  • gRPC unary
  • Streamable HTTP downstream
  • Window/session/job core model

Wave 2

  • REST SSE
  • gRPC server-streaming
  • session/job tool families
  • streaming UI

Wave 3

  • WebSocket upstream adapter
  • richer streaming observability

Wave 4

  • SOAP foundation
  • WSDL/XSD tooling
  • SOAP UI flow

Wave 5

  • GraphQL subscriptions
  • gRPC client-streaming
  • gRPC bidi
  • advanced enterprise security stacks