Products

image2

PortGap

PortGap is a framework that manages the transfer of messages/data between parties. It is effectively a piece of a messaging framework, where you control the communication protocol and destinations, and PortGap controls the sending, retries and persistence of messages. 


PortGap has built in retry mechanisms, exponential back-off strategies, priority sending, scheduled sending, sent message archiving, at most once delivery, and other useful features. It is also feasible to build your own messaging framework on top of PortGap, or use it to integrate with a message broker, such as RabbitMQ.


Once you've implemented the communication method specific to your application (Web API call, TCP, RabbitMQ, etc.), PortGap will handle the execution of the message sending, retries and send expiry. With PortGap hooked into your persistence, you can also be sure that your messages don't get 'lost'.


PortGap is production ready, with numerous enhancements and features underway.

image3

VALIDON

Validon is a validation package designed to be clean, lightweight and extremely extensible.

Validators are built on extension methods, so you can add your own as you need them.


We've created a separate Terralect.Validon.General package that extends the base Validon package. The 'General' package provides most of your basic validations, but can be extended to suit your requirements.


The fluent syntax makes validation simple and easy to follow:


   Validate.ThatAll(people)

       .Value(p => p.FirstNames).IsNotEmpty()

       .Value(p => p.FirstNames).IsLetters()

       .Value(p => p.DateOfBirth).HasValue()

       .Value(p => p.NumberOfPets).Between(2, 3)

       .Value(p => p.HeightInCms).Between(100, 180)

       .Value(p => p.IsHungry).IsFalse()

image4

Channel Express

A Mediator Pattern implementation. 


Built using the simple, yet powerful, Terralect.Channels package.


channel.Send

channel.Send<>()

channel.SendAsync()

channel.SendAsync<>()

channel.SendMany<>()

channel.SendManyAsync<>()

 

image5

SchedulEase

A simple scheduler for repeating tasks. 


Get Terralect.SchedulEase on NuGet.


Decorate a class with 'ScheduledWorker', and configure your worker schedules at startup:


    var service = SchedulEaseSetup.Configure(proxy, config =>
   {
       config.AddWorker<Worker1>(TimeSpan.FromMinutes(30));
       config.AddWorker<Worker2>(TimeSpan.FromSeconds(5));
   });
   service.Start(new CancellationToken());