ARD Toolkit (Application Rapid Development Toolkit). This is a collection of Microsoft .NET Framework classes (written in C#) that implement typical coding tasks developers have to do on day to day basis. The intention is to shorten the
time spent on the application development by re-using the code for typical tasks.
The toolkit consists of several modules: Common, Configuration, Data, Logging, Security, Services, Smart Client and State Machine Framework
The modules can be used almost independently, however some modules may depend on the other. For example Logging module uses Configuration to obtain logging configuration information and Security to encrypt and decrypt settings.
The Common module contains classes like:
- ThreadPool: implements a thread pool with input job queue
- ObjectFactory: instantiates objects using assembly and class information
- FileWatcher: for handling file or directory change events
- Integer128: an implementation of a 128 bit integer
- MutexLock: insures that resource is released when execution leaves the scope
- TypedAccessor: handles conversion and returns typed results
- UnnamedPipeMessage: wraps communications between parent and child process through unnamed pipe (stdout, stderror)
Recently added EventRouting.EventBus for component decoupling and ServiceManagement.ServiceManager for component instantiation. EventBus allows components to publish events and subscribe for events on the bus by event type. ServiceManager allows you to instantiate
and initialize components based on a configuration file by their type and tag. It allows you to configure them to use singletone or multiinstance creation patterns.
The Configuration Module consists of classes like:
- AppConfig: provides typed access to the App.config settings including custom object instantiation
- XmlConfig: provides typed access to an XML configuration file through XPath specification. Allows you to encrypt and decrypt individual settings. Allows you to instantiate and initialize objects using configuration settings. Provides access to string resources.
Data Module provides a framework for vendor independent database code. It has generic classes that internally operate based on configured database type. The classes return interfaces, defined in ADO.NET. Also there are vendor independent classes that wrap vender
specific classes that exist in ADO.NET (like stored procedure or query parameters) The Data framework defines a set of db vendor independent types for parameters that internally are mapped into db vendor specific types.
Logging Module provides a framework for multi-category and multi-target logging. There are four default categories: Debug, Info, Warning and Error. You can add your own categories. Each category can contain multiple log targets. Log targets are: text file,
binary file, MSMQ, Event Log etc. Developers can add new targets by changing configuration and providing a DLL that contains classes that implement required interfaces. Each target can have a formatter that defines how the log message is formatted. By changing
configuration you can filter out messages based on category or message origin location (in the code), which is helpful for tracking down problems.
Security Module contains classes that implement Symmetric and Asymmetric encryption, Hashing and digital signature. By providing a common interface dealing with encryption is made easy. The module implements file based cryptography key and key generation /
Services Module contains classes that provide uniform interface for database or file based persistence (defined in configuration). It provides classes for common resource synchronization across different machines (either database based or file based).
Smart Client Framework provides an implementation of Smart Client, which gets updated files from a common location. In contrast with the "One Touch Deployment" approach this framework is quite transparent and avoids unpredictable behavior.
State Machine Framework provides an implementation for typical State Chart with events, state transitions and actions. It is completely configurable through an XML configuration file and can be used as a Workflow Framework.