SOA Introductory: Part3 – SOA Development

Feb 23

If you’re a developer or an architect and need to understand the development philosophy of SOA, then this article is for you. This article talks exactly about the type of things that you have to do to create SOA based application. We’re going through details in understanding all the different standards we use while implementing SOA. Following standards is an absolute essential piece of development SOA applications.




One of things that you have to know about SOA development is that pretty much all programming languages out there have the concept of being able to reuse code like: procedures, functions and libraries. Let’s take for example credit check functionality. We might have a procedure for credit check and it takes parameters: source security number and amount and also an approval as a kind of yes/no response. This thing can be implemented virtually in any programming language: PLSQL, Java, C#,.. etc. We can also turn that into function which takes two parameters and return the approval as yes/no. We might also need this function to be called by a whole bunch of different programs, and then we can make it as a library. So, we have this concept of being able to reuse the code.





One of issues that we have with this however is that whether language we develop this in, let’s say we develop this in PLSQL inside a form and we turning into a library that the form can then be called, so this is PLSQL package here. For all instance and purposes here, only other PLSQL programs can call this library and can call this particular procedure or function to perform credit check for a customer. There are ways that you can make a C program of a C# program to be able to call a PLSQL library. But they are incredibly cumbersome and very difficult to maintain. Whatever language we develop this particular piece of code in, is the only language that we are going to be able to call from smoothly. So, we can develop a library that we can use in form application that we can call from PLSQL.





Most environments and most organizations are large enough and have best applications, they might have some PLSQL applications, they might have some java applications, C# applications,.. etc. So, being able to call this or have some kind of mechanism where you can create something and can be used across a bunch of different applications and different languages, this doesn’t exist in this paradigm. We can’t certainly call this from another operating system. For example if we have PLSQL library in Windows server 2008 and another java program running in Linux server that need to call this PLSQL library, this is virtually impossible to do. So, we’re locking ourselves in a particular language or a particular vendor as we will not have the flexibility to use what we have developed across other systems.



What if we have a kind of mechanism where we could create a chunk of code that does a very specific business service like a credit check to return an approval for a particular customer? What if we have this way of business service and can expose it on the internet (TCP/IP) and the language wouldn’t matter, the Operating System wouldn’t matter and nothing would matter?


We could have this business service exposed over TCP/IP and any language we want it could then call this business service.  We could have Java program, a .NET program, ASP program, Visual Basic or even oracle application express. Any language at all could call this business service and again it wouldn’t matter the Operating System we’re sitting on, the language that is written with. In top of all of this, we would have this business service that actually describes itself. So, any language interested in calling this business service like Credit Check would know how to call it. For example Java program could figure out that these are the parameters that it should pass in and this is the information that it will get back after calling this business service. This technology exists and it called Web Services.




Web services are incredibly powerful for organizations. Let’s take a look at the development piece. One of the really nice things about Web Services that once this particular business service is tested and we are sure that it works properly like Credit Check, we have then a single point of development. So, when we need to do credit check for some body, we know where its reference that is setting in our application server somewhere. Once we have this, any program can use it: Java, PLSQL, C#, .. etc. Web services give us the ability to modularize our software and to set up different king of roles and security like: Who can access it? What type of information that can be returned?





What goes along with SOA is that concept which called a composed application. Composite application is something that takes one or more business services and constructs an application around it. So, we might have a composite application that puts new vendor to our system. We might have a web service that adds the information about our vendor. As part of add vendor web service we have to do credit check to get the credit score of this particular vendor, we might add this in a database.  Now, we could write a composite application that calls for each one of these guys individually. We can use credit check anywhere as it has been deployed as a web service. Also, we can change the credit check around so that it’s not just for individual customer, we can have it for businesses, for vendors. In other words, we could change it around to be flexible enough to have a whole bunch of different functionalities built into it and we can use it in a different applications. By doing that, when it comes to create new application, it’s not something that we would write from scratch. It’s a question of taking different web services and putting them together then creating new application.




This one of the maintenances that goes along with SOA based application. From a developer point of view, this is a real key concept to understand and to sort out to have back of your mind when you’re going to design and develop SOA applications. In the next article we’re going to explore other features of SOA development and the business benefits of such model .



See also:

Composite Applications
SOA Composite Application Architecture
Composite Application Management (IBM Tivoli)

Leave a Reply