Add gateway implementation planning docs
This commit is contained in:
+55
-10
@@ -40,6 +40,37 @@ The worker does not host gRPC. The gateway talks to workers through a small
|
||||
local IPC protocol. Named pipes with protobuf-framed messages are the default
|
||||
transport.
|
||||
|
||||
Detailed follow-up docs:
|
||||
|
||||
- `docs/gateway-process-design.md` covers the .NET 10 gateway process,
|
||||
session manager, worker supervision, gRPC API, event streaming, fault model,
|
||||
security, observability, and test strategy.
|
||||
- `docs/mxaccess-worker-instance-design.md` covers each .NET Framework 4.8 x86
|
||||
MXAccess worker instance, including STA ownership, message pumping, COM
|
||||
lifetime, command dispatch, event sinks, conversion, and shutdown.
|
||||
- `docs/design-decisions.md` records current v1 choices, including API-key
|
||||
authentication in gateway-owned SQLite and the concrete installed MXAccess
|
||||
COM class details from `C:\Users\dohertj2\Desktop\mxaccess`.
|
||||
- `docs/gateway-dashboard-design.md` covers the Blazor Server and Bootstrap
|
||||
dashboard for live gateway/session/worker status.
|
||||
- `docs/client-libraries-design.md` covers shared design requirements for
|
||||
official gRPC client libraries, test CLIs, and tests for .NET C#, Go, Rust,
|
||||
Python, and Java.
|
||||
- `docs/implementation-plan-index.md` links the detailed implementation plans
|
||||
and recommended Gitea milestones/issues.
|
||||
|
||||
Implementation style guides:
|
||||
|
||||
- `StyleGuide.md` covers project documentation.
|
||||
- `docs/style-guides/CSharpStyleGuide.md` covers gateway, worker, .NET client,
|
||||
and C# tests.
|
||||
- `docs/style-guides/ProtobufStyleGuide.md` covers public gRPC and worker IPC
|
||||
contracts.
|
||||
- `docs/style-guides/GoStyleGuide.md` covers the Go client.
|
||||
- `docs/style-guides/RustStyleGuide.md` covers the Rust client.
|
||||
- `docs/style-guides/PythonStyleGuide.md` covers the Python client.
|
||||
- `docs/style-guides/JavaStyleGuide.md` covers the Java client.
|
||||
|
||||
## Process Split
|
||||
|
||||
### Gateway Process
|
||||
@@ -866,16 +897,30 @@ backend = mxaccess-worker
|
||||
|
||||
## Open Questions
|
||||
|
||||
- Exact installed MXAccess COM ProgID/class used by production should be pinned
|
||||
from the existing trace harness.
|
||||
- Whether one gRPC client connection maps to one session or whether sessions can
|
||||
survive client reconnects.
|
||||
- Whether event streams can have multiple subscribers per session.
|
||||
- Required authentication model for remote clients.
|
||||
- Whether worker process identity should be the gateway identity or a restricted
|
||||
service account.
|
||||
- Maximum supported event rate before coalescing is required.
|
||||
- Whether command batching is needed for high-volume tag registration.
|
||||
Current v1 decisions are recorded in `docs/design-decisions.md`.
|
||||
|
||||
Resolved for v1:
|
||||
|
||||
- MXAccess COM target is `ArchestrA.MxAccess.LMXProxyServerClass` /
|
||||
`LMXProxy.LMXProxyServer.1` from the installed 32-bit `LmxProxy.dll`.
|
||||
- One `OpenSession` maps to one worker process; no reconnectable sessions.
|
||||
- One active event subscriber per session.
|
||||
- API key authentication with hashed keys in gateway-owned SQLite.
|
||||
- Basic Blazor Server dashboard with Bootstrap CSS/JS and real-time updates.
|
||||
- Workers run as the gateway service identity.
|
||||
- Event backpressure is fail-fast with bounded queues.
|
||||
- No public command batching.
|
||||
- `OperationComplete` is forwarded only when native MXAccess raises it.
|
||||
- `OnBufferedDataChange` is modeled now; multi-sample payload conversion remains
|
||||
capture-validated work.
|
||||
|
||||
Post-v1 revisit items:
|
||||
|
||||
- production event-rate target and optional coalescing,
|
||||
- reconnectable sessions,
|
||||
- multi-subscriber event fan-out,
|
||||
- restricted worker process identity,
|
||||
- command batching for high-volume setup.
|
||||
|
||||
## Recommended Next Step
|
||||
|
||||
|
||||
Reference in New Issue
Block a user