Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 1 - Introduction
[.NET, C#, OpenSource, Design]
This is Part 1 of a series on Designing, Building & Packaging A Scalable, Testable .NET Open Source Component.
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 1 - Introduction (This Post)
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 2 - Basic Requirements
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 3 - Project Setup
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 4 - Types & Contracts
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 5 - Component Implementation
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 6 - Mocking & Behaviour Tests
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 7 - Sequence Verification With Moq
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 8 - Compressor Implementation
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 9 - Encryptor Implementation
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 10 - In Memory Storage
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 11 - SQL Server Storage
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 12 - PostgreSQL Storage
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 13 - Database Configuration
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 14 - Virtualizing Infrastructure
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 15 - Test Organization
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 16 - Large File Consideration
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 17 - Large File Consideration On PostgreSQL
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 18 - Azure Blob Storage
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 19 - Testing Azure Blob Storage Locally
I am working on a pet project that requires the uploading and storage of files before processing them. As I was doing so I realized that this is a problem I keep having, and chances are somebody else is too.
This is an excellent opportunity to consolidate many of the topics we have discussed over the last six months.
We will therefore walk through the following:
- Articulating our requirements
- Preparing a design
- Building the component
- Testing the component
- Packaging the component
- Deploying the component
- Iterration
- Documentation
I will build this in public, with the source code available to anyone interested in GitHub. I will do my best to document everything for clarity, as this is an opportunity to not only teach but also learn myself.
Topics I expect to cover in the course of this series are:
- Testing
- Unit testing
- Mocking
- Integration testing
- Classes & Types
- Interfaces
- Records & classes
- Enums
- I/O
- File Streams
- Memory Streams
- Bytes & byte arrays
- Compression
- Dependency injection
- Database access & storage
- SQL Server
- PostgreSQL
- File system access & storage
- Cloud (Blob) storage and access
- Azure
- Amazon
- Documentation
- OpenAI
- MarkDown
- XML Documentation
- Continuous Integration
- Logging
As usual, I will assume no prior knowledge (besides basic programming experience - how to write a class and compile your code).
This should be fun!
TLDR
I am going to publicly build a very simple open-source component to manage uploaded files.
Happy hacking!