reblGreen.NetCore.Modules 1.1.2

A .NET Core open-source framework for constructing event-driven modular systems. This project was started as a simple project which demonstrated a basic implementation of .NET Managed Extensibility Framework (MEF). It has since grown into an advanced framework designed to simplify building cross-platform plugin-based or modular applications using .NET and platforms which support .NET Core class libraries.

Install-Package reblGreen.NetCore.Modules -Version 1.1.2
dotnet add package reblGreen.NetCore.Modules --version 1.1.2
<PackageReference Include="reblGreen.NetCore.Modules" Version="1.1.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add reblGreen.NetCore.Modules --version 1.1.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

reblGreen.NetCore.Modules

This repository has been moved from BitBucket https://bitbucket.org/reblgreen/reblgreen.netcore.modules/ to GitHub https://github.com/reblGreen/reblGreen.NetCore.Modules and as of 2019/09/05 the BitBucket repository is no longer updated or synchronized with the latest commit history. For latest the source code please use the GitHub repository.

In a one-liner, the aim of the reblGreen.NetCore.Modules project is to make developing customizable applications as simple as possible with all the hard work done by the reblGreen.NetCore.Modules architecture.

This project is open source so please feel free to contribute suggestions, make modifications and pull requests back to the repository.


What and why is reblGreen.NetCore.Modules?

reblGreen.NetCore.Modules is an MIT license .NET Core 2.0 C# Class Library which offers an open-source system for creating event-driven, modular and plugin-based applications.

This project was started as a example project which demonstrated an implementation of Managed Extensibility Framework (MEF). A framework included in Microsoft .NET Framework 4.0 and is also available as an external component at codeplex for older versions of .NET Framework.

It was to demonstrate the architecture and benifits of a strict modular design pattern for developing complex applications.

Although the project was originally built with MEF, not many elements of it were are actually used. MEF was used to load the modules and privately inject the ModuleHost into the Host property of each Module, instead of rolling our own Reflection based loader. Since porting the project to .NET Core, removing MEF references in favor of Reflection was required. (THIS PROJECT NO LONGER DEPENDS ON MICROSOFT EXTENSIBILITY FRAMEWORK).

The project has since grown into an advanced framework designed to simplify the development of cross-platform applications using a modular or plugin-based design pattern. It is compatible with .NET Core 2.0 and platforms which support .NET Core class libraries. We now use this framework as the groundwork for all client projects.

  • reblGreen.NetCore.Modules is a simple, clean and compact .NET Core 2.0 class library for creating plugin-based, modular and customizable applications.

How do I get set up?

Take a look at the reblGreen.NetCore.Modules.ChatModule project in the source code. The ChatModule demonstrates the implementation of a Module in the form of a late 1900s style chatbot. This module shows how to handle a reblGreen.NetCore.Modules.ChatModule.Events.ChatModuleEvent which implements the IEvent interface.

The reblGreen.NetCore.Modules.ChatModule and reblGreen.NetCore.Modules.ChatModule.Events class libraries are referenced in the demo project located at reblGreen.NetCore.Modules.TestApplication, which is a console application. If you run this application without any modification, a console window will be displayed in which you can chat with the ChatBot module by entering text and pressing the return key.

The reblGreen.NetCore.Modules.TestApplication contains a BasicModuleHost class which inherits from reblGreen.NetCore.Modules.ModuleHost. This class implements the reblGreen.NetCore.Modules.Interfaces.IModuleHost interface. The ModuleHost class and implemented interfaces are used for loading modules and invoking the handling of events. There are no other dependency requirements in this project to keep it as simple as possible.

The layout of the projects within the reblGreen.NetCore.Modules directory and solution is to demonstrate the design pattern of keeping modules and corresponding events is seperate class libraries, and then referencing the class libraries from within an application which depends on them.

The core project and examples are well documented and if you get stuck or have any questions, please contact us and we'll be glad to help out.

For further documentation please see the repository wiki.


Contribution guidelines

  • Fork reblGreen.NetCore.Modules, make some changes, make a pull request. Simple!
  • Code will be reviewed when a pull request is made.

Who do I talk to?


License

  • The MIT License (MIT) - You are free to use reblGreen.NetCore.Modules in commercial projects and modify/redistribute the source code provided the copyright notice is not removed.
  • If you use reblGreen.NetCore.Modules in your own project we would love to hear about it, so drop us a line (and even a credit to reblGreen.NetCore.Modules in your project if you feel like being really generous). We would be very happy to hear about your experiences using our reblGreen.NetCore.Modules class library in your projects and any suggestions you may have for us to make it better.

