DLL Hell to Policy Hell to..

Came across a very interesting article on Future of Assembly Versioning, co-authored by one of my favorite authors – Jeff Richter.

The author runs us through a little bit of history in Component versioning, starting off with COM, where we had an infamous problem commonly termed as “DLL Hell“. This problem was tackled in .NET effectively by having Strong Naming, but what resulted was a complicated version policy scheme, the problem which is commonly called “Policy Hell“.

The author also mentions how both these issues are (sort of) handled in the forthcoming Longhorn / Orcas releases. It is pretty interesting that there would be two types Assemblies – Platform and Library. The Platform type would need to be used in cases where strict backward compatibility is required. So the onus is on the developer to make sure about backward compatibility. Another interesting feature accompanying Platform assemblies is Interim Roll Back, where, in the event where a new version breaks an application, admins can actually roll back to a previous version. Any later updates to the assembly would automatically roll forward the existing (rolled back) assembly. On the other hand, Library assemblies are used in the case where the developer is free to introduce any breaking changes (or innovate as the author puts it), without worrying about backward compatibility. Do read the article for more..

The author presses the point that there is no set solution to component versioning problems and even the proposed solution might be changed considering the fact that it is early days for Longhorn and Orcas!


One thought on “DLL Hell to Policy Hell to..”

  1. good article. but do you not forsee the problem of deciding which type an assembly falls in. now the developer needs to understand what type of assembly that he is going to write and how to mark it.

    and more over..i think this feature raised from VB, where a dll can be specified with a compatability (server,binary..those 3 options in project properites).

    if you check the naming convension, do i need to put in the version in my file name?? does that look good?

    anyway..when i thought of a solution for easy to switch back to previous version, when new version breaks any app, the administrator should be able to select which version to bring back in. as i visualize, the admin should open up the properties of the assembly, and select the version he wants. this may be diff to implement, but eases deployment and maintenance.

Leave a Reply

Your email address will not be published. Required fields are marked *