In a discussion on governance in our bi-weekly Integration v-team meeting, Jason Howell made the following tongue-in-cheek suggestion:
“If you have architect in your title, you get a taser.”
In a discussion on governance in our bi-weekly Integration v-team meeting, Jason Howell made the following tongue-in-cheek suggestion:
“If you have architect in your title, you get a taser.”
John Heintz responded to my serendipitous reuse post. Nice to see I misunderstood his opinions about how easy RESTful systems are to integrate:
I didn’t mean to imply that building RESTful system would lead to magical integration without any hard work. I can see how that came across in my post, and I guess I got the reaction I asked for 😉
I get the feeling that John would be a good guy to have a beer with.
John spends most of his post writing about the SOA in the Real World book. I’ve flipped thru it and I’m familiar with the model (it is my old team after all) but I haven’t read it so I don’t really want to comment about the book specifically. But there were two things John mentioned that I did want to comment on.
First, at the end of his post John writes:
Can some of the constraints of REST be applied to SOA? Absolutely. I think an asynchronous, message-passing architecture with a uniform interface would be astoundingly interesting! I’m not the only one: see MEST, AMPQ, and Erlang.
This goes back to a REST question I asked two months ago: is it still REST if you don’t use HTTP? I’m guessing John would say yes.
I might be going out on a limb here, I’ll bet the core of John’s problem with SOA is how toolkits like WCF all but force you to build RPC style services that can easily be modeled as method calls. That’s certainly one of my problems with SOA. Tim Ewald said it best:
It’s depressing to think that SOAP started just about 10 years ago and that now that everything is said and done, we built RPC again. I know SOAP is really an XML messaging protocol, you can do oneway async stuff, etc, etc, but let’s face it. The tools make the technology and the tools (and the examples and the advice you get) point at RPC. And we know what the problems with RPC are. If you want to build something that is genuinely loosely-coupled, RPC is a pretty hard path to take.
If SOA == RPC and REST == loosely coupled messages, then I’ll start growing dreadlocks right now. Frankly, as Tim says, I think it’s a problem with the tools (I’m looking at you WCF) and not the underlying architecture, but how many people can distinguish the architecture from the tools? Not many, I’m afraid.
Second, John asks an interesting question:
Where are the SOA mashups?
That’s easy! They’re inside the firewall where you can’t see them! 😉
Seriously, I’m not sure about “SOA” mashups, but I’m working with what you might call a huge “enterprise” mashup system inside Microsoft. Our Enterprise Data Integration Services push around massive amounts of data to downstream systems. There are over fifty datasets in production, each with scores of tables, millions of rows and hundreds of subscribing systems. One example, our Products dataset, has over 100 tables and nearly 300 subscribing systems.
Is it “service oriented”? No, but then again it was originally developed ten years ago on SQL 6.5. But is it a mashup? Is it an “application that combines content from more than one source into an integrated experience“? Yep. Is it easy to work with? No, but guess why I’m involved? We’re looking at ways to “modernize” the system. Am I going to build RPC style services as part of this modernization? Hell, no.
So John, am I right or wrong about that beer?
In case you didn’t know, GotDotNet is shutting down. I recently got an email asking about my very old DevHawk Wiki project, which had been hosted on GDN. I didn’t realize anyone was still interested in this project, so I set up a new project for it on CodePlex. As part of the move, I decided to rebrand it “HawkWiki” and change its license to Ms-PL. (CodePlex doesn’t support the zlib license DevHawk Wiki was originally released under.)
I uploaded two versions to the HawkWiki source repository. The version that until recently was hosted on GDN is version 0.2. There’s also later version that I never publicly released before. This later version compiles the wiki markup text into an IHttpHander class, similar to how ASP.NET compiles web pages. I’m not sure if you’d ever really want a wiki built this way, but it does provide a good example for building your own compiled web page infrastructure. If you ever read my old MSDN magazine article, you’d know this is an approach I’ve been interested in for a long time.
I also used this project as an excuse to get to know CodePlex. Though CodePlex can integrate directly into VS via Team Explorer, I chose instead to use the CodePlex client. CPC provides an edit-merge-commit command-line experience like Subversion. I found it much easier than using Team Explorer, though adding new files was troublesome since they had to be added to the project and source control separately. If you like this approach, there’s also a version that works with vanilla TFS instances (CPC is hardwired to CodePlex).
So feel free to take the wiki code and mangle it to your heart’s content. If there’s interest, I’d be willing to grant some other folks checkin permission. However, it’s more a curiosity than a real project, so if you’re really interested in a .NET based wiki, there are better choices out there.