---
title: Consumption
summary: How a consuming application references, constructs, calls, and disposes the proxy.
status: draft
owner: SAIF.Core documentation
last_reviewed: 2026-09-24
---

# Consumption

**No consumer exists in this repository.** `AgentStateServiceClient` and `ClientAccessPolicyClient` are `public` (`Reference.svcmap:8` sets `GenerateInternalTypes` to `false`), so an external consumer of the `SAIF.SAIFCode.Core` package could construct and call them*, but that is not evidence of use. `SAIF.Services.Web.Proxies` is documented at [its own overview](../../libraries/saif-services-web-proxies/overview.md).

## Reference style

| Field | Value |
| --- | --- |
| Mechanism | Service Reference (svcutil), sourced via WS-MetadataExchange |
| Declared in | `Services/SAIF.Services.Web.Proxies/SAIF.Services.Web.Proxies.csproj` |
| Generated artifacts | `Services/SAIF.Services.Web.Proxies/Service References/CallRexState/Reference.cs`, `Reference.svcmap`, `configuration.svcinfo`, `configuration91.svcinfo`, 2 WSDL files, 6 XSD files, 1 `.datasource` file |
| Target framework | .NET Framework 4.6.2 |
| Regeneration command | Visual Studio "Update Service Reference" |

## Construction

No construction exists in this repository. `AgentStateServiceClient` is a `DuplexClientBase<T>`; every generated constructor requires an `InstanceContext callbackInstance`, and no type in this repository implements the required `IAgentStateServiceCallback` contract to supply one.

| Step | Requirement |
| --- | --- |
| Callback implementation | Not applicable — no type implements `IAgentStateServiceCallback` |
| Endpoint address | Not applicable — never constructed |
| Binding | Not applicable |
| Credentials | Not applicable |

## Endpoint configuration

| Setting | Value | Source | Changeable without a rebuild |
| --- | --- | --- | --- |
| Endpoint address (polling duplex) | `http://callrexprod:8003/AgentStateService` (configured, unused) | `Services/SAIF.Services.Web.Proxies/app.config:71` | Not applicable — no code reads this configuration |
| Endpoint address (WS-Dual) | `http://callrexprod:8003/AgentStateService2` (configured, unused) | `app.config:72` | Not applicable |
| Binding configuration | `customBinding` (binary encoding, no polling-duplex element) and `wsDualHttpBinding` (timeouts, reliable session, `security mode="None"`) | `app.config:38-41,44-48` | Not applicable |

## Resilience

| Concern | Finding | Configurable by consumer | Source | Tech debt |
| --- | --- | --- | --- | --- |
| Timeout | Declared only on the `wsDualHttpBinding` endpoint (`00:01:00`/`00:10:00`); the custom binding uses WCF defaults* | No | `app.config:44-46` | Yes |
| Retry | None configured | No | — | No — not applicable, no caller |
| Circuit breaking | None configured | No | — | No |
| Duplex/callback delivery | `ReceiveState` requires a working `IAgentStateServiceCallback` implementation and an open duplex channel; neither exists in this repository | — | — | Yes |
| Cancellation | Not supported — no code exists to cancel | — | — | No |
| Message size limits | `maxReceivedMessageSize="20000000"`, `readerQuotas maxStringContentLength="8192" maxArrayLength="16384"` on the `wsDualHttpBinding` endpoint only | No | `app.config:44-46` | No |

Because there is no call site, every resilience row is a latent gap rather than an active one: it would matter only if an external `SAIF.SAIFCode.Core` consumer starts calling the proxy and implementing the callback contract.

## Disposal

| Aspect | Finding |
| --- | --- |
| Disposal performed | None found — no call site exists |
| Faulted channel handled | Not applicable |
| Wrapper responsibility | Not applicable — no wrapper exists |
| Source | Not applicable |

## Error handling for consumers

Not applicable — there is no call site, so there is no consumer-visible error-handling behavior to record. No `<wsdl:fault>` elements are declared on either portType regardless.

## Usage examples

No usage example exists in this repository.

## Lifecycle guidance

| Question | Answer |
| --- | --- |
| Construct once or per call | Not applicable |
| Disposable | Yes (`IDisposable` via `ClientBase<T>`/`DuplexClientBase<T>`), if constructed |
| Safe to share across threads | Not determined from source |

## Related documentation
- [Client index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Contract](contract.md)
- [Operation map](operation-map.md)
- [Client reference](reference.md)
- [Dependencies](dependencies.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts.

## Sources
- `Services/SAIF.Services.Web.Proxies/app.config`
- `Services/SAIF.Services.Web.Proxies/Service References/CallRexState/Reference.svcmap`
