Templates
The Matrix Framework uses templates to define reusable service patterns and communication configurations.
Service Templates
Basic Template
Define reusable service patterns:
<Template Name="MonitoredService">
<Template.Resources>
<!-- Define shared resources -->
<MessageHandler Name="HealthCheck">
<Handle Path="/health/*" />
</MessageHandler>
<StateDefinition Name="Metrics">
<Property Name="RequestCount" Type="int" />
<Property Name="ErrorCount" Type="int" />
</StateDefinition>
</Template.Resources>
<!-- Define template structure -->
<ServiceNode>
<ServiceNode.MessageHandlers>
<StaticResource ResourceKey="HealthCheck" />
</ServiceNode.MessageHandlers>
<ServiceNode.State>
<StaticResource ResourceKey="Metrics" />
</ServiceNode.State>
</ServiceNode>
</Template>Template Usage
Apply templates to services:
<Matrix xmlns="http://schemas.matrix.com/network/2024">
<!-- Use template -->
<ServiceNode Name="OrderAPI"
Template="MonitoredService">
<!-- Add service-specific configuration -->
<ServiceNode.MessageHandlers>
<MessageHandler>
<Handle Path="/orders/*" />
</MessageHandler>
</ServiceNode.MessageHandlers>
</ServiceNode>
</Matrix>Communication Templates
Message Patterns
Define reusable message patterns:
<Template Name="RequestResponse">
<Template.Parameters>
<Parameter Name="RequestPath" Type="string" />
<Parameter Name="ResponsePath" Type="string" />
</Template.Parameters>
<MessagePattern>
<!-- Define request handling -->
<MessageHandler Path="{RequestPath}">
<OnMessage>
<!-- Process request -->
<ProcessMessage />
<!-- Send response -->
<SendMessage Path="{ResponsePath}" />
</OnMessage>
</MessageHandler>
</MessagePattern>
</Template>Pattern Usage
Apply communication patterns:
<ServiceNode Name="OrderProcessor">
<!-- Use request-response pattern -->
<ApplyTemplate Name="RequestResponse">
<Template.Arguments>
<Argument Name="RequestPath"
Value="/orders/submit" />
<Argument Name="ResponsePath"
Value="/orders/response" />
</Template.Arguments>
</ApplyTemplate>
</ServiceNode>Best Practices
-
Template Design
- Keep templates focused
- Document parameters
- Version templates
- Test template combinations
-
Resource Management
- Share common resources
- Define clear scopes
- Handle cleanup
- Monitor resource usage
-
Pattern Application
- Choose appropriate patterns
- Configure carefully
- Document usage
- Monitor effectiveness