Click or drag to resize

Neon Namespaces

The Neon class libraries organizes classes in several namespaces. Most classes are defined in Neon.* namespaces but we do define some extension methods within non-Neon namespaces for ease of use.

This namespace extends the standard NATS messaging types.
This namespace defines the Neon .NET client for the Uber Cadence workflow service.
This namespace includes Cassandra related extensions and utilities.
This namespace defines a handful of probably archaic custom collection classes.
This namespace includes generally useful types that are consumed by the remaining neonLIBRARY libraries and can also be useful for end-user applications.
This namespace Includes some cryptographic helper methods and extensuions making operations like MD5 or SHA-* hashing easier as well as the NeonVault class which can be used to persist encrypted data (inspired by Ansible Vault).
This namespace includes types for reading and writing Comma Separated Value (CSV) formatted data.
This namespace defines some data converters as well as types and interfaces supporting ModelGen generated data types.

The Neon.Deployment library includes utility classes for managing deployments for CI/CD.

Note Note
These classes are not entirely general purpose at this point. neonFORGE maintainers are currently using this for CI/CD for opensource and private neonFORGE related projects. We may make these more generic in the future.
This namespace includes the common logging code used throughout Neon applications and libraries.
Internal namespace.
This namespace includes some handy file and stream related types.

This namespace includes the types used to generate data models from interface definitions. These models can be built to support round-tripping data without loss as well as optionally adding INotifyPropertyChanged related code for UX binding.

You can use these classes to integrate model generation into your own tooling or use the Neon.ModelGenerator package which includes the pre-built neon-modelgen command line tool. You'll add a reference to this package to your project and then add a custom build target to invoke neon-modelgen.

This namespace defines JsonClient which makes calling REST APIs easier as well as a handful of other network related utilities provided by NetHelper and Pinger.
This namespace includes Postgres related extensions and utilities.
This namespace includes simple types that can be used to mitigate transient errors.
This namespace includes types that implement much of the boilerplate code for a service application suitable for deploying as a Docker container, a Kubernetes pod, or just a stand alone service.

This namespace includes the LinuxSshProxyTMetadata, LinuxSshProxy and related classes that wrap and extend the base SSH.NET library clients with additional support for managing remote Linux machines via SSH including executing commands, scripts, uploading/downloading files, and performing idempotent operations. Remote command executions and their results can also be logged locally via a TextWriter (using a completely non-standard but still useful logging format).

The other major type is CommandBundle. Command bundles provide a way to upload a script or executable to a temporary working directory and then run the script or program in the context of the working directory so the script or program will have access to the files.Command bundle executions can also tolerate transient network disconnections.

Note Note
This package has been tested against remote machines running Ubuntu 18.04+ and will probably run fine on many other Debian-based distributions. RedHat and other non-Debian distributions probably won't be compatible.
This namespace includes a handful of types that implement the async equivalent of primitives like auto/manual reset events, mutexes, reader/writer locks, and timers. This also includes SyncContext which can be used to easily clear the synchronization context within API implementations.
This namespace defines the Neon .NET client for the Uber Temporal workflow service.
This namespace includes some time related types.
This namespace includes the NeonController and NeonControllerBase which can be used as the base classes for your ASP.NET controllers. These add logging capabilities to your AP.NET applications.
This namespace defines low-level Windows P/Invoke mappings as well as a simply class that can execute PowerShell commands.
This namespace includes unit test related helper classes include Xunit test fixtures for ASP.NET, Docker Containers, Docker Swarm, Environment variables, DNS (local hosts file), Kube services, NATS/STAN message queues.
This namespace includes the Cadence workflow Xunit test fixture.
This namespace includes a Couchbase Xunit test fixture.
This namespace includes the Temporal workflow Xunit test fixture.
This namespace includes the YugaByte database Xunit test fixture.
This namespace includes the YugaByte related utilities and extensions.
This namespace extends the standard NATS streaming client.
The System namespace contains fundamental classes and base classes that define commonly-used value and reference data types, events and event handlers, interfaces, attributes, and processing exceptions.
The System.Collections.Generic namespace contains interfaces and classes that define generic collections, which allow users to create strongly typed collections that provide better type safety and performance than non-generic strongly typed collections.
The System.Diagnostics.Contracts namespace contains static classes for representing program contracts such as preconditions, postconditions, and invariants.
The System.IO namespace contains types that allow reading and writing to files and data streams, and types that provide basic file and directory support.
The System.Net.Http namespace provides a programming interface for modern HTTP applications.
The System.Reflection namespace contains types that retrieve information about assemblies, modules, members, parameters, and other entities in managed code by examining their metadata. These types also can be used to manipulate instances of loaded types, for example to hook up events or to invoke methods. To dynamically create types, use the System.Reflection.Emit namespace.
The System.Text namespace contains classes that represent ASCII and Unicode character encodings; abstract base classes for converting blocks of characters to and from blocks of bytes; and a helper class that manipulates and formats String objects without creating intermediate instances of String.