SOA Web Services Blog http://www.ddj.com/blog/webservicesblog/ Copyright 2009 Fri, 08 Feb 2008 16:56:59 -0500 http://www.movabletype.org/?v=3.14 http://blogs.law.harvard.edu/tech/rss [Podcast] Shared subscriptions between autonomous components This week we're discussing scenarios involving the use of multiple autonomous components handling the same event. We also get into the topics of component hosting as well as solution development structure.

Our long-time listener Bill asks the following:

]]>
http://www.ddj.com/blog/webservicesblog/archives/2008/02/podcast_shared.html http://www.ddj.com/blog/webservicesblog/archives/2008/02/podcast_shared.html Freelancer Blog Fri, 08 Feb 2008 16:56:59 -0500
Don't EDA between existing systems In Nick Malik's great post, EDA: Avoiding coupling on the name he describes additional "handshakes" to be used to avoid the following problems:

]]>
http://www.ddj.com/blog/webservicesblog/archives/2008/01/dont_eda_betwee.html http://www.ddj.com/blog/webservicesblog/archives/2008/01/dont_eda_betwee.html Freelancer Blog Mon, 21 Jan 2008 06:36:54 -0500
More SOA stuff for the DotNet Rocks crowd Now that the show I did with Carl and Richard is online, I just wanted to let the new visitors to my blog know about all the other podcasts that I've done on SOA.

Here are some of the more popular ones:


And there's always the archives with more than 30 shows up.

If you are a new visitor and are looking for more information on NServiceBus, you can find it all here. You might also want to take a moment to subscribe so that you don't miss out on any of the updates. And, as always, please do feel free to ping me about these topics via email or in the comments below.

Thanks for dropping by.

]]>
http://www.ddj.com/blog/webservicesblog/archives/2008/01/more_soa_stuff.html http://www.ddj.com/blog/webservicesblog/archives/2008/01/more_soa_stuff.html Freelancer Blog Mon, 07 Jan 2008 02:11:50 -0500
[Podcast] Can We Do Away with Services and Just Leave the Messaging? This week we have a comment from a fellow SOA blogger, Jack van Hoof:

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/12/podcast_can_we.html http://www.ddj.com/blog/webservicesblog/archives/2007/12/podcast_can_we.html Freelancer Blog Fri, 28 Dec 2007 08:27:32 -0500
[Podcast] Interview with Paul Preiss - IASA President and Founder In this podcast we talk to Paul Preiss, President and Founder of the International Association of Software Architects, about the field of IT Architecture, the value IASA brings to architects, vendors, and corporate IT, as well as the various training programs available including the free Skills Library--over 600 pages of articles written by architects for architects.

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/12/podcast_intervi.html http://www.ddj.com/blog/webservicesblog/archives/2007/12/podcast_intervi.html Freelancer Blog Fri, 14 Dec 2007 17:05:04 -0500
[Podcast] Using WCF for Entity and Activity Services to Implement Business Services This week we return to the topic of Entity, Activity, and Process services and compare their usages as top-level SOA elements and as implementation details of the application architecture inside a business service.
And the question that this answers is:

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/12/podcast_using_w.html http://www.ddj.com/blog/webservicesblog/archives/2007/12/podcast_using_w.html Freelancer Blog Fri, 07 Dec 2007 02:08:58 -0500
[Podcast] Passing Data Between Layers in SOA Model/Smart Client Application This week we discuss the different options that are available for passing data between a client and a service, as well as common pitfalls around trying to use the same objects for both presentation to the user and persistence to the database.

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/11/podcast_passing.html http://www.ddj.com/blog/webservicesblog/archives/2007/11/podcast_passing.html Freelancer Blog Fri, 23 Nov 2007 04:35:48 -0500
New ESB based on UML running in a VM Wow.

E2E, a relatively unknown Swiss software company has created an ESB based on a virtual machine that runs UML. Not only that, but they're using their product for seriously large customers.

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/11/new_esb_based_o.html http://www.ddj.com/blog/webservicesblog/archives/2007/11/new_esb_based_o.html Freelancer Blog Sat, 17 Nov 2007 03:22:10 -0500
[Podcast] Ross Mason on ESBs and the Mule Project In this podcast we talk to Ross Mason about the value Enterprise Service Buses (ESBs) provide over regular Enterprise Application Integration products and how Mule, a Java-based open-source ESB, makes ESBs easy to use.

Download via the Dr. Dobb's site

Or download directly here.

Additional References:

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/10/podcast_ross_ma.html http://www.ddj.com/blog/webservicesblog/archives/2007/10/podcast_ross_ma.html Freelancer Blog Sat, 27 Oct 2007 08:25:58 -0500
No such thing as a centralized ESB Via David McGhee's Q&A with Dr. Don Ferguson, but read the whole thing.

Q: Could you tell you your thoughts or preference for a distributed or centralized ESB?

