Axial.PlatformService
0.8.0
Prefix Reserved
See the version list below for details.
dotnet add package Axial.PlatformService --version 0.8.0
NuGet\Install-Package Axial.PlatformService -Version 0.8.0
<PackageReference Include="Axial.PlatformService" Version="0.8.0" />
<PackageVersion Include="Axial.PlatformService" Version="0.8.0" />
<PackageReference Include="Axial.PlatformService" />
paket add Axial.PlatformService --version 0.8.0
#r "nuget: Axial.PlatformService, 0.8.0"
#:package Axial.PlatformService@0.8.0
#addin nuget:?package=Axial.PlatformService&version=0.8.0
#tool nuget:?package=Axial.PlatformService&version=0.8.0
Axial
<picture> <source media="(prefers-color-scheme: dark)" srcset="docs/content/img/axial-readme-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="docs/content/img/axial-readme-light.svg"> <img alt="Axial" src="docs/content/img/axial-readme-light.svg" width="160"> </picture>
Write asynchronous F# workflows whose expected failures and required dependencies are visible in their types.
Axial is pre-1.0 and its API may change before the first stable release.
Your first flow
A handler usually needs services and can fail, but a Task signature shows neither fact. Flow<'env, 'error, 'value>
makes both part of the contract.
open Axial
type CheckoutError =
| OrderNotFound of orderId: int
| PaymentDeclined of reason: string
type Receipt = { OrderId: int; Total: decimal; Reference: string }
type CheckoutEnv =
{ FindTotal: int -> ColdTask<Result<decimal, CheckoutError>>
Charge: decimal -> ColdTask<Result<string, CheckoutError>> }
let checkout orderId : Flow<CheckoutEnv, CheckoutError, Receipt> =
flow {
let! findTotal = Flow.envWith _.FindTotal
let! charge = Flow.envWith _.Charge
let! total = findTotal orderId
let! reference = charge total
return { OrderId = orderId; Total = total; Reference = reference }
}
The application supplies live functions. A test supplies a record of fakes. The workflow does not change.
Adding a timeout, a retry policy, and a resource that must be released does not change the signature either, because the runtime that starts the workflow owns cancellation, retries, and cleanup:
open System
let checkoutOrder orderId : Flow<CheckoutEnv, CheckoutError, Receipt> =
checkout orderId
|> Flow.Runtime.retry (RetryPolicy.noDelay 3)
|> Flow.Runtime.timeout (TimeSpan.FromSeconds 5.0) (PaymentDeclined "checkout timed out")
Flow also carries concurrency, scheduling, streams, and structured child fibers through the same runtime.
Install
dotnet add package Axial
Package family
Axial— the core workflow model: typed failures, dependencies, concurrency, resources, schedules, streams, and layers.Axial.Process— external process composition, pipelines, streaming output, typed failures, cancellation, and cleanup.Axial.HttpClient— typed HTTP requests, response handling, and reliability policies.
Supporting packages provide platform services, console and file-system access, hosting, and telemetry. The package catalogue links the first-class libraries and the complete compatibility matrix.
Documentation and examples
- Getting started
- Add Axial to an existing Task application
- Failures and defects
- Dependencies and services
- Concurrency
- Process
- HTTP client
- Runnable examples
- Integration reference application
Reified integration
Reified declares value, model, JSON, and HTTP contracts. Axial's optional server adapters execute Reified HTTP contracts as workflows; neither core depends on the other.
Declare a contract with Reified. Serve it with Axial.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Axial (>= 0.8.0)
- Axial.Layers (>= 0.8.0)
- FSharp.Core (>= 10.1.401)
-
net8.0
- Axial (>= 0.8.0)
- Axial.Layers (>= 0.8.0)
- FSharp.Core (>= 10.1.401)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Axial.PlatformService:
| Package | Downloads |
|---|---|
|
Axial.Hosting.Node
Node.js signals, process exit, arguments, and environment adapters for Axial Flow applications compiled with Fable. |
|
|
Axial.Process
Composable external processes for F# workflows, with pipelines, streaming, typed failures, cancellation and safe cleanup. |
|
|
Axial.HttpClient
Typed HTTP workflows for F#, with composable requests, response handling, reliability and Axial integration. |
|
|
Axial.Hosting
Host integration and IServiceProvider adapters for Axial runtimes and flow platform services. |
GitHub repositories
This package is not used by any popular GitHub repositories.