ServicesResourcesConferencesOur TeamWeblogsAboutContact
   

Buddhike's Weblog

{binary mind}


Where am I heading to?

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 ;-)

posted on Wednesday, October 19, 2005 2:10 AM

# re: Where am I heading to? @ Wednesday, October 19, 2005 12:25 PM

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

This is an area which I have been spending a lot of time and thoughts on recently. I dont believe in the term distributed transactions esp when it comes to the A in ACID. So much so that I propose this during BOF in PDC 2005:

http://www.softwaremaker.net/blog/PDC2005BirdsofaFeatherBOFSessionDistributedAtomicTransactionWishfulThinking.aspx

The prob is System.TX made it *too* easy for devs to distribute their transactions without knowing the costs involved. To me, the whole programming model of MTS (which is where I started work from) cannot and shouldnt apply to WCF when it comes to distributed "transactions". It is just too *local* and absolutely no-one (as I have polled my enterprise customers) will allow a atomic transaction flow context to come into their systems, even if it is a trusted party. Absolutely no-one :)
William Tay

# re: Where am I heading to? @ Wednesday, October 19, 2005 4:53 PM

You are absolutely correct :-). We should not flow the transaction context out side the service boundary (at least without something explicit). In fact this is one subject I and Ingo enjoyed during our vacation in Sri Lanka and this is generally our position too (y).

BTW: I think I should have been more explicit in my text as I was trying to say that people would not have to think of ES for building *locally* transacted components in the future.

However, something in the back of my mind says the definition of “boundary” could make difference here. For example WCF transaction flow can be applied among several local services because; WCF will not only be the platform to expose your services to the out side world but also it will be the platform for local communication. Comments?

Cheers

Buddhike de Silva


Powered by Community Server, by Telligent Systems