Service Oriented Architecture (SOA)

Service Oriented Architecture (SOA)

SOA (Service Oriented Architecture) is a way to build and architect systems, more than it is a technology. Of course there are concepts such as SOAP or technologies like WCF (Windows Communication Foundation) that make it easier to build SOA systems, but SOA itself is a paradigm that is not specific to any technology or platform. And that is the great strength of SOA! It enables us to build systems in ways that are both less complex and more reusable at the same time.

In today's world where there are so many uncertainties around which UI technology or even operating system (not to mention mobile devices) one should use and support and which ones will be of importance in the future, it is of paramount importance to create an architecture that is as nimble as possible and can support all kinds of different devices, operating systems, and platforms. SOA is a great way to achieve that. It reduced long-term expense and risk, and it also reduced complexity by breaking systems into smaller pieces.

We have been using SOA for quite some time, both for our internal systems as well as for projects for our customers. SOA is not the right choice for every project, but when it is, it usually provides great advantages.

Common Technologies

SOA is not specific to any technology. In fact, if done correctly, SOA systems can easily adjust to many different technologies. Most people think of SOA as "XML Web Services", and while XML Web Services are certainly one of the standards SOA systems often support, it is probably not even the most common one. Most of our SOA systems use efficient binary protocols, or even (at times) in-process calls, although other protocols, such as different flavors of XML Web Services (SOAP) or even REST based services (XML and JSON) are usually supported in addition.

The following is a list of some of the things that play into SOA:

  • Architecture
  • XML Web Services (SOAP, basicHttp, wsHttp)
  • TCP/IP Services (binary)
  • REST (XML and JSON)
  • WCF (Windows Communication Foundation)
  • .NET Development
  • CODE Framework (our development framework we often use in association with other tools and frameworks, which includes a number of features related to SOA)

This list is of course not meant to be a complete list, but it just simply meant to highlight some of the more important aspects of SOA.

Our Expertise

We have been long-time advocates of systems being built based on SOA. We have years of experience building SOA systems both for in-house use as well as many of our customers. (In fact, we have been building systems that use the SOA concepts even before the term "SOA" was invented and popularized). We have a history of teaching SOA in our training classes as well as lecturing about SOA at various conferences and writing about SOA in our own publication as well as others.

Starting a SOA Project

SOA projects generally start with a meeting (online or in person) in which we discuss what SOA really means and how one imagines building such systems. We usually provide a short presentation to highlight the core concepts and benefits, and then demonstrate a real-life setup of a SOA system to give everyone a good idea of what SOA is like day-to-day in the real world.

SOA projects then often move into Proof of Concept or Prototype phases, or we perform a Vision & Scope Workshop to determine overall goals of the project, the size of the effort, and best approach. Based on the findings of this process, we decide on next steps together with the customer.

Often, SOA projects also include a training and mentoring component.

Most customers building SOA projects also end up utilizing some of our ready-made components (CODE Framework) for at least some of their needs, as they solve many of the common problems found in SOA projects and greatly improve developer productivity and reduce project risks.

Project Lifecycle and Development Approach

SOA is generally a part of larger projects and as such, the SOA part of a project just becomes part of the bigger project and utilizes the same approach (more often than not based on Agile methodologies).

Our involvement in SOA projects can be anything from simple mentoring and training engagements, to providing some of our technology, all the way to building and handling the entire project.

SOA and CODE Framework

We have developed a development framework that covers a wide range of things encountered in today's software projects. This framework offers different features and components that can be "pulled in" as they are needed on a case-by-case and component-by-component basis. In many cases, our framework components are used in combination with other components and technologies.

Among the features of our framework are a number of helpful classes and tools specifically geared towards the creation of SOA services. The provided features range from creation of services, to hosting and calling of those services. We have specific tools for development and debugging, and so forth.

Many of our customers choose to use these components (free of charge in combination with our consulting services) as they provide them great benefits. Actual "mileage" varies on a case-by-case basis (we also often modify and enhance these components for specific client needs) and usage of these components is of course not mandatory and just meant as an optional benefit.

Purchase Options

SOA projects come in all shapes and sizes, and the most appropriate business arrangements for such projects needs to be determined on a case-by-case basis together with the customers. In many cases, SOA projects are set up as “time-and-materials” projects billed on an hourly basis (either billed on an ongoing schedule, through service agreements, or as pre-paid hourly blocks). Sometimes, SOA projects can also be built on a fixed-price basis, but this is only possible under specific pre-conditions and specific scenarios.

Purchasing Our Services

We offer our services in a variety of ways to meet every possible need. Options range from time and materials setups, to hourly blocks and monthly service contracts, and sometimes even fixed price setups (especially for mobile "apps"). Contact us for more information and for a Schedule of Fees.

Click here to contact us!

Related Services

The CODE Framework consists of various components and tools that help developers with common aspects of business application development, simplified SOA, WPF, data access, and much more. Our purpose for the CODE Framework is to enable productive, flexible, and highly maintainable business application development.

We offer custom training and mentoring for developers who would like to minimize the learning curve for the CODE Framework.
Constructing systems properly is the most important aspect of any software project. With the right architecture (and proper management), almost any problem can be compensated. If, on the other hand, the architecture is wrong, you have an extremely costly and time-intensive problem. We can help you to avoid these problems and reduce overall project risk, not just by sharing our own expertise, but also by letting you share in the experiences we have gathered through our CODE Magazine (authors and readers), CODE Training (trainers and attendees), events (speakers and attendees), RD, MVP, and other networks. This is a treasure trove of information you simply cannot get any other way. Can you think of anything else that could have positive impact of similar magnitude on your project?
Is your project in trouble? We can help! CODE Consulting brings projects back from the brink of failure. With deep a knowledge process and business to go along with technical knowledge, we are skilled at finding problems and bottlenecks and implementing solutions to get your project back on track. We can't do magic, but most troubled projects are not beyond help. It is usually well worth to spend the time in a short meeting and perform a few hours worth of analysis, for a shot of getting your project back on track.
HTML is the most widely available and deployed application platform today, spanning a wide range of technologies and standards. We perform most of our web development with ASP.NET (MVC and WebForms) and Ruby. CODE can help you with various aspects of any development project including HTML4/5, CSS, ASP.NET, JavaScript or jQuery, and more. CODE can even help you with the graphic design of your websites and apps. CODE Consulting has the expertise to train, mentor or write your complete web application.
There are a lot of choices to be made, a lot of lessons to be learned, and a lot of best practices to find and absorb. CODE Consulting not only explains how to implement your new project, but we help you understand why and when you should make the trade-off to do it a different way. We can work with your team to plan your project and guide you through the difficult parts.
Need help building applications for Windows? You have come to the right place. We have expertise in building rich Windows applications of any kind (with an emphasis on Windows Business Applications). Regardless of whether you need short-term help to solve a specific problem, a few experts to augment your team, or whether you need us to develop an entire application, from conception to marketplace deployment and every step in between, we have the right arrangement and the right expertise for any need.