Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Introduction to DevAccelerate
What is DevAccelerate?
DevAccelerate is a comprehensive and well-designed development accelerator for Microsoft .NET Framework. It is free and open source.
The accelerator contains common components and functionalities that allow developers to build real-world .NET apps rapidly.
It is highly modular and therefore allows developers to use only what is needed.
DevAccelerate Core is the core library of DevAccelerate. Every other DevAccelerate library depends on DevAccelerate Core. The library provides basic interfaces for the most common cross-cutting concerns such as configuration, caching, logging, exception handling, and entity management.
The role of DevAccelerate Core in particular is to provide necessary infrastructure to promote the design wherein no particular implementation is imposed on apps that use DevAccelerate. One classic case is in terms of caching, logging, and exception handling. DevAccelerate uses a well-established provider model that can be used to plug other implementations and libraries such as Microsoft Enterprise Library. The obvious benefit of this flexibility is that you can switch to any other underlying framework such as Apache Log4Net by simply making a configuration change without making any modifications to your code whatsoever.
Base and Implementation Libraries
DevAccelerate, as an overall framework, is primarily divided into two types of libraries: base libraries and implementation libraries. The idea is to clearly separate and de-couple interfaces and actual implementations. This way it would be possible for us and other developers to write more than one implementation of the same interface and switch between implementations without any code changes.
A base library is a library that does not commit to any particular implementation. In other words, it only offers generic functionality and interfaces. Moreover, it typically contains configuration classes and one or more factory classes. The combination of interfaces, factory classes and configuration classes make it possible for you to use an underlying implementation in a highly de-coupled fashion.
An implementation library contains concrete classes that implement base classes and interfaces of a base library. You should ideally never use implementation library classes directly in your code. Instead, you should use a factory class in the corresponding base library for instantiating actual implementation class. Factory classes in base libraries use configuration in application configuration file to instantiate classes from implementation libraries. This way you can switch from one implementation to another by simply making a change in the XML-based application configuration file.