WOTL…The 4th Tier?
It has come to my attention that there is a new tier being implemented across this vast software world of ours.
Well, what exactly is WOTL (pronounced “waddle”)? Now you don’t expect me to just tell you do you? It’s a national treasure; a closely held secret. It is…after all….being implemented everywhere and only the people in the know really know. I will however give you a few clues to help you achieve enlightenment.
Clue 1. You may see it often.
Clue 2. If you are caught creating one quickly pull out a shiny object and wave it around slowly to distract your audience from your true intent.
Do you give up? Ok! Ok! I’ll tell you. It’s the “Waste Of Time Layer”. I am sure you have seen one in action before. For example, let’s say you have a .Net web application communicating with a SqlServer database. So one day you decide to wrap your SqlStatements as a webservice. Now I am not talking about the situation where you add business logic to the process. I am talking about exposing your Sql statements as a webservice only! It’s slower and what additional value have you provided? Any Service Oriented Architecture has explicit boundaries that protect it and its clients from the underlying implementation details. The cost of creating explicit boundaries is not trivial. Instead, why not just create a DAL component and have your .Net clients consume the DAL instead?
Now some can make the argument that a Java client can now access the same logic as well. That argument is flawed as well. First of all there is no real logic aside from constructing a Sql Statement. Java can access SqlServer natively as well. If the modularity of your Sql statements is a concern, then use stored procedures. It is better suited for the job anyway. So, what is the benefit I ask? You are modularizing Sql Statements…nothing more…nothing less….and there isn’t much value in this. As I stated, each native environment is better at accessing the data returned from the RDBMS anyway. In .Net alone you have DataReaders, DataSets and typed DataSets. Not to mention all of the O/R mapping tools out there as well. Java has similar native constructs. By exposing your DAL as a webservice you are causing all data to be marshaled-by-value over http with xml.
Xml over http(s) is not the most efficient. Nor is it meant to be the most efficient. One of its primary purposes is to provide a common standardized approach for applications to communicate with one another. Not efficiency.
Now, if you are aggregating and exposing data from multiple sources in order to provide a common view into your business, this is different. A webservice may (or may not be warranted) because you can make the argument that you are providing business value. Or, if multiple environments are having a difficult time accessing data from an old AS/400 or Mainframe environment, then you can make the argument that you need a common platform for exposing this data. Here it is less about pure business logic providing the value as opposed to an environmental constraint limiting your business. In this situation, the webservice and its underlying implementation are managing scarce resources and possibly caching data for multiple applications. Here the costs of constructing explicit boundaries are out-weighed by the cost of multiple applications communicating with a set of scarce resources that need to be managed.
What I have just described is some simple implementation of WODL and I have heard that some have taken this to other more extreme levels. What is your story?
PS. If you notice a WOTL in the making loudly exclaim: “a Web Object Transaction Layer”. A fellow enlightened person will instantly understand your meaning. “Ahhhh, they are making WOTL!”
[Listening to: Bootsy Collins- Funk Ain't Broke]