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.

Namespaces
NamespaceDescription
Couchbase
ICSharpCode.SharpZipLib.Zip
Microsoft.Net.Http.Client
NATS.Client
This namespace extends the standard NATS messaging types.
Neon
Neon.Cadence
This namespace defines the Neon .NET client for the Uber Cadence workflow service.
Neon.Cadence.Internal
Neon.Cassandra
This namespace includes Cassandra related extensions and utilities.
Neon.Collections
This namespace defines a handful of probably archaic custom collection classes.
Neon.Common
This namespace includes generally useful types that are consumed by the remaining neonLIBRARY libraries and can also be useful for end-user applications.
Neon.Cryptography
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).
Neon.Csv
This namespace includes types for reading and writing Comma Separated Value (CSV) formatted data.
Neon.Data
This namespace defines some data converters as well as types and interfaces supporting ModelGen generated data types.
Neon.Deployment

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.
Neon.Diagnostics
This namespace includes the common logging code used throughout Neon applications and libraries.
Neon.HyperV
Internal namespace.
Neon.IO
This namespace includes some handy file and stream related types.
Neon.ModelGen

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.

Neon.Net
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.
Neon.Postgres
This namespace includes Postgres related extensions and utilities.
Neon.Retry
This namespace includes simple types that can be used to mitigate transient errors.
Neon.Service
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.
Neon.SSH

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.
Neon.Tasks
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.
Neon.Temporal
This namespace defines the Neon .NET client for the Uber Temporal workflow service.
Neon.Temporal.Internal
Neon.Time
This namespace includes some time related types.
Neon.Web
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.
Neon.Windows
This namespace defines low-level Windows P/Invoke mappings as well as a simply class that can execute PowerShell commands.
Neon.Xunit
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.
Neon.Xunit.Cadence
This namespace includes the Cadence workflow Xunit test fixture.
Neon.Xunit.Couchbase
This namespace includes a Couchbase Xunit test fixture.
Neon.Xunit.Temporal
This namespace includes the Temporal workflow Xunit test fixture.
Neon.Xunit.YugaByte
This namespace includes the YugaByte database Xunit test fixture.
Neon.YugaByte
This namespace includes the YugaByte related utilities and extensions.
Newtonsoft.Json.Linq
STAN.Client
This namespace extends the standard NATS streaming client.
System
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.
System.Collections.Generic
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.
System.Diagnostics.Contracts
The System.Diagnostics.Contracts namespace contains static classes for representing program contracts such as preconditions, postconditions, and invariants.
System.IO
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.
System.Net.Http
The System.Net.Http namespace provides a programming interface for modern HTTP applications.
System.Reflection
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.
System.Text
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.
YamlDotNet.RepresentationModel