NetModules 1.3.6
See the version list below for details.
dotnet add package NetModules --version 1.3.6
NuGet\Install-Package NetModules -Version 1.3.6
<PackageReference Include="NetModules" Version="1.3.6" />
<PackageVersion Include="NetModules" Version="1.3.6" />
<PackageReference Include="NetModules" />
paket add NetModules --version 1.3.6
#r "nuget: NetModules, 1.3.6"
#:package NetModules@1.3.6
#addin nuget:?package=NetModules&version=1.3.6
#tool nuget:?package=NetModules&version=1.3.6
NetModules: A Scalable, Abstract Event-Driven Modular Framework
NetModules is an open-source architecture designed for constructing scalable, abstract, event-driven modular systems. Initially conceived as a basic demonstration of the Managed Extensibility Framework (MEF), it has since evolved beyond MEF to provide a robust and flexible architecture for developing cross-platform, plugin-based applications.
Why NetModules?
Modern applications demand adaptability and modularity, and NetModules delivers precisely that by enforcing a strict event-handling paradigm. It allows developers to design highly scalable systems where:
- Event: Strictly adhere to a predefined interface.
- Module: Declare the capability to handle specific Event types.
- ModuleHost: Serves as intermediary, ensuring efficient communication and delegation of event-handling responsibilities.
Deferred Responsibility & Scalability
This architecture simplifies application scaling and future-proofing—modifications only require changes within the event-handling modules rather than a complete system overhaul.
Example: Logging System Upgrade
Imagine your application currently logs data to a local file system. To migrate to an external logging service, instead of modifying every Module that logs data, you simply build or update a dedicated logging Module. Existing modules continue logging events as usual, unaware of the underlying change.
This follows the principle of deferred responsibility a Module raises an Event requesting data or a function call, but it does not need to handle the request itself or understand how it is processed. Instead, another Module, designed to handle that Event type, receives and processes the request, ensuring flexibility and separation of concerns.
Example: Data Requests Between Modules
A Module may trigger an Event requesting certain data. This Module does not need to know where the data comes from or how it is processed—its only concern is receiving the required response. Another Module is responsible for handling the request and determining how and where the data is fetched or computed.
Key Features
- Abstract Event Handling: Events conform to an interface, ensuring consistency and interoperability.
- Modular Design: Modules register their event-handling capabilities dynamically.
- Scalability & Future Development: Easily replace or modify event-handling modules without affecting the broader system.
- Cross-Platform Compatibility: Designed to function across any .NET-supported platform.
Getting Started
Explore the NetModules.ChatModule, which showcases the framework's modular approach through a chatbot implementation. The example demonstrates Event handling using the NetModules.ChatModule.Events.ChatModuleEvent and the IEvent interface.
There are other examples in the repository, including a simle Console logging Module (BasicConsoleLoggingModule) that handles the internal LoggingEvent and outputs to Console, and a basic Module that demonstrates how to work with the CancellableEvent.
For more detailed guidance and examples, visit our repository wiki or our website (coming soon).
Contributing
We welcome contributions! To get involved:
- Fork NetModules, make improvements, and submit a pull request.
- Code will be reviewed upon submission.
- Join discussions via the issues board.
License
NetModules is licensed under the MIT License, allowing unrestricted use, modification, and distribution. If you use NetModules in your own project, we’d love to hear about your experience, and even featur you on our website!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net6.0
- No dependencies.
NuGet packages (5)
Showing the top 5 NuGet packages that depend on NetModules:
| Package | Downloads |
|---|---|
|
NetModules.Settings.LocalSettings
A basic settings module that loads local configuration files into memory. This module handles the NetModules.Events.GetSettingEvent event. Configuration files must be JSON object formatted with a filename that starts with the module's namespace, followed by the module's name, and ending with a .json extension. |
|
|
NetModules.Logging.LocalLogging
A basic logging module. This module writes any NetModules.LoggingEvent data to the console output where available and also writes logs to a file in the Module.WorkingDirectory path using log rotation. |
|
|
NetModules.Cache.Events
This package contains events that can be referenced and handled by an event caching module to return a cached event output. Event caching modules can handle event caching silently and automatically, but can also handle the events in this pacage directly if an event is raised by another module. A usage example could be peer-to-peer module event requests, where a peer may request a cache copy from another peer. |
|
|
NetModules.Cache.MemoryCache
A basic cache module that uses an in-memory mechanism to store event output to a cache, using the event name, input, and optional metadata as a storage and lookup identifier. |
|
|
NetModules.Logging.LocalLogging.Events
This package contains events that are used with the LocalLogging module. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.4.4 | 360 | 11/17/2025 |
| 1.4.3 | 215 | 11/6/2025 |
| 1.4.2 | 215 | 7/10/2025 |
| 1.4.0 | 210 | 6/17/2025 |
| 1.3.9 | 166 | 5/30/2025 |
| 1.3.8 | 431 | 5/7/2025 |
| 1.3.7 | 385 | 5/6/2025 |
| 1.3.6 | 221 | 5/1/2025 |
| 1.3.5 | 205 | 4/12/2025 |
| 1.3.4 | 221 | 3/13/2025 |
| 1.3.3 | 203 | 10/2/2024 |
| 1.3.2 | 181 | 9/2/2024 |
| 1.3.1 | 331 | 10/19/2023 |
| 1.3.0 | 182 | 9/20/2023 |
| 1.2.9 | 190 | 9/20/2023 |
| 1.2.8 | 467 | 4/27/2023 |