Tesseract

Date: 05/01/2022

TESSERACT

TesseractLogo

A library of NetCore tools to help rapidly develop well performant micro/macroservices.

Prototypes you could send to production!

Why Make A Tesseract Powered Dataflow

Dataflows have concurrency, serialization, monitoring, compression, and encryption all as first class citizens. This paradigm allows developers to just focus on the important stuff - getting work done. Dataflows pay attention to the extra dimensions so you don't have to!

Here are some features ready with RabbitMQ today, tomorrow - the world!

Queueing

  • Async Processing
  • Retriability
  • Chaos Engineering
  • Connection/Channel Durability provided by HouseofCat.RabbitMQ formerly CookedRabbit.Core.

Built-Ins

  • Supports ILogger<T>
  • Concurrency/Parallelism - baked in from the ground up.
  • Contracted WorkState/WorkObject simplifies development and integration.
  • Has Json (3 flavors) and MessagePack serialization providers.
  • Allow transparent encryption/decryption steps.
  • Allow compression/decompression steps to reduce trip time over the wire.
  • Async Error Handling with Predicate triggers and an actionable callback.

Interchangeability

  • Allows you to replace serialization provider with HouseofCat Provider wrappers.
  • Allows you to replace encryption provider with HouseofCat Provider wrappers.
  • Allows you to replace compression provider with HouseofCat Provider wrappers.
  • Constructed to fully support Inversion of Control.

Business Logic

  • All steps process in the order provided allowing you to still control order of execution.
  • All automatically subscribed to Async Error handling by WorkState.IsFaulted flag.

Testing

  • All built-in steps will have integration tests that should remove concerns from end-user developer.
  • Future case will include much more complex abstract UnitTesting as time allows.
  • The developer should only need to unit test their functional business code.

Implicit Benefits

The benefits of a dataflow pattern extend beyond fancy machine learning and Tensorflows or high throughput GCP Dataflow for mass computation. When brought to the service level, it helps organize your code into more manageable blocks. You can still write monolithic functions, but you would be hamstringing yourself and scarificing concurrency and parallelism. By designing code into small functional steps, you always write better, cleaner, code reduced with cyclomatic complexity. That very same code is easier to UnitTest. The orchestration of the function calls are the order they are added allowing you extend the original functionality infinitely. You don't have to write deserialization or post-processing encryption/compression as they all baked in. Designing from the ground up with concurrency and parallelism, you stay nimble and fast - able to scale up internally, before horizontally and vertically, saving costs. All without needing code changed or refactored.

Lastly, after everything is said and done, all your business code is re-usable. Should you decide to abandon this workflow (:worried:) for a different mechanism, engine, or what not, all of your code will happily port to whatever other project / flow you are working with and so will all your testing making it a win win.

Help

You will find library usage examples in the examples folder. You also can find generic NetCore how-tos and tutorials located in there. The code quality of the entire library will improve over time. Codacy allows me to review code and openly share any pain points so submit a PR to help keep this an A rated library!

Check out each project for additional README.md. They will provide additional instructions/examples.

Status

Codacy Badge

build

Gitter

HouseofCat.Algorithms

NuGet
NuGet

A library that has a collection of algorithms as I have time to learn and play with them.

HouseofCat.Compression

NuGet
NuGet

A library that has a collection of builtin NetCore compression providers.

HouseofCat.Compression.LZ4

NuGet
NuGet

A library that focuses on implementing the LZ4 compression provider.

HouseofCat.Compression.Recyclable

NuGet
NuGet

A library that has a collection of builtin NetCore compression providers that uses object pools and RecyclableMemoryStreams.

HouseofCat.Dapper

NuGet
NuGet

A library that provides helper methods for integrating Dapper.

HouseofCat.Data

NuGet
NuGet

A library that provides the provides helper classes for data manipulation and transformation.

HouseofCat.Data.Database

NuGet
NuGet

A library that provides the provides a Database Connection Factory and Sql Generation.

Database Connection Factory Support

  • System.Data.SqlClient
  • Microsoft.Data.SqlClient
  • MySql.Data.MySqlClient
  • Npgsq
  • MySql.Data
  • Oracle
  • SQLite

Sql Query Generation

  • SqlServer
  • MySql
  • PostgreSql
  • Firebird
  • Oracle
  • SQLite

HouseofCat.Data.Parquet

NuGet
NuGet

A library that helps extract databases to parquet file (IDataReader → Snappy compressed Parquet files.)

HouseofCat.Data.Recyclable

NuGet
NuGet

A library that provides the provides helper classes for data manipulation and transformation that uses object pooling and RecyclableMemoryStreams.

HouseofCat.Dataflows

NuGet
NuGet

A library that provides the base magic Dataflows for Tesseract.

HouseofCat.Dataflows.Pipelines

NuGet
NuGet

A library that provides the base magic Pipelines for Tesseract.

HouseofCat.Encryption

NuGet
NuGet

A library that provides encryption contracts and a base AesGCM NetCore provider.

