Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's your experience of Microsoft Application Blocks

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 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?

like image 510
ptutt Avatar asked Apr 23 '09 14:04

ptutt


People also ask

What is Microsoft block?

This block provides a user-facing menu to access various Microsoft 365 integration features, resources, and settings.

What are Microsoft apps used for?

Microsoft apps and services is a common authentication app which connects multiple apps and services across Microsoft with your email providers. We do this to keep your experiences consistent across different Microsoft applications you connect to.

Should I turn on potentially unwanted app blocking?

We recommend that you leave this feature on, and that you enable both block apps and block downloads. Block apps will detect PUA that you've already downloaded or installed, so if you're using a different browser Windows Security can still detect PUA after you've downloaded it.

What is Microsoft application guard for Office 365?

Application Guard for Office is a protected mode that isolates untrusted documents so that they can't access trusted corporate resources, an intranet, the user's identity, and arbitrary files on the computer.


2 Answers

They're over-engineered and it was my biggest issue with it, at the end I got rid of it and don't use it any more.

They are not useful enough, requires too much configuration, modification in the system and they keep changing stuff in them. To simply add a logging functionality you end like spending a 2 days to get it right.

There are libraries out there which works in 10 minutes as you would expect.

like image 128
dr. evil Avatar answered Sep 24 '22 09:09

dr. evil


I haven't used them much, primarily because something else more powerful has swayed me from it. For example, when dealing with exceptions I went with CodePlex.Diagnostics, a nice package that logs stuff on the SQL Server. Very simple and useful for a web app. For logging, I use log4net under the control of Log4PostSharp. Of course, I use PostSharp instead of PIAB, if only because precompilation is, by definition, faster than dynamic proxies.

One cool thing is the Unity application block: it seems to have taken some of the lessons learned by other DI frameworks to heart, and is actually fairly easy to use (of course, there's PostSharp4Unity too).

like image 40
Dmitri Nesteruk Avatar answered Sep 23 '22 09:09

Dmitri Nesteruk