What is your real world experience with the Microsoft Application Blocks and other Microsoft solutions as opposed to writing your own solutions?
I started a new project and decided to give them a go. I used the exception handling and logging blocks. The exception handling block works well for what I needed. The logging block did 95% of what I needed, the rest needed to be customised. It took a while working out how to customise it, and then had some version reference issues. Logging is an very simple task whether it's writing to a file or database (in this project both). In hindsight it would have been quicker to write my own.
The project also requires synchronising data with a PDA. With a bit of research it seemed clear the direction Microsoft was pointing was Synchronisation Services. After spending about 3 days trying to get all the right versions of the different pieces of software I could not get the sample working http://stackoverflow.com/questions/771357/windows-mobile-synchronization-error. I opted to using the simple OpenNETCF Desktop Communication to copy files to/from the pda, use binary object serialisation, and write my own basic synchronising code which took less time and does everything exactly they way I want it (and don't it feel good : ))
Some positives:
- Don't have to reinvent the wheel
- Benefit from updates
- Benefit from other tools designed to work with them
- Large user base increases feedback, testing and robustness
- Good to have on your resume
- A new developer added to the team may be familiar with them
- Provide a lot of customisable functionality
negatives:
- over-engineered, try to be a swiss army knife, providing far more functionality than is ever needed for one solution creating complexity.
- even so, they never seem to meet all the requirements of the project, the tail can end up wagging the dog. I guess this depends on how much sway you have on how the application works.
- need to learn how to correctly implement the application block (ok, so this only needs to be done the first time they are used, so it's no biggie)
- increases dependencies on different dll versions, a bit of this goes with that
- large and cumbersome (not really an issue these days)
- difficult to customise due to their complexity
This has been my learning experience and will allow me to be better equipped to make a decision on whether to go with the Microsoft solution (or other 3rd party solutions) versus writing my own.
How about your experience?