124 lines
3.6 KiB
Markdown
124 lines
3.6 KiB
Markdown
# 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
|