reblGreen.NetCore.Modules

This repository has been moved from BitBucket https://bitbucket.org/reblgreen/reblgreen.netcore.modules/ to GitHub https://github.com/reblGreen/reblGreen.NetCore.Modules and as of 2019/09/05 the BitBucket repository is no longer updated or synchronized with the latest commit history. For latest the source code please use the GitHub repository.

In a one-liner, the aim of the reblGreen.NetCore.Modules project is to make developing customizable applications as simple as possible with all the hard work done by the reblGreen.NetCore.Modules architecture.

This project is open source so please feel free to contribute suggestions, make modifications and pull requests back to the repository.


What and why is reblGreen.NetCore.Modules?

reblGreen.NetCore.Modules is an MIT license .NET Core 2.0 C# Class Library which offers an open-source system for creating event-driven, modular and plugin-based applications.

This project was started as a example project which demonstrated an implementation of Managed Extensibility Framework (MEF). A framework included in Microsoft .NET Framework 4.0 and is also available as an external component at codeplex for older versions of .NET Framework.

It was to demonstrate the architecture and benifits of a strict modular design pattern for developing complex applications.

Although the project was originally built with MEF, not many elements of it were are actually used. MEF was used to load the modules and privately inject the ModuleHost into the Host property of each Module, instead of rolling our own Reflection based loader. Since porting the project to .NET Core, removing MEF references in favor of Reflection was required. (THIS PROJECT NO LONGER DEPENDS ON MICROSOFT EXTENSIBILITY FRAMEWORK).

The project has since grown into an advanced framework designed to simplify the development of cross-platform applications using a modular or plugin-based design pattern. It is compatible with .NET Core 2.0 and platforms which support .NET Core class libraries. We now use this framework as the groundwork for all client projects.

  • reblGreen.NetCore.Modules is a simple, clean and compact .NET Core 2.0 class library for creating plugin-based, modular and customizable applications.

How do I get set up?

Take a look at the reblGreen.NetCore.Modules.ChatModule project in the source code. The ChatModule demonstrates the implementation of a Module in the form of a late 1900s style chatbot. This module shows how to handle a reblGreen.NetCore.Modules.ChatModule.Events.ChatModuleEvent which implements the IEvent interface.

The reblGreen.NetCore.Modules.ChatModule and reblGreen.NetCore.Modules.ChatModule.Events class libraries are referenced in the demo project located at reblGreen.NetCore.Modules.TestApplication, which is a console application. If you run this application without any modification, a console window will be displayed in which you can chat with the ChatBot module by entering text and pressing the return key.

The reblGreen.NetCore.Modules.TestApplication contains a BasicModuleHost class which inherits from reblGreen.NetCore.Modules.ModuleHost. This class implements the reblGreen.NetCore.Modules.Interfaces.IModuleHost interface. The ModuleHost class and implemented interfaces are used for loading modules and invoking the handling of events. There are no other dependency requirements in this project to keep it as simple as possible.

The layout of the projects within the reblGreen.NetCore.Modules directory and solution is to demonstrate the design pattern of keeping modules and corresponding events is seperate class libraries, and then referencing the class libraries from within an application which depends on them.

The core project and examples are well documented and if you get stuck or have any questions, please contact us and we'll be glad to help out.

For further documentation please see the repository wiki.


Contribution guidelines

  • Fork reblGreen.NetCore.Modules, make some changes, make a pull request. Simple!
  • Code will be reviewed when a pull request is made.

Who do I talk to?


License

  • The MIT License (MIT) - You are free to use reblGreen.NetCore.Modules in commercial projects and modify/redistribute the source code provided the copyright notice is not removed.
  • If you use reblGreen.NetCore.Modules in your own project we would love to hear about it, so drop us a line (and even a credit to reblGreen.NetCore.Modules in your project if you feel like being really generous). We would be very happy to hear about your experiences using our reblGreen.NetCore.Modules class library in your projects and any suggestions you may have for us to make it better.

  • .NETCoreApp 2.0

    • No dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.1.2 59 11/20/2019
1.0.3 53 10/28/2019
1.0.2 67 10/17/2019
1.0.1 63 9/23/2019
1.0.0 78 8/27/2019