DON: there is no such thing as a centralized ESB.

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/10/no_such_thing_a.html http://www.ddj.com/blog/webservicesblog/archives/2007/10/no_such_thing_a.html Freelancer Blog Mon, 22 Oct 2007 04:16:01 -0500
CAB and Acropolis of little help for SOA interactions After reading Nick Malik's post describing what he likes about Acropolis I was reminded of a conversation I had with the guys behind the CAB. Nick writes:

What I find promising: an Acropolis part can essentially consume a SOA service, allowing the composition of process and activity services to be as simple as snapping parts onto a surface.

Since services which conform to SOA principles will expose duplex/asynchronous APIs, this will almost necessarily make the client-side interaction multi-threaded. I do, and have done quite a lot of work on multi-threaded, thread-safe, smart clients. They're hard. Here's a post describing how hard. There are other solutions as well, but very little of it has to do with technology.

Since both the CAB and Acropolis do very little in handling, or even describing in their docs these multi-threading issues, I don't think that they're going to make it simple or easy to work with SOA-style services. This is not to say they don't provide any value. On the contrary, I think that they bring the mainstream many steps forward. However, there is still a long way to go.

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/10/cab_and_acropol.html http://www.ddj.com/blog/webservicesblog/archives/2007/10/cab_and_acropol.html Freelancer Blog Tue, 16 Oct 2007 05:01:04 -0500
Web Services no magic bullet for .NET / Java Interop On the Microsoft side of the equation, most developers and architects are aware that you can "Web Service-ize" almost everything possibly with the exclusion of passing DataSets. I always assumed that simple types are best, and collections of those simple types should be fine. Composing those simple types and collections into structures, and structures of structures seemed to be the way to go.

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/10/web_services_no.html http://www.ddj.com/blog/webservicesblog/archives/2007/10/web_services_no.html Freelancer Blog Fri, 12 Oct 2007 06:48:50 -0500
[Podcast] Sockets, Web Services, and Security In this podcast we answer questions about the considerations of choosing various communications technology--from TCP and UDP sockets, to .NET Remoting, Web Services, and Windows Communication Foundation. Also, issues such as scalability and security are discussed in the context of company intranets.

Download here.

Here's the original question:

Hi Udi,

This is Kumar, i am new to .NET and related technologies. Actually i am designing an application with few a components like a Socket Server(a service) which received input from payment terminal for loyalty application, which should communicate with Web Services deployed in an IIS application server, then the web services should communicate with an Oracle Database.

What are the patterns and best practices to use for the communication between the socket server and application server, and how do I scale for multiple clients in socketserver, and what are the security things that i need to consider.

Should i need to use .NET Remoting instead Web Services for my application server layer, and which is best for my socket server?

Thank you for your support.

Kumar

Additional References

]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/10/podcast_sockets.html http://www.ddj.com/blog/webservicesblog/archives/2007/10/podcast_sockets.html Freelancer Blog Fri, 05 Oct 2007 08:01:48 -0500
Space-Based Architecture – scalable, but not much to do with SOA Space-Based Architecture (or SBA for short) just might be in your future if your building large-scale distributed systems. By focusing on high-throughput and low latency, SBA joins messaging and in-memory data caching and adds a good measure of load partitioning. However, with the entire industry enamoured with SOA, what place is left for SBA?

Before going too far ahead, you might want to take a look at my previous post "Space-Based Architectural Thinking, or listen to my podcast Space-Based Architecture for the Web. There's also a 30 minute webcast online describing SBA more fully here. I'm also going to try to stay away from things concerning Jini this time after already discussing the connection between Jini and SOA, and the tradeoffs between two general approaches: Tasks and Spaces vs Message and Handlers.

OK, so the issue of state-management is a big one. Everybody wants to work stateless, because it scales. The only problem is that the business processes that we are automating are long running, meaning that there are external systems or people involved. This makes these processes inherently stateful. So, we need a way to scale statefully - SBA gives us that. For some background on the "Shared Nothing Architecture", I suggest reading this post on inter-process SOA and this one as well.

Availability also has to be handled, not only in terms of having enough servers online to handle the required load but in having all the data required to process each request be accessible. This has often been handled by the database using ACID transactions - durability being that which solved availability issues, but also hurting latency the most. The problem with saving the state of our long-running business processes/workflows in the database is the load and the responsiveness requirements. In many verticals - telcos, financial, and defense to name a few, we need millisecond level latency on each stage of the workflow. This is what leads SBA to the in-memory, replicated data grid.

Note that SBA only intends to take these workflows out of the database, and not anything else - especially not Master Data. The lifetime of these workflows is incredibly short compared to that of master data like customers and products. It will have much different backup strategies as well. In terms of load, these workflows will be heavy on reads and writes together in the same transactions, but quite low in terms of just reads. If we have workflows that perform work in parallel, we easily end up with concurrency requirements that make DBAs cringe under the barrage of short transactions.

