.NET e-Business: Enabling Inter-Application Communications
Problems stemming from independent software applications not communicating well with other applications have an extraordinary cost for companies in both time and money. These self-contained applications cost more to develop and integrate, consume more personnel resources, and hinder built-in features of peer applications by not providing the necessary interfaces to implement a particular application feature set. The result is that many software engineers spend their time thinking of complex ways to link stand-alone systems together, instead of planning and building distributed software applications that integrate well.
This chapter introduces you to the tools and technologies available today that make it possible to produce great distributed software systems using the Microsoft .NET Enterprise Solutions Platform. We will discuss industry-standard technologies such as XML and SOAP, and learn about the tools available to create distributed software systems.
In this chapter, you will:
Come to understand industry standard technologies used to enable communication between different software applications.
Learn about the tools provided by the Microsoft .NET Framework to solve inter-application communication challenges.
Acquire a foundation for building your own solutions for application communication business problems.
We will start by taking a look at the challenges and benefits of inter-application communications, addressing the topics of distributed software systems, incompatible protocols and data formats, and then move on to discussions about industry standard technologies such as XML and SOAP. Next we will cover the tools that Microsoft provides to develop software that targets the Microsoft .NET Enterprise Solutions Platform. The goal of this chapter is to establish a foundation for these concepts which can be extended to meet your own application integration challenges.
Challenges of Inter-Application Communications
The problem of application integration stems from the fact that different applications use dissimilar protocols and data formats. Traditional client/server applications are usually built with the same underlying protocols and data types. As a result, application integration is straightforward because client/server systems are designed from the start to work together.
Unfortunately, as most developers have experienced, applications usually evolve into something that wasn't originally planned for as new products become available, or as the organizational structure of the company changes. Enabling this communication between dissimilar systems is much more difficult than doing so between systems that were designed from the ground up to co-exist. Different communication protocols, operating systems, data types, and many other factors must all work together to produce a cohesive distributed software system.
In many organizations, multiple applications may execute independently of one another. For example, consider a hospital. A hospital may have a system for registering patients, a system for managing radiology services, a system that controls surgery scheduling, and other systems for billing and inventory control. Since these systems were likely developed and deployed at varying times, each one might describe patient demographic information in a different way. Each system may be built in a different programming language, or run on a different operating system. Each application must fluidly communicate with the others in order to achieve any amount of patient satisfaction.
Taking this scenario a bit further, the inventory control department may need to integrate with external suppliers in order to maintain acceptable stock levels of bandages and medicine. This introduces systems beyond the immediate control of the hospital staff. The situation becomes even more complex as different corporate cultures and business philosophies are introduced.
We are now beginning to understand the necessity of enabling application-to-application communication within one organization, as well as across multiple organizations. The following sections discuss the .NET set of tools derived from technologies that help enable inter-application communication.