|
Just thought about catching up my missing posts while trying
to adjust my self in the blanket (It’s pouring in Colombo) ;-).
Every time I think about WCF and future of connected systems,
I tend to compare it with the present and think why I should make the move.
So recently I was thinking about ES (Enterprise Services)
and the coming years. I’m sure it’s hard to find an enterprise system today which
does not consume ES. In fact I’m one of the early adaptors to this technology
and I’m still in love with it because it made my life a bliss whenever I wanted
scalable, reliable, high performance distributed system. Besides I have
(actually “had”) a dogged believe that all the business logic – middleware
services should reside in ES.
But with the WCF this dogged believe has become less relevant
today. To the point I’d like to discuss several interesting things. However,
bare in mind that when I say “ES does not”, “ES cannot” I’m not trying to send
ES to the trash can. I’m rather trying to express my *personal* view of the
potential problems in ES and why I’d rate for the new technology (WCF in
particular) which is striving to take its place in the distributed systems
arena.
First thing hits my mind is the interoperability. We have
already started talking about this (since ASMX I believe). We wanted to get rid
of those hacks we used to interop with other systems (yes, some are based on
XML but still they are just XML ;-)). ES does not provide this expected level
of interoperability where as WCF naturally supports all WS, WS-* stuff. Surprisingly,
it also provides greater interoperability by being able to communicate with
exiting ES based systems, Java (RMI) or even those so called hacky POX based
systems.
Second thing: ES does not support crossing NATs, firewalls and
multiple intermediaries. Though the multiple intermediaries are not very common
in mainstream applications today, I’m sure the things will change in the
future. (I’m really looking forward to see more SOAP routers in production
systems ;-)). However, with WCF we have no boundaries in terms of end to end
communication.
Next; I’ve seen many systems using ES to make transactional
runtime components. While it is nice to have transactional components (TCs); the
real problem comes when you do not really need distributed transactions (i.e.
when talking to single transactional data source). ES adds the overhead of DTC
even when there’s no need for it but still it’s inevitable because we need TCs.
In the next few years I believe people will eventually forget about ES for this
matter as System.Transactions namespace got a whole bunch of features for
transaction loving freaks.
Finally, does component load balancing (the only way to load
balance in ES/COM+) brings us everything we need to scale our solution? I don’t
believe so. I want NLB. So once again I’m voting for WCF.
It’s your turn now to share you thoughts ;-)
|