netfusion quick start - grecosoft/NetFusion GitHub Wiki

IMAGE Quick Start

This section explains how to get up and running with a microservice that can be used to start a new business solution or complete the sample exercises.

NetFusion In a Nutshell

  • Allows for efficient creation of microservice based solutions.

  • Reduces complexity and provides consistent configuration between microservices.

  • Allows a microservice to be easily bootstrapped from a set of reusable plugins.

  • Allows all plugin implementations to be based on a set of simple concepts.

  • Provides an expendable messaging pipeline based on the CQRS pattern.

  • Provides a set of plugins based on common technologies:

    • RabbitMq
    • Azure Service Bus
    • MongoDB
    • Redis ...
  • Includes a template for creating new microservice based solutions.

  • Introduces new technologies and open-source libraries by implementing new plugins.

  • Very loosely coupled. Only those plugins that a given microservice utilizes are referenced.

  • Provides a consistent methodology for unit-testing.

  • Provides common fluent api used for specifying how domain-events and commands are published to message brokers such as Azure Service Bus and RabbitMQ. The same api is also used to specify how a given message is dispatched to local consumer's when received.

  • Provides detailed logs on how a Microservice was composed from a set of plugins. In addition, each plugin module can provide its own detailed logs.

  • Integrates runtime monitoring of the microservice into the plugin architecture allowing for easy implementation of health checks used by container orchestrators such as Kubernetes.

  • Includes a template for containerizing a microservice by adding project specific files:

    • Docker File
    • Docker Compose File
    • Kubernetes Deployment Resource
    • Scripts for creating a local 3KD or Kind cluster for local development

Installing .NET

Install .NET by following the instructions specific to your operating system.

Install Development Environment

There are several IDEs that can be used to develop .NET applications. Below a few are listed:

Visual Studio Downloads

  • Visual Studio
  • Visual Studio code
  • Visual Studio for Mac

JetBrains Rider

Installing Docker (optional)

While Docker is optional, it is highly recommend. When working through the tutorials dependent on service installations such as MongoDB, RabbitMQ, SQL Server, and/or Redis - these can be quickly executed within containers without local software installs. The tutorial section will provide the Docker compose file used to create the needed services.

Below are the Docker install instructions for the most common operating systems:

Creating Microservices

NetFusion provides a .NET project template that will create a microservice solution at the command line. This solution can then be opened within your development environment of choice. The solution is based on common microservice project structure and organization. The created solution will have folders for common concepts. Most services will not use concepts and the corresponding folder deleted.

When creating microservices that are part of a solution, the following naming convention is suggested: Solution.Context. For example:

  • Auto.Recalls
  • Auto.Services
  • Auto.Sales

View the Templates-Microservice topic to lean how to install the template and create a microservice.

Tutorials

Each section of the Wiki provides tutorials for the following areas:

  • NetFusion Core: Tutorials focused on explaining how a microservice is composed and bootstrapped from plugins containing modules. Also discusses the implementation of settings, microservice monitoring, and validation.
  • NetFusion Messaging: Tutorials focused on explaining how the CQRS patten has been implemented and how it can be extended. Also discusses the concepts of message-publishers, message-filters, and message-enrichers.
  • NetFusion Integration: Tutorials for specific plugins built for integrating microservices using common technologies.
  • NetFusion Services: Tutorials for common services and plugins implementing common patterns.
  • NetFusion Web: Tutorials for exposing a REST interfaces based on HAL.

IMAGENote: The source code for the examples can be found within the following repository:

https://github.com/grecosoft/NetFusion-Examples