Overview
TheIntent.Application.Contracts.Clients module generates client-side service contracts for consuming your application services from other applications. This is particularly useful for microservices architectures, integration projects, and creating client SDKs.
Module:
Intent.Application.Contracts.ClientsVersion: 5.1.6+Dependencies:Intent.Common.CSharpIntent.Modelers.ServicesIntent.Modelers.Services.CQRSIntent.Modelers.Types.ServiceProxies
Key Features
- Client DTOs: Generate client-side DTO contracts
- Service Proxies: Interface definitions for service clients
- Paginated Results: Client-side pagination support
- Type Safety: Strongly-typed contracts
- Enum Contracts: Client-side enum definitions
- Separation of Concerns: Keep client contracts separate from server implementation
Use Cases
Microservices
Service A consumes Service B’s contracts
Client SDKs
Distribute client libraries for your API
Integration Projects
Connect to external services
BFF Pattern
Backend-for-Frontend service integration
Installation
Architecture
Typical Setup
Generated Components
Client DTO Contracts
Client Service Contract
Generated Client Interface
Client Enum Contracts
Generated Enum
Paginated Results
The module generates client-side pagination types:Client PagedResult
Configuration in Designer
Creating a Service Proxy
Implementation Examples
HTTP Client Implementation
Implement the client interface usingHttpClient:
OrderServiceClient.cs
Dependency Injection Setup
Startup.cs / Program.cs
Using the Client
WarehouseService.cs
gRPC Client Support
For gRPC services, implement the client differently:gRPC Client
Advanced Scenarios
Authentication & Authorization
Add authentication to client calls:Authenticated Client
Circuit Breaker Pattern
Resilient Client
Caching
Add caching to reduce service calls:Cached Client
Testing
Mocking Client Contracts
Unit Test
Best Practices
Use Interface Segregation
Use Interface Segregation
Create focused client interfaces that only expose the operations a particular client needs:
Version Your Contracts
Version Your Contracts
Use versioned namespaces or separate packages for different API versions:
Implement Resilience
Implement Resilience
Always add retry logic, circuit breakers, and timeouts:
Handle Failures Gracefully
Handle Failures Gracefully
Always handle potential failures:
Default Output Location
Generated client contracts are placed in:Related Modules
- Application Contracts - Server-side contracts
- DTOs - Data transfer objects
- HTTP Clients - HTTP client infrastructure
- Service Proxies - Service proxy modeling
Troubleshooting
Contracts Not Generated
Contracts Not Generated
Issue: Client contracts aren’t being created.Solution:
- Verify
Intent.Application.Contracts.Clientsis installed - Check that Service Proxy is properly configured in the designer
- Ensure source service is correctly referenced
- Run Software Factory
Type Mismatches
Type Mismatches
Issue: Client DTOs don’t match server DTOs.Solution:
- Ensure both applications use the same source designer files
- Regenerate both server and client contracts
- Check for designer synchronization issues
