Thursday, January 06, 2005 - Posts

MS AntiSpyware written in VB ?!!

OK so this is weird. I've just installed the new Microsoft AntiSpyware Beta 1. (available here if you're looking for it)

It has a nice UI, and some pretty powerful features it seems. I especially love the way it lets you manage downloaded ActiveX controls and apps that run at startup. Plus it found about 10 spyware apps on my machine, when Adaware said it was clean!

But anyway... one thing I found that disturbed me.. if you go to: Advanced Tools / System Explorers / Startup Programs, you'll notice an entry in there for the AntiSpyware app. Is it me or is that the Visual Basic default application icon?!?!?!

http://dotnetjunkies.com/WebLog/johnwood/gallery/image/1126.aspx

Great, so even Microsoft are still using VB... what hope is there for .net?!!

 

Yet Another SOA Acronym (YASA)

I'm always struggling to find good definitions of SOA, and I think this is part of the problem. People say it's all marketing fluff, and yet actually the marketing for SOA has failed because it's not conveying the message of SOA effectively at all. If it was, then there wouldn't be so many confused individuals out there.

Some people have taken the initiative to find punchy acronyms to help define what SOA really is. PEACE is one of them. The problem is it's not really all that punchy when each word of the acronym averages like 10 syllables. We really do need something like ACID (the transaction acronym that is, not the hallucinogen). At least I can remember what ACID stands for.

As much as I love MSDN's (originally Don Box's) four tenets of service orientation, I think it requires too much study time to be effective as a marketing tool. I really think it's time to get back to basics.

So lets look at what the basic qualities of a service should be:

"Self Describing". Services must expose their interface, including all information relating to the structure of the messages it will accept and messages it will produce. (eg. WSDL)

"Open" . Services must be open and therefore accessible to a broad range of components, applications, and platforms. (eg. SOAP)

"Black-Boxed". This is really the "I don't need to see your underwear to talk to you" rule. You should be able to use a service without having to know about its inner-workings. Also referred to as "explicit boundaries", this has many implications. It often means that the service calls will be coarse-grained (ie. will require a lot of data in one call) because no assumptions can be made as to the state of the service or where the service ultimately lives. Black-boxing also covers statelessness, because you should be able to ask a service to do something without having to know its state.

"Autonomous". Although not always practical, services should strive to be autonomous. That is, they should not depend upon other facilities in the application in order to function, and if they are then these dependencies should be well documented and configurable. This is really to help meet the independence and loose-coupling goals of service orientation.

"Re-usable". Services should be developed with re-use in mind, they shouldn't be developed to serve just one application.

So that makes SOBAR. Not a particularly fun acronym but perhaps easier to remember at least.

Any other suggestions?

This "SOA hype is getting out of hand" hype is getting out of hand

It amazes me that some people still don't get what SOA is all about. In the spirit of Sahil's post let's call this "IDontGedditSoLetsBlameMarketing-itis".

http://weblogs.asp.net/fbouma/archive/2005/01/06/347558.aspx

Or maybe it's "SmallPicturitis".

I quote: "I mean: every developer on the planet knows that if you have several different elements in your application... element E provides services for element F and F is consumer of the services of element E."

A true service is a re-usable, loosely coupled, stateless, self-describing, platform independent, highly accessible asset of your business. Sure any old function provides a service. But how dependent is that service on the rest of your application? How dependent is that service on the state of its declaring type? How accessible is that service to other applications? And therefore, how truly re-usable *is* that function?

The SOA wave is all about opening doors to applications and liberating the services they provide so that they're accessible to everyone. Service architecture brings forth many other benefits too, including scalability, high availability and distributed collaboration that just isn't so easy with a tightly-coupled system.

And if it really is hype, then the SOAP spec is one hell of a bad brochure.

PEACE!