If you're worried that Workflow Foundation (WF) won't scale because of the above, you needn't be. You can (more or less easily) replace the persistence mechanism of WF with your own, saving your workflow instances to an in-memory replicated data grid.

By enabling the objects in the grid to call back into logic on your servers, you have, in essence, done messaging and more. The added benefit that SBA receives from this is a unification of technology between caching and messaging. This translates directly to savings when it comes time to cluster each of those technology's environments.

Finally, if we can find an attribute in the incoming stream of messages that creates a nice even distribution, we can then partition our load between our servers by that key. This will work up to the point where the load per key increases beyond a single server's capacity, and then we have to look at re-partitioning, a non-trivial problem. However, if we put objects in our grid that represent the master data, and tie them to our workflow instances with both of those tied to the key of our load, a smart infrastructure can make sure all that data is already resident on the server that is handling that piece of the load. That decreases latency even more since we no longer have to pay network roundtrips to collect all the data needed before we can process it. That's a substantial advantage for the above verticals.

But all of this has nothing to do with SOA.

Sure, it'll change how we implement our Services internally, but it has no impact on their interfaces or the top-level service decomposition. In the Java community, the word "service" is often used to describe the logic of a system. Great significance is placed on keeping these "services" simple, as in Plain-Old Java Objects. The fact of the matter is that the logic of the system should be simple and independent of other concerns like data access and communcations (a la Web Services), but that does not make it a service, not in the SOA sense.

For more information on what Services in SOA are like, check out this podcast on Business and Autonomous Components in SOA. Actually, SBA will probably have the biggest impact on the way autonomous components will handle service-level agreements.

So, it appears that even with SOA, SBA has its place. The former dealing with business level agility, the latter dealing with all the technical aspects of supporting that agility. If you're tasked with the designing the architecture of a scalable, available, high-throughput, low-latency distributed system, I'd strongly advise you to look at SBA - the technical value is overwhelming. Even if you don't utilize all elements of SBA and choose the Master Worker Pattern instead of load partitioning, you'll find the technologies supporting SBA to be quite flexible in that respect.

Will Space-Based Architectures be a part of your future? I don't know for sure, but they're a most welcome part of my present.

]]> http://www.ddj.com/blog/webservicesblog/archives/2007/09/spacebased_arch_1.html http://www.ddj.com/blog/webservicesblog/archives/2007/09/spacebased_arch_1.html Freelancer Blog Sat, 29 Sep 2007 11:10:27 -0500 Don’t let the Jini out of the bottle on SOA I’ve been following the development of Jini for quite some time. The idea of mobile code fascinates and frightens me, especially in aspects of security, and I’m not dropping the ‘A’ word for nothing. It is an intriguing technology that I have yet to use on a real project, and now that the guys behind Jini have jumped on the SOA bandwagon I thought I’d take another look. Here’s what the www.jini.org site has to say about services in SOA:
A service may be a computation, storage, a communication channel to another user, a software filter, a hardware device, or another user. Two examples of services are printing a document and translating from one word-processor format to some other.
It appears that they are very specific in their definition of a service. A service is, most definitely, some… thing, probably having to do with computers in some way. They have another go at it here as well:
In more pedestrian terms, a Jini service is usually code running under some JVM that is capable of being called remotely, by Jini clients or even by other services.
So according to this, one example of SOA is distributed objects. And the purpose of Jini is then:
Jini systems provide mechanisms for service construction, lookup, communication, and use in a distributed system. Examples of services include: devices such as printers, displays, or disks; software such as applications or utilities; information such as databases and files; and users of the system.
In other words, hooking computer related things together without any real restrictions or guidance as to how that should be done. Is that much different from CORBA? Or any of the other generic distribution technologies we’ve seen. Granted, the mobile code thing is different, but nothing about that gets into the SOA discussion.
It also seems to fail on two out of the three dimensions of coupling. They seem to have the spatial coupling down by use of mobile code, but that’s it. In terms of technology coupling, Jini is Java-only – there are some ways to get interoperability with .net and other platforms, but it doesn’t look like Jini set out to handle it. Finally, the issue of temporal coupling isn’t considered an issue – do synchronous calls, asynchronous calls, whatever. Nothing is mentioned in terms of reliable messaging.
So, my bottom line on Jini hasn’t changed – mobile code, cool, but I still don’t know what to do with it. As for SOA, Jini seems to have as much to do with SOA as does CORBA. Maybe somebody can do something on top of Jini to make it more relevant to SOA, but as it stands now, I’ll be sticking to my buses – ESBs and such.
]]>
http://www.ddj.com/blog/webservicesblog/archives/2007/09/dont_let_the_ji.html http://www.ddj.com/blog/webservicesblog/archives/2007/09/dont_let_the_ji.html Freelancer Blog Thu, 27 Sep 2007 19:52:00 -0500