The purpose of this App is to provide an easy to use interface to communicate with storage devices.
- Support command line arguments.
- Support automated testing.
- Support testing multiple drives.
- Support production process on multiple drives.
- Support software upgrade, and extensions.
- Support drivers.
- Support user defined scripts.
- Support multiple operating systems.
Decisions
- Requirements will be broken down into self-containing modules that can be developed, and tested, independently.
- Each module will be hosted in its own AppDomain to avoid dependency conflicts.
- Modules will be written in C#, and conform to the ECMA standards to be able to run on the Mono. Mono is a software platform designed to allow developers to easily create cross platform applications.
- GUI must be developed independent from modules to ensure cross platform support. For Windows, we will use Prism 5.0 with WPF.
- Performance critital paths will be written as C++ library to be used by modules.
- IronPython 2.7.5 will be used to support user defined scripts, because it also runs on Mono.
Alternatives
- Requirements can be broken down into self-containing applications that can be developed, and tested, independently.
- Since each application runs as a separate process, there are no dependency conflicts.
- Windows .NET Core also support cross platform applications.
- Windows Forms is an alternative to WPF.
- Performance critital paths can also be written in C.
- In the future, we might use IronPython 3.
- Microsoft plans to gradually replace the .NET Framework with .NET Core.
- Updates to .NET libraries might break our code.
- .NET Core currently does not support WPF or Windows Forms.
- We currently don't have any experience writting applications for Mono, or .NET Core.
- Manage code (C++/CLI) will be regcogize by Mono, and .NET Core.
- Critical .NET libraries will be available, and behave as it did in the .NET Framework.