System.Ben
System.Ben copied to clipboard
Needs to be factored correctly
I've noticed that you have a single binary System.Ben.dll. As it stands, this won't work across the breadth of platforms that run .NET; phones, desktops, nano servers, fridges and Phony's new Toastmaster 3000.
I'd recommend factoring this out into multiple assemblies:
| Assembly | Description |
|---|---|
| System.Ben.dll | Type-forwarding facade that forwards onto the other dlls for compatibility |
| System.Ben.Core.dll | Core API containing exchange types that runs everywhere |
| System.Ben.Core.Extensions.dll | Core API containing extension types that runs everywhere |
| System.Ben.Devices.dll | API containing types for devices that are smaller enough to fit in a pants pocket |
| System.Ben.Extensions.dll | API containing extensions types for devices that that are larger than a box of cereal |
| System.Ben.Kitchen.dll | API containing types for devices that live permanently in a kitchen |
| System.Ben.FireGuard.dll | API containing types for devices that have a history of catching on fire, or catching things on fire |
| System.Ben.SecureString.dll | Extensions for devices that ship with SecureString |
| System.Ben.Extensions.Abstractions.Interfaces.IBen | Contains the IBen (coming in v2) interface separated out for sharing between unrelated open source libraries |
@terrajobst to setup an architecture review, @blowdart for the security side of things.
Can you define "permanently"? Sometimes our Optigrill leaves our kitchen for another kitchen, but it's always in a kitchen, where does this fall in the distribution list? Also, which of these is best for running my botnet?
This code is too secure to run on any IoT device.
Forgot about the IBen assembly, added it.
@NickCraver Good point, I'll bring this up in the next Framework Design Core meeting. My feeling is that we'll support System.Ben.Kitchen.dll on it. We're also considering adding support for System.Ben.Kitchen on phones, as turns out 43% of people charge their phone in their kitchen.
I believe you need a System.Ben.RolledMyOwnCrypto library, plus appropriate interface project.