Sardine.Core
1.1.8
dotnet add package Sardine.Core --version 1.1.8
NuGet\Install-Package Sardine.Core -Version 1.1.8
<PackageReference Include="Sardine.Core" Version="1.1.8" />
paket add Sardine.Core --version 1.1.8
#r "nuget: Sardine.Core, 1.1.8"
// Install Sardine.Core as a Cake Addin #addin nuget:?package=Sardine.Core&version=1.1.8 // Install Sardine.Core as a Cake Tool #tool nuget:?package=Sardine.Core&version=1.1.8
Sardine
Sardine is an open-source framework for developing and executing complex scientific workflows written in C# and built with .NET 8. It is designed to rapidly create and execute data acquisition and processing desktop applications following a modular approach.
Sardine allows the reliable execution of dynamic networks of independent modules - where each module can interface with hardware, process data, or both. It includes integrated logging and UI management, has a low overhead, provides fault-tolerant hardware control, and minimizes downstream delays by providing dedicated data processing queues for each module. Any .NET class can be easily adapted to a Sardine module, facilitating integration with existing codebases.
Our ready-to-use components are available here.
Quick Start
Building a Fleet and Freighting Vessels
using Sardine.Core;
namespace ExampleApplication;
// Create a new Fleet
public class MySystem : Fleet
{
// Declare Vessel properties that will serve as containers for the components
public Vessel<CameraService> CameraProvider { get; }
public Vessel<Camera> ImagingCamera { get; }
public Vessel<DataSaver> FrameSaver { get; }
public MySystem()
{
// Freight the Vessels by providing both dependencies
// and build, initializer, and invalidator methods
CameraProvider = Freighter.Freight<CameraService>(
builder: () => new CameraService()
);
ImagingCamera = Freighter.Freight<Camera>(
CameraProvider,
builder: (provider) => ...,
initializer: (provider, camera) => ...,
invalidator: (provider, camera) => ... );
FrameSaver = Freighter.Freight<DataSaver>(() => ...);
}
}
Adding a data operation
// Write methods matching one of the data operation signatures
public delegate TOut? Source<out TOut>(THandle handle, out bool hasMore);
public delegate TOut? Transformer<in TIn, out TOut>(THandle handle, TIn data, MessageMetadata metadata);
public delegate void Sink<in TIn>(THandle handle, TIn data, MessageMetadata metadata);
// Add data operation to vessels in the Fleet constructor
public MySystem()
{
...
ImagingCamera.AddSource(CameraFrameSource);
FrameSaver.AddSink(FrameSink);
ImagingCamera.SourceRate = 100;
...
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Sardine.Core:
Package | Downloads |
---|---|
Sardine.Core.Views.WPF
Sardine WPF addons for building desktop applications. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.1.8 | 87 | 2/12/2025 |