We should just get rid of that stupid middle tier

Date:May 24, 2007 / year-entry #185
Tags:other
Orig Link:https://blogs.msdn.microsoft.com/oldnewthing/20070524-00/?p=26713
Comments:    28
Summary:One of our line-of-business applications sometimes gets very heavily loaded, and several times a day, when you try to issue a query or update a record, you'll get the error message, "Unable to contact middle tier. (other technical gibberish goes here)". Whenever this happens, I like to amuse myself by shouting "Stupid middle tier! We...

One of our line-of-business applications sometimes gets very heavily loaded, and several times a day, when you try to issue a query or update a record, you'll get the error message, "Unable to contact middle tier. (other technical gibberish goes here)".

Whenever this happens, I like to amuse myself by shouting "Stupid middle tier! We should just get rid of it. It's always unresponsive."

Of course, this is a joke along the lines of changing that 15 to a 1. The system follows the standard three-tier model. Getting rid of the middle tier won't actually fix anything.

But if the error message keeps blaming the middle tier, then to a naive user (or in this case, a willfully stupid one), getting rid of the problematic component might not sound like that bad an idea.


Comments (28)
  1. Pete K says:

    That LOB app is one of the rare bad memories I have from MS.

    It also liked to overwrite the text size registry key for IE. The dev team for the app never fixed it, so instead IE changed the registry key it used or something equally as …

    Poor guy, one day you’ll get the resources to be a real app.

  2. ::Wendy:: says:

    willfully stupid.  It needed typing again.

  3. Dewi Morgan says:

    From such seeds are born "fixes" like "just delete tier2.dll" :)

  4. Stu says:

    Of course in some applications there may be a benefit to changing a 3-tier system to 2-tier model…

  5. Stu says:

    Of course in some applications there may be a benefit to changing a 3-tier system to a 2-tier model…

  6. x says:

    It is the middle tier.  The predecessor of this app connected directly to the SQL database and was much faster.

  7. While we’re on the topic of things Dilbert’s boss says, I present this gem from a Slashdot post (complaining about UAC prompting you about everything):

    "I don’t need a warning when I’m installing an application. I know that I’m installing an application."

  8. dislyxec says:

    (Not Responding)

  9. dave says:

    James:  That example is precisely why the term "multiple redundant single points of failure" was invented.

    If one of them doesn’t fail, another one will step in and make sure SOMETHING fails…

  10. David Walker says:

    Justin:  If you ARE actually installing the application, then of course you know that you are installing the application.

    Where UAC helps you is during a drive-by rogue program download from a Web site, or from an e-mail, or something equally bad, when you are NOT (purposefully) installing an application.

    If you go to a Web site and UAC warns you that you are installing an application, and you didn’t intend to, THAT’s when UAC can save your bacon.  UAC can’t read your mind.

  11. Greg Beech says:

    I can’t believe this got from a lighthearted post about the middle tier to a discussion of the merits and drawbacks of UAC in only seven comments.

    Raymond – I feel sorry for you. At least nobody reads my blog so I don’t get any comments.

  12. anonymous says:

    Isn’t "drive-by" the lame excuse from IE folks that unintended malware installations are unavoidable? Well, at least for IE they are. Strange enough no "alternative" (read: real, serious) webbrowser has such problems…

  13. Dean Harding says:

    I can’t believe this got from a lighthearted post about the middle tier to a discussion of the merits and drawbacks

    of UAC in only seven comments.

    And then on to IE-bashing in only 13… do people have nothing better to do?

  14. Igor says:

    Well you can consider UAC as a middle tier, right?

    Several times a day it is in the way of what you are trying to do.

    It estabilishes a dangerous notion of "computer not trusting the user".

  15. James says:

    "From such seeds are born "fixes" like "just delete tier2.dll" :)"

    Well, nuking verclsid.exe seemed to improve matters greatly :-)

    I’m reminded of a few recent outages at work caused by multi-tier setups; someone seems to have forgotten that when you have multiple servers each as the sole provider of a given function, you’re actually *adding* potential points of failure, making the service less rather than more reliable. (Result: one webmail server, relying on one mailbox store for any given user, relying on another single server for SMTP relaying… Not good.)

  16. DriverDude says:

    The point of having a multi-tiered system is so any piece can be replaced independently of the others, no?

    Therefore you should definitely get rid of that middle tier – and replace it with something better.

    Just stating the obvious….

  17. Jonathan says:

    Of course, the real problem with this LOB app is its unhelpful error messages. Since nobody knows what the middle-tier is, it should just say something like "can’t connect to database X", with the technically-correct but useless error code in some "more info" pane.

    But, internal-only applications rarely get the resources for this type of polish, even if it creates headaches for the internal helpdesk.

  18. Kevin says:

    Blaming the middle tier reminds me of a former job where most of the users on our NT network were convinced that it was "Dr. Watson" that made their programs crash.

    They kept asking us to uninstall Dr Watson.

  19. Chester says:

    This can get worse: imagine that the mentioned Dilbert-esque, point-haired boss gets this message and orders the middle tier to be removed.

    In more than half the places I worked, the middle tier *would* be removed, no matter the consequences…

  20. El Guapo says:

    I would bet that removing the middle tier WOULD resolve the issue.

    In every architecture I have ever seen, the service tier only added performance and reliability problems.

    When pressed, the developers could never explain the requirement for a service tier other than it allowed them to use some new buzzwords or it allowed them to justify their own jobs for years while they toiled on it trying to make it performant and maintaining it. "Oh, add a column to the database? OK I just need to change and re-deploy all 3 tiers and update the translation and mapping logic. Hmmm lets say 3 weeks dev time because there are so many touch points.".

  21. [ICR] says:

    "UAC can’t read your mind."

    But it *should* be able to tell when *I* click on something as opposed to something else running/clicking on something.

  22. Frandsen says:

    @ICR:

    "But it *should* be able to tell when *I* click on something as opposed to something else running/clicking on something."

    … Why yes, I actually would like to see some pictures of female celebrity of the week. *click*

  23. Jules says:

    El Guapo: ""Oh, add a column to the database? OK I just need to change and re-deploy all 3 tiers and update the translation and mapping logic. Hmmm lets say 3 weeks dev time because there are so many touch points.""

    The people saying that have badly designed communication between their tiers and/or poorly thought out data handling code in the middle tier.  They should try working for my boss for a few months.  After he’d fired one of the team for telling him it was impossible to change the database schema in the day he was allowing for the task, I think the rest of them would rethink the design of the system PDQ.

  24. Jules says:

    Kuwanger: systems with the level of granularity you talk about have been created in the past.  Err… it’s been a while since I looked at the case studies so I’m not sure this is the right system, but you may want to look up an OS called “CAP”.  The general problem is that they’re too hard to manage, because the domain of possible permissions settings is too large.

    [Okay, that’s enough with the UAC stuff. I was just telling a joke, sheesh. -Raymond]
  25. Stephen Jones says:

    —"that it was "Dr. Watson" that made their programs crash.

    They kept asking us to uninstall Dr Watson."—-

    There’s one program I knew that wouldn’t run if you had Machine Debug Manager running (which happens automatically with many installations of Office).

    You disabled MDM and the program worked fine, bug and all.

  26. Aaron says:

    I think Raymond’s post was about unhelpful error messages, not about the relative merits of n-tier architectures (which, by the way, have nothing whatsoever to do with "single points of failure").

    It sounds like that error message was written either by someone who got a little over-excited about *having* a middle tier, or by a disgruntled developer unhappy about having to rework the entire application.  I guess it’s not all that much worse than "the service is unavailable", though.

  27. Jules says:

    [ICR]: "But it *should* be able to tell when *I* click on something as opposed to something else running/clicking on something."

    Unfortunately, the way >90% of installation programs work is that the .exe file contains compressed data, which the install program uncompresses into a folder, and one of the files is either a program that will actually perform the installation (which it runs) or a .msi file (which it opens).  So the program doing the installation *isn’t* the program you clicked on.  While UAC *could* do what you ask for, there really isn’t a lot of point as it would hardly ever achieve the results you want.

  28. Kuwanger says:

    @Frandsen: ‘… Why yes, I actually would like to see some pictures of female celebrity of the week. *click*’

    So, UAC isn’t about control but about protecting idiots from themselves?  As was previously said, giving users (and not simply things that can act as users) actual control over the OS is a much better approach than trying to rely on gates to block “bad stuff”.  While I’ll admit that I don’t know of a fool-proof system to this (as I try not to underestimate the ingenuity of fools), something like UAC is a hack that’s too obsessed with maintaining backwards compatability, even if it means not moving towards a more optimal solution.

    Or, in short, UAC as a middle tier doesn’t help if the design of the lower tier is crap*.

    *And just to let you know that I’m not picking on Windows, all modern OSs suffer from a paradigm problem of granting programs power through users instead of giving users the power to grant programs power on a per-program basis.  Hacks like creating new user accounts to compensate doesn’t really count.  There’s simply a lack of access granularity available in modern OSs, but then that very well might be because people are unwilling to devote the time and energy (or rely/pay-for the time and energy of others) necessary to provide the desired granularity and hence no “complete” OS exists to compete; or people might just not care enough.  In any case, UAC as a midle tier isn’t the problem.

    [I like how everything can be turned into an argument about UAC. -Raymond]

Comments are closed.


*DISCLAIMER: I DO NOT OWN THIS CONTENT. If you are the owner and would like it removed, please contact me. The content herein is an archived reproduction of entries from Raymond Chen's "Old New Thing" Blog (most recent link is here). It may have slight formatting modifications for consistency and to improve readability.

WHY DID I DUPLICATE THIS CONTENT HERE? Let me first say this site has never had anything to sell and has never shown ads of any kind. I have nothing monetarily to gain by duplicating content here. Because I had made my own local copy of this content throughout the years, for ease of using tools like grep, I decided to put it online after I discovered some of the original content previously and publicly available, had disappeared approximately early to mid 2019. At the same time, I present the content in an easily accessible theme-agnostic way.

The information provided by Raymond's blog is, for all practical purposes, more authoritative on Windows Development than Microsoft's own MSDN documentation and should be considered supplemental reading to that documentation. The wealth of missing details provided by this blog that Microsoft could not or did not document about Windows over the years is vital enough, many would agree an online "backup" of these details is a necessary endeavor. Specifics include:

<-- Back to Old New Thing Archive Index