Intropy.Framework.Blocks
2.0.0-beta.1
See the version list below for details.
dotnet add package Intropy.Framework.Blocks --version 2.0.0-beta.1
NuGet\Install-Package Intropy.Framework.Blocks -Version 2.0.0-beta.1
<PackageReference Include="Intropy.Framework.Blocks" Version="2.0.0-beta.1" />
<PackageVersion Include="Intropy.Framework.Blocks" Version="2.0.0-beta.1" />
<PackageReference Include="Intropy.Framework.Blocks" />
paket add Intropy.Framework.Blocks --version 2.0.0-beta.1
#r "nuget: Intropy.Framework.Blocks, 2.0.0-beta.1"
#:package Intropy.Framework.Blocks@2.0.0-beta.1
#addin nuget:?package=Intropy.Framework.Blocks&version=2.0.0-beta.1&prerelease
#tool nuget:?package=Intropy.Framework.Blocks&version=2.0.0-beta.1&prerelease
Intropy.Framework.Blocks
Reusable pipeline blocks for the Intropy.Framework pipeline framework.
Each block is a ready-made pipeline shape for a common integration pattern:
| Block | Input → Output | Use case |
|---|---|---|
| Extractor | string → CloudEvent |
System-to-queue: extract data, transform, publish as CloudEvent |
| Loader | CloudEvent → TOutput |
Queue-to-system: consume CloudEvent, transform, send |
| TransactionalIntegration | File-based | Receive files → enqueue → process → send, with idempotency |
Each block exposes a fluent builder and wires up deserialization, validation, transformation, idempotency, and finalizers in the right order.
Configuring steps: DI vs. instance
The builders follow one rule for how steps are supplied:
- External edges are DI-resolvable. Idempotency (
WithIdempotency), business incidents (WithBusinessIncidents), and the send/publish edge (WithDaprTopicPublisher,WithDaprServiceInvoker,WithSenderFromServices) resolve their infrastructure clients from the service provider. This keeps the "which external system?" decision in service registration, and lets tests substitute a fake by replacing the registration. - Component logic is instance-passed. Deserializers, validators, transformers, serializers, and
extract steps are component-owned and passed directly to the builder (
WithDeserializer,WithTransformer, ...).
For the send edge, WithSenderFromServices() resolves the sender registered against its abstract base
type — SendStep<TCtx> for the Extractor, SendStep<TOutput, TCtx> for the Loader:
// Registration (composition root)
services.AddSingleton<SendStep<OrderContext>>(sp =>
new DaprTopicPublisher<OrderContext>(
sp.GetRequiredService<DaprClient>(), "pubsub", "orders",
new Uri("urn:company:system:erp"), "com.company.order.extracted"));
// Builder
var extractor = ExtractorBuilder<Order, OrderDto, OrderContext>.Create("orders", sp)
// ... other steps ...
.WithSenderFromServices()
.Build();
The sender is resolved once, when WithSenderFromServices() is called — register it as a singleton (or transient), not scoped.
The CloudEvent envelope (Extractor)
CloudEventSerializeStep builds the envelope from component-supplied extractors — subject,
time, and optionally type. The send steps (DaprTopicPublisher, DaprServiceInvoker) set
source from configuration and apply their configured type as a fallback when the serializer
did not set one.
The optional type extractor classifies the same payload into different event types, from the
output and the pipeline context:
.WithSerializer(new CloudEventSerializeStep<Order, OrderContext>(
subject: o => o.OrderId,
time: o => o.ChangedAt,
type: (o, _) => o.Status == 0 ? "io.intropy.orders.new" : "io.intropy.orders.cancelled"))
A configured type extractor that resolves to null, empty, or whitespace is a technical failure — consumers route on the type, so an event without one must never be published.
Install
dotnet add package Intropy.Framework.Blocks
License
MIT. See the repository for source and documentation.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- CloudNative.CloudEvents (>= 2.8.0)
- CloudNative.CloudEvents.SystemTextJson (>= 2.8.0)
- Dapr.Client (>= 1.18.10)
- Intropy.Framework.Adapters (>= 2.0.0-beta.1)
- Intropy.Framework.Core (>= 2.0.0-beta.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Intropy.Framework.Blocks:
| Package | Downloads |
|---|---|
|
Intropy.Framework.Hosting
Runtime orchestration (Dapr sidecar lifecycle, idle timeout, message subscription) for the Intropy.Framework pipeline framework. |
|
|
Intropy.Framework.Testing
Hand-rolled fakes and delivery helpers for component integration tests against the Intropy.Framework pipeline framework. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.1.0-beta.6 | 61 | 10/23/2026 |
| 2.1.0-beta.5 | 36 | 10/23/2026 |
| 2.1.0-beta.4 | 72 | 10/22/2026 |
| 2.1.0-beta.3 | 55 | 10/21/2026 |
| 2.1.0-beta.2 | 118 | 10/19/2026 |
| 2.1.0-beta.1 | 54 | 10/19/2026 |
| 2.0.1-beta.1 | 57 | 10/16/2026 |
| 2.0.0-beta.1 | 81 | 10/15/2026 |
| 1.2.1-beta.5 | 63 | 10/14/2026 |
| 1.2.1-beta.4 | 58 | 10/13/2026 |
| 1.2.1-beta.2 | 60 | 10/13/2026 |
| 1.2.1-beta.1 | 58 | 10/13/2026 |
| 1.2.0-beta.3 | 86 | 10/8/2026 |
| 1.2.0-beta.2 | 62 | 10/8/2026 |
| 1.2.0-beta.1 | 68 | 10/7/2026 |
| 1.1.0-beta.4 | 74 | 9/29/2026 |
| 1.1.0-beta.3 | 75 | 9/29/2026 |
| 1.1.0-beta.2 | 73 | 9/29/2026 |
| 1.1.0-beta.1 | 66 | 9/28/2026 |
| 0.2.3 | 327 | 5/27/2026 |