HouseofCat.Encryption.BouncyCastle

NuGet
NuGet

A library that provides encryption from the BouncyCastle provider.

HouseofCat.Encryption.Recyclable

NuGet
NuGet

A library that provides encryption from base AesGcm class in NetCore but with ArrayPools and RecyclableMemoryStreams.

HouseofCat.Extensions

NuGet
NuGet

A library that focuses on extending functionality to other objects.

HouseofCat.Framing

NuGet
NuGet

A library that focuses on simplifying reading groups of byte[] (designated as frames).

HouseofCat.Gremlins

NuGet
NuGet

A library that focuses on Chaos Engineering. Currently targets Windows OS.

HouseofCat.Gremlins.SqlServer

NuGet
NuGet

A library that focuses on Chaos Engineering with SqlServer. Currently targets System.Data.SqlClient.

HouseofCat.Hashing

NuGet
NuGet

A library that focuses on implementing hashing.

HouseofCat.Hashing.Argon

NuGet
NuGet

A library that focuses on implementing Argon hashing.

HouseofCat.Logger

NuGet
NuGet

A library that focuses on getting Microsoft.Extensions.LoggerFactory implemented adhoc globally.

HouseofCat.Network

NuGet
NuGet

A library that focuses on making it easier to deal with systems networking.

HouseofCat.RabbitMQ

NuGet
NuGet

A library that focuses on RabbitMQ connection and channel management to create fault tolerant Publishers and Consumers.

Formerly found at RabbitMQ.Core
NuGet
NuGet

Deprecated - Using Official Pivotal/VMWare client again.

HouseofCat.RabbitMQ.Client

NuGet
NuGet

A library that focuses on cloning the official Pivotal/VMWare RabbitMQ DotNetClient but ported to pure NetCore 3.1/5.x with small code enhancements.

Formerly found at RabbitMQ.Core
NuGet
NuGet

HouseofCat.RabbitMQ.Dataflows

NuGet
NuGet

A library that extends HouseofCat.RabbitMQ functionality by providing epic TPL Dataflow usage for Tesseract.

HouseofCat.RabbitMQ.Mailkit

NuGet
NuGet

A library that extends HouseofCat.RabbitMQ.Services to simplify using Mailkit (Email) with the HouseofCat.RabbitMQ library.

HouseofCat.RabbitMQ.Pipelines

NuGet
NuGet

A library that extends HouseofCat.RabbitMQ functionality by providing simplified TPL Dataflow usage called Pipelines.

HouseofCat.RabbitMQ.Services

NuGet
NuGet

A library that extends HouseofCat.RabbitMQ to simplify using the HouseofCat.RabbitMQ library.

HouseofCat.RabbitMQ.Twilio

NuGet
NuGet

A library that extends HouseofCat.RabbitMQ.Services to simplify using Twilio (SMS/TextMessages) with the HouseofCat.RabbitMQ library.

HouseofCat.RabbitMQ.WorkState

NuGet
NuGet

A library that creates the shared WorkState classes for HouseofCat.RabbitMQ.

HouseofCat.Recyclable

NuGet
NuGet

A library that focuses on Recyclable classes and pooling.

HouseofCat.Reflection

NuGet
NuGet

A library that focuses on Reflection hackery.

HouseofCat.Serialization

NuGet
NuGet

A library that focuses on making it easier to deal with Serialization.

HouseofCat.Serialization.Json.Newtonsoft

NuGet
NuGet

A library that focuses on making it easier to deal with Newtonsoft Json Serialization.

HouseofCat.Serialization.Json.Utf8Json

NuGet
NuGet

A library that focuses on making it easier to deal with Utf8Json Json Serialization.

HouseofCat.Serialization.MessagePack

NuGet
NuGet

A library that focuses on making it easier to deal with MessagePack Serialization.

HouseofCat.Serilog

NuGet
NuGet

A library that focuses on extending IHost functionality to quickly setup Serilog.

HouseofCat.Sockets

NuGet
NuGet

A library that focuses on making it easier to deal with socket communication.

HouseofCat.Sockets.Utf8Json

NuGet
NuGet

A library that focuses on making it easier to deal with sockets communication with Utf8Json.

HouseofCat.Utilities

NuGet
NuGet

A library that focuses on general purpose utilities and functions that simplify the coding experience.

HouseofCat.Windows.Keyboard

NuGet
NuGet

A library that focuses on interacting, filtering, and/or replaying user inputs on Windows, specifically Keyboard.

HouseofCat.Windows.NativeMethods

NuGet
NuGet

A library that focuses on consolidating Windows NativeMethods calls used by my libaries.

HouseofCat.Windows.Threading

NuGet
NuGet

A library that focuses on simplifying affinity and thread management.

HouseofCat.Windows.WMI

NuGet
NuGet

A library that focuses on performing System.Management (Windows.Compatibility.Pack) WMI Queries.

HouseofCat.io

Have an issue? Make an Edit and Pull Request here :)