One of my previous blog entries was about productivity tools, more specifically a list of tools I like to use during development. In this post I will do the same, but about libraries and frameworks I like to use. After all, the first thing you need to do before you start developing is to check whether it already exists – so that we don’t reinvent the wheel! So here goes… and of course, I’ll update this list if needed.
“EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).”
Reading and writing excel files is something I already needed to do a number of times, and this free library is the best I have found!
“A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules for your business objects.”
Validation is part of every development you do, and this free library allows you to validate objects in a fluent way, using external validators.
“StructureMap is a Dependency Injection / Inversion of Control tool for .Net that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. StructureMap can enable looser coupling between classes and their dependencies, improve the testability of a class structure, and provide generic flexibility mechanisms. Used judiciously, StructureMap can greatly enhance the opportunities for code reuse by minimizing direct coupling between classes and configuration mechanisms.”
Dependency injection is a technique I use by default in almost every application; and StructureMap is my favorite tool for that.
“SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world.”
An excellent standalone SQL server database engine, which I use for standalone client applications that need database functionality at the client’s side.
“The LocalizationExtension is the easiest way to localize any type of DependencyProperties or native Properties on DependencyObjects under WPF & Silverlight.”
This free library takes care of localizing any resource in your WPF/SIlverlight application based on the culture being set. It can be applied on the fly, which means your application doesn’t need to be restarted when culture is changed!
“Prism provides guidance designed to help you more easily design and build rich, flexible, and easy-to-maintain Windows Presentation Foundation (WPF) desktop applications, Silverlight Rich Internet Applications (RIAs), and Windows Phone 7 applications. Using design patterns that embody important architectural design principles, such as separation of concerns and loose coupling, Prism helps you to design and build applications using loosely coupled components that can evolve independently but that can be easily and seamlessly integrated into the overall application. These types of applications are known as composite applications.”
I have used this library to build WPF applications as a collection of loosely coupled and independent components. It takes a while to learn it, but once you get it, combined with MEF and MVVM it’s a powerful environment to write flexible applications.
“The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets. log4net is a port of the excellent Apache log4j™ framework to the Microsoft® .NET runtime. We have kept the framework similar in spirit to the original log4j while taking advantage of new features in the .NET runtime.“
Whenever I need to log (and that is, well, almost always), I use log4net. It’s a powerful and flexible logging framework, that by default contains everything you need; and in case you need more it’s extensible by writing your own log4net adapters.
“Async library for .NET to help build real-time, multi-user interactive web applications.”
I used this library because I needed real-time feedback on a web site from a long running process. It mimics a persistent connection between the UI of a web site and the backend.
“GalleryView is capable of creating a wide variety of gallery types, and provides an extensive set of options to the user. Not only will the user be able to adjust photo and thumbnail sizes, and transition speeds, but he will also have the ability to choose from a selection of element positions, transition styles and other features.”
For a site I had to make I needed a picture gallery jquery plugin. There are so many free libraries available, and I tested a number of them, but I finally choose this one because it was very extensive and works very nice!