Status: Educational
Demonstration project for NVD Data and C#/.NET technologies.
The NVD Reader is a project exploring various .NET technologies, including design patterns and integration with NVD Data from NIST.
-
Docker / Container: The project utilizes Docker for containerization.
-
Redis as Output Cache: Redis is employed as an output cache for efficient data retrieval.
-
Background Service: Incorporates a background service for handling asynchronous tasks.
-
Minimal API with OpenAPI: The project features a minimal API with OpenAPI documentation.
-
Logging with Serilog: Logging is implemented using the Serilog library for comprehensive log management.
-
Feature Flags: Utilizes feature flags to enable/disable specific functionalities dynamically.
-
HttpClient with Retry Policy: Implements HttpClient with a retry policy for improved reliability in network requests.
-
HTTP File Handling: Supports handling of HTTP files for data exchange.
-
Store Data with MongoDB: MongoDB is used as the data store for persistent storage.
-
Unit tests with NSubstitute: Unit tests are created using NSubstitute for effective mocking.
The project consists of two main components:
-
Web Project:
- The web project serves as the main application, providing the minimal API with OpenAPI support and all other key features.
- To start the web project, navigate to the
NvdReader.Apidirectory and run the application.
cd NvdReader.Api dotnet run -
Console Project:
- The console project is designed for background tasks and can be run independently.
- To start the console project, navigate to the
NvdReader.Consoledirectory and run the application.
cd NvdReader.Console dotnet run
- Open the
NvdReader.slnsolution file. - Set the start project to either
NvdReader.ApiorNvdReader.Console. - Optionally, modify the configuration in
appsettings.jsonorlaunchSettings.json. - Start the project.
Contributions are welcome! If you'd like to contribute, follow these steps:
- Fork the project.
- Create a new branch (git checkout -b feature/new-feature).
- Commit your changes (git commit -m 'Add new feature').
- Push to your branch (git push origin feature/new-feature).
- Open a Pull Request.
This project is licensed under the MIT License. Feel free to explore and contribute!