41,99 €
WSO2 Made Simple – dive deep into the core concepts of WSO2 to overcome the challenges faced while using the Enterprise Integrator
If you are a Java solutions architect or developer and are keen to understand how to build enterprise applications with WSO2, this book is for you. No prior knowledge of WSO2 is expected.
WSO2 Enterprise Integrator brings together the most powerful servers provided by the WSO2 company for your SOA infrastructure. As an Enterprise Service Bus (ESB), WSO2 Enterprise Integrator provides greater flexibility and agility to meet growing enterprise demands, whereas, as a Data Services Server (DSS), it provides an easy-to-use platform for integrating data stores, creating composite views across different data sources, and hosting data services.
Using real-world scenarios, this book helps you build a solid foundation in developing enterprise applications with powerful data integration capabilities using the WSO2 servers.
The book gets you started by brushing up your knowledge about SOA architecture and how it can be implemented through WSO2. It will help build your expertise with the core concepts of ESB such as building proxies, sequences, endpoints, and how to work with these in WSO2.
Going further, you will also get well-acquainted with DSS data service concepts such as configuring data services, tasks, events, testing, and much more.
The book will also cover API management techniques. Along with ESB and DSS, you will also learn about business process servers, the rules server and other components that together provide the control and robustness your enterprise applications will need.
With practical use cases, the book covers typical daily scenarios you will come across while using these servers to give you hands-on experience.
The book is a complete guide and helps you get the right start—from understanding SOA architectures to getting valuable experience with two important integration servers such as ESB and DSS. It will include some real-world practical scenarios to help you master the best practices followed right across the industry and overcome the challenges you're likely to face on a daily basis.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 279
Veröffentlichungsjahr: 2017
BIRMINGHAM - MUMBAI
Copyright © 2017 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author(s), nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: September 2017
Production reference: 1260917
ISBN 978-1-78728-831-7
www.packtpub.com
Authors
Fidel Prieto Estrada
Ramón Garrido Lázaro
Copy Editors
Safis Editing
Shaila Kusanale
Reviewer
Jack Rider
Project Coordinator
Devanshi Doshi
Commissioning Editor
Smeet Thakkar
Proofreader
Safis Editing
Acquisition Editor
Larissa Pinto
Indexer
Mariammal Chettiyar
ContentDevelopmentEditor
Roshan Kumar
Graphics
Jason Monteiro
Technical Editors
Harshal Kadam
Rutuja Vaze
Production Coordinator
Shraddha Falebhai
Fidel Prieto Estrada is a fan of new technologies who has been working with SOA in several integration technologies for 8 years in various industries, which has given him deep integration knowledge and a broad vision for problem solving.
He holds a bachelor of computer science degree from the University of Seville as well as more than 10 certifications, including WSO2 ESB 4 Developer, Oracle SOA Suite 11g, Oracle Unified BPM Suite 11g Essentials, EXIN Secure Programming Foundations, and ISTQB Certified Tester Foundation Level. He also completed the WSO2 ESB for Developers advanced course.
Ramón Garrido Lázaro is an enthusiast of new technologies and has spent the lasts years understanding and working with WSO2 servers in different projects, companies, and countries. He holds a bachelor's degree in software engineering and two master's degrees focusing on TIC security and software development for computers and smartphones.
He has specialized in SOA environments with multiple certifications, some of them in WSO2 servers. Currently, he works as a WSO2 consultant and teaches WSO2 courses in Chakray Consulting, one of the biggest WSO2-partner specialist companies.
Jack Rider is both a Spanish and US citizen, but he spends most of his time in the UK and Europe these days. After completing his degree in computer technology in Pittsburgh, Jack began his career in hospitality industry technology before moving to ERP, becoming a SAP consultant and then discovering the open source arena around 21 years ago. Jack has always been a firm believer in open source technology as a principle that led him, almost inevitably, to WSO2 and Chakray Consulting, where he is the CTO. Jack has a keen interest in physics, particularly in quantum theory. He was also the vice chairman of the Spanish Astronomy Association, which is congruous with his philosophy that sleep is overrated.
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.comand as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at [email protected] for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www.packtpub.com/mapt
Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career.
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Thanks for purchasing this Packt book. At Packt, quality is at the heart of our editorial process. To help us improve, please leave us an honest review.
If you'd like to join our team of regular reviewers, you can email us at [email protected]. We award our regular reviewers with free eBooks and videos in exchange for their valuable feedback. Help us be relentless in improving our products!
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
Getting Started with SOA and WSO2
SOA principles
SOA organization
Technology for SOA
Downloading WSO2 Enterprise Integrator
WSO2 Update Manager
Add an existing product to WUM repository
Download a product using WSO2 Update Manager
Check for product updates using WSO2 Update Manager
Deleting a product from the WSO2 Update Manager repository
Installing WSO2 Enterprise Integrator
Starting components manually
Starting/stopping WSO2 Enterprise Integrator
Starting/stopping WSO2 EI Analytics
Starting/stopping WSO2 EI Business Process
Starting/stopping WSO2 EI Broker
Starting all the products
WSO2 EI Configuration
Configuring JDBC drivers
Configuring transports
Configuring message formatters and message builders
Summary
Developing Integration Projects with WSO2EI Tooling
Installing and running WSO2EI Tooling
Creating carbon projects
ESBConfig projects
Creating a proxy
Creating a REST API
Creating a sequence
Creating an endpoint
Registry Resource Project
Data Service Project
Composite Application Project
ESB Solution Project
Debugging mediation
Data mapping
Summary
Building Web Services
Mediators
The property mediator
The log mediator
The send mediator
The respond mediator
The loopback mediator
The drop mediator
The sequence mediator
The script mediator
Sequences
Main sequence
The fault sequence
A custom sequence
Proxies
The transformer proxy
Secure proxy
WSDL based proxy
Logging proxy
Pass through proxy
Custom proxy
APIs
URL mapping
URI template
Inbound endpoints
Listening
Polling
Event based
Custom
Tasks
Scheduling data services
Scheduling other services
Summary
Building Data Services
Configuring data sources
Create wizard
Data service details
Adding datasources
Adding queries
Adding new queries using XML responses
Adding new queries using JSON responses
Adding new queries using a filter
Adding new queries for inserting data
Adding new queries for updating data
Adding new queries for deleting data
Adding operations
Adding resources
Creating CRUD data services
Creating data services using WSO2 EI Tooling
Summary
Transforming the Content of the Payload
Creating new content
The PayloadFactory mediator
Script mediator
Change the format of the content
Message type
The XQuery mediator
Enrich the message
The Enrich mediator
Message transformation
The XSLT mediator
The FastXSLT mediator
Summary
Conditional Route
Checking the payload content
Validating XML
Validating JSON
Boolean filtering
Multiple filtering
Advanced routing
The conditional router mediator
The rule mediator
Summary
Quality of Service
Security
Security scenarios
Scenario 1: UsernameToken
Scenario 2: Non-repudiation
Scenario 3: Integrity
Scenario 4: Confidentiality
Scenario 5: Sign and encrypt - X509 authentication
Scenario 6: Sign and encrypt - Anonymous clients
Scenario 7: Encrypt only - UsernameToken authentication
Scenario 8: Sign and encrypt - UsernameToken authentication
Scenario 9: Secure conversation - Sign only - Service as STS - Bootstrap policy - Sign and encrypt, X509 authentication
Scenario 10: Secure conversation - Sign only - Service as STS - Bootstrap policy - Sign and encrypt, anonymous clients
Scenario 11: Secure conversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and encrypt, X509 authentication
Scenario 12: Secure conversation - Sign only - Service as STS - Bootstrap policy - Sign and encrypt, anonymous clients
Scenario 13: Secure conversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and encrypt, anonymous clients
Scenario 14: Secure conversation - Encrypt only - Service as STS - Bootstrap policy - Sign and encrypt, UsernameToken authentication
Scenario 15: Secure conversation - Sign and encrypt - Service as STS - Bootstrap policy - Sign and encrypt, UsernameToken authentication
Scenario 16: Kerberos token-based security
Securing the transport
Creating a certificate for the EI server
Configuring HTTPS transport
Securing REST APIs
Basic authentication
Authentication against WSO2 Identity Server
Securing SOAP Proxies
Invoking secure backend
Basic-auth authentication
OAuth authentication
Getting a token from the WSO2 API manager
WS-Security
Throttling
Caching
Summary
Tasks Scheduling
Configuring the server
Setting the server mode
Configuring a clustered task server
Scheduling integration services
Scheduling data services
Custom tasks
Summary
WSO2 Enterprise Integration Logging
General enterprise integration logging
Logging the orchestration
Log mediator
Adding log properties
Script mediator
Logging per API and per proxy service
Summary
WSO2 Enterprise Integration Testing
Testing with a built-in tester
Testing with SOAPUI
Creating a web service client
Creating a mock service
Creating a test case
Other ways of testing
Summary
Integrating with VFS
Configuring the server
Large files
Reading files
VFS properties
transport.vfs.FileURI
transport.vfs.ContentType
transport.vfs.FileNamePattern
transport.PollInterval
transport.vfs.ActionAfterProcess
transport.vfs.ActionAfterFailure
transport.vfs.MoveAfterProcess
transport.vfs.MoveAfterFailure
transport.vfs.ReplyFileURI
transport.vfs.ReplyFileName
transport.vfs.MoveTimestampFormat
transport.vfs.Streaming
transport.vfs.ReconnectTimeout
transport.vfs.MaxRetryCount
transport.vfs.Append
transport.vfs.MoveAfterFailedMove
transport.vfs.FailedRecordsFileName
transport.vfs.FailedRecordsFileDestination
transport.vfs.MoveFailedRecordTimestampFormat
transport.vfs.FailedRecordNextRetryDuration
transport.vfs.Locking
transport.vfs.FileProcessCount
transport.vfs.FileProcessInterval
transport.vfs.ClusterAware
transport.vfs.FileSizeLimit
transport.vfs.AutoLockReleaseInterval
Local filesystem
FTP and FTPS
SFTP
Writing files
Transferring files
File connector
Configuring
Working
Summary
Integrating with JMS - WSO2 EI Message Brokering
Creating message queues
Publishing messages to a queue
Consuming messages from a queue
Dead Letter Channel
Connectors
Types of Connectors
SOAP-based connectors
REST-based connectors
Java API-based connectors
Summary
Introduction to Ballerina
The Ballerina language history
The main concepts of Ballerina
Connectors
Type system
Community
Ballerina tools
Composer
Docerina
Testerina
Packerina
Working with Ballerina
Summary
This book will help you explore the various capabilities of WSO2, from simple and generic to more complex and powerful. It will give you an introduction to a service-oriented architecture in general and is focused on the WSO2 world in order to put into context the principles and the target area where we can apply the knowledge and the techniques outlined in the book. This book will help the reader understand the SOA architecture even without any prior knowledge of it, making the book readable for everyone interested in learning to develop with WSO2 servers, with or without prior experience.
We will also learn how to use mediators to create APIs and proxy services, with which we can perform different actions such as transforming the payload or making a conditional route inside to create smarter web services. We will also learn how to handle the quality of service configuration to apply security, throttling, and caching to the services.
When we develop a service, it is important that it does the actions that its design for, and always gives the same response for the same request. For this reason, it's important that we test our services and debug all that we need. We don't speak about giving more functionality to our services, but about logging and testing them.
The last section will mainly focus on integrating the WSO2 EI with other servers using different protocols. We will learn how to use the VFS protocol to work with files: read, write, move, and so on. Using the JMS protocol, we will learn how to integrate with the WSO2 Message Broker that is inside the WSO2 EI. We will also have a brief introduction to a new programming language called Ballerina, which will be the future of the company.
Chapter 1, Getting Started with SOA and WSO2, discusses the issues that gave rise to SOA, describes its main principles, and explains how to make SOA the standard architecture in our organization. In order to achieve this, we have named the WSO2 product we need WSO2 EI. Finally, we will learn how to install it, configure it, and start it up.
Chapter 2, Developing Integration Projects with WSO2 EITooling, explains the most common tasks a developer performs on a daily basis when working with WSO2 EI, such as creating projects and artifacts. We will also learn how to debug our projects, which is a very important task that's performed on a daily basis. Additionally, we will describe how to use the powerful data mapper.
Chapter 3, Building Web Services, explains how to build web services in WSO2 EI and their most common components, such us endpoints and sequences. We will also explain the different ways of creating services in EI service when we need to use a Proxy, an API, or an inbound endpoint, and what is the process for adding the logic to that service using sequences and mediators.
Chapter 4, Building Data Services, explores how to build the dataservices needed to fetch the data required in our service orchestration. Additionally, we will learn some tips to save some time when developing and testing our dataservices as well.
Chapter 5, Transforming the Content of Payload, explains how to transform the message received in the services. We will also learn how to modify the content of the payload using the PayloadFactory mediator or the enrich mediator, without needing to have advanced knowledge of transformation languages such as XSLT or XQuery.
Chapter 6, Conditional Route, helps us know how to create more intelligent services that can route the flow over different ways, depending on the parameters, the URL, headers, and so on. We will also take a look at the filter and switch mediators, which we use to check the payload, or a part of it, over a regex expression.
Chapter 7, Quality of Service, takes you through the quality of service configuration in depth in order to explain how to configure security in the services, apply throttling policies such as specifying a maximum number of requests that can be done for a user in a period of time, and use the cache to improve the performance of the servers, among other things.
Chapter 8, Tasks Scheduling, focuses on the options we have for scheduling tasks inside the EI server. We will also observe the three ways to schedule tasks in the EI server.
Chapter 9, WSO2 Enterprise Integration Logging, covers how to log any information about the message received or the properties we set during our service orchestration. We also learn how to log when we are developing a piece of JavaScript code in our service.
Chapter 10, WSO2 Enterprise Integration Testing, goes through the process of testing our services using the basic built-in feature, and a more powerful tool--SoapUI. Besides this, we will learn how to build mock services and test suites to create a set of test cases that help us validate that the service is working as we expect.
Chapter 11, Integrating with VFS, focuses on the integration of Enterprise Integrator with files, local or remote, handled using the VFS protocol from Apache Commons. We will also cover a variety of file scenarios, such as read, write, and transfer, without processing files over different locations.
Chapter 12, Integrating with JMS - WSO2 EI Message Brokering, explains how to send messages to a JMS queue, as well as how to consume them. We will also learn how to build a typical high-performance scenario where a message is stored in a queue to be processed further by another service, which allows the service to handle a high number of messages per second.
Chapter 13, Introduction to Ballerina, gives a brief introduction to the new programming language called Ballerina, which will be the future of the company.
This book will guide you through the installation of all the tools that you require to follow the examples.
This book is intended for SOA developers with no knowledge of WSO2 Enterprise Integrator, but who are experienced in SOA environment, and are reasonably familiar with XML and JSON message types. Will be useful to have knowledge in XSL, XSD, JMS, VFS, Eclipse IDE and other WSO2 servers.
In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning. Code words in the text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input are shown as follows: "Use wum check-update wso2ei-6.0.0 to check for updates".
A block of code is set as follows:
<messageFormattercontentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamFormatter"/> <messageBuildercontentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamBuilder"/>
When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
wumconfiglocal.product.repo wso2/products
New product repository is \wso2\products
New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "In the WSO2EI Tooling top menu, click on Run | Debug Configurations."
Feedback from our readers is always welcome. Let us know what you think about this book-what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of. To send us general feedback, simply e-mail [email protected], and mention the book's title in the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you. You can download the code files by following these steps:
Log in or register to our website using your e-mail address and password.
Hover the mouse pointer on the
SUPPORT
tab at the top.
Click on
Code Downloads & Errata
.
Enter the name of the book in the
Search
box.
Select the book for which you're looking to download the code files.
Choose from the drop-down menu where you purchased this book from.
Click on
Code Download
.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
WinRAR / 7-Zip for Windows
Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux
The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/WSO2-Developer-s-Guide. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!
We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from https://www.packtpub.com/sites/default/files/downloads/B06549_WSO2DevelopersGuide_ColorImages.pdf.
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books-maybe a mistake in the text or the code-we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title. To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.
Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy. Please contact us at [email protected] with a link to the suspected pirated material. We appreciate your help in protecting our authors and our ability to bring you valuable content.
If you have a problem with any aspect of this book, you can contact us at [email protected], and we will do our best to address the problem.
We will try to introduce this book with a simple, brief, and concise discussion of SOA, talking about its origin and what it means. We will discuss the facts or problems that large companies with a huge IT system had to face, and that finally gave rise to the SOA approach.
Once we know what we are talking about, we will introduce the WSO2 technology and describe the role it plays in SOA, which will be followed by the installation and configuration of the WSO2 products we will use.
So, in this chapter, we will deal with the following topics:
A basic knowledge of SOA
Download WSO2 Enterprise Integrator
WSO2 Update Manager (WUM)
Update with the official Patches
Set up WSO2 Enterprise Integrator
Start Enterprise Integrator
Service-oriented architecture (SOA) is a style, an approach to design software in a different way from the standard. SOA is not a technology; it is a paradigm, a design style.
There comes a time when a company grows and grows, which means that its IT system also becomes bigger and bigger, fetching a huge amount of data that it has to share with other companies. This typical data may be, for example, any of the following:
Sales data
Employees data
Customer data
Business information
In this environment, each information need of the company's applications is satisfied by a direct link to the system that owns the required information. So, when a company becomes a large corporation, with many departments and complex business logic, the IT system becomes a spaghetti dish:
The spaghetti dish is a comparison widely used to describe how complex the integration links between applications may become in this large corporation. In this comparison, each spaghetti represents the link between two applications in order to share any kind of information.
Thus, when the number of applications needed for our business rises, the amount of information shared is larger as well. So, if we draw the map that represents all the links between the whole set of applications, the image will be quite similar to a spaghetti dish. Take a look at the following diagram:
The preceding diagram represents an environment that is closed, monolithic, and inefficient, with the following features:
The architecture is split into blocks divided by business areas.
Each area is close to the rest of the areas, so interaction between them is quite difficult.
These isolated blocks are hard to maintain.
Each block was managed by just one provider, which knew that business area deeply.
It is difficult for the company to change the provider that manages each business area due to the risk involved.
The company cannot protect itself against the abuses of the provider. The provider may commit many abuses, such as raising the provided service fare, violating
service level agreement
(
SLA
), breaching the schedule, and many others we can imagine. In these situations, the company lacks instruments to fight them because if the business area managed by the provider stops working, the impact on the company profits is much larger than when assuming that the provider abuses.
The provider has a deeper knowledge of the customer business than the customer itself.
The maintenance cost is high due to the complexity of the network for many reasons; consider the following example:
It is difficult to perform impact analysis when a new functionality is needed, which means high costs and a long
time to evaluate any fix, and higher costs of each fix in turn.
The complex interconnection network is difficult to know in depth.
Finding the cause of a failure or malfunction may become quite a task.
When a system is down, most of the others may be down as well.
A business process is used to involve different databases and applications. Thus, when a user has to run a business process in the company, he needs to use different applications, access different networks, and log in with different credentials in each one; this makes the business quite inefficient, making simple tasks take too much time.
When a system in your puzzle uses an obsolete technology, which is quite common with legacy systems, you will always be tied to it and to the incompatibility issues with brand new technologies, for instance.
Managing a fine-grained security policy that manages who has access to each piece of data is simply an uthopy.
Something must to be done to face all these problems and SOA is the one to put this in order. SOA is the final approach after the previous attempt to try to tidy up this chaos.
We can take a look at the SOA origin in the white paper, The 25-year history of SOA, by Erik Townsend (http://www.eriktownsend.com/white-papers/technology). It is quite an interesting read, where Erik establishes the origin of the manufacturing industry. I agree to that idea, and it is easy to see how the improvements in the manufacturing industry, or other industries, are applied to the IT world; take these examples:
The hardware bus in motherboards has been used for decades, and now we can also find the software bus,
Enterprise Service Bus
(
ESB
) in a company. The hardware bus connects hardware devices such as microprocessors, memory, or hard drives; the software bus connects applications.
A hardware router in a network routes small fragments of data between different nets to lead these packets to the destination net. The message router software, which implements the message router enterprise integration pattern, routes data objects between applications.
We create software factories to develop software using the same paradigm as a manufacturing industry.
Lean IT is a trending topic nowadays. It tries, roughly speaking, to optimize the IT processes by removing the
muda
(Japanese word meaning wastefulness, uselessness). It is based on the benefits of the lean manufacturing applied by Toyota in the '70s, after the oil crisis, which led it to the top position in the car manufacturing industry.
We find an analogy between what object-oriented language means to programming and what SOA represents to system integrations as well.
We can also find analogies between ITIL V3 and SOA. The way ITIL V3 manages the company services can be applied to managing the SOA services at many points. ITIL V3 deals with the services that a company offers and how to manage them, and SOA deals with the service that a company offers to expose data from one system to the rest of them. Both the conceptions are quite similar if we think of the ITIL V3 company as the IT department and of the company's service as the SOA service.
There is another quite interesting read--Note on Distributed Computing from Sun Microsystem Laboratories published in 1994. In this reading, four members of Sun Microsystems discuss the problems that a company faces when it expands, and the system that made up the IT core of the company and its need to share information. You can find this reading at http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.7969&rep=rep1&type=pdf.
In the early '90s, when companies were starting to computerize, they needed to share information from one system to another, which was not an easy task at all. There was a discussion on how to handle the local and remote information as well as which technology to use to share that information.
The Network File System (NFS), by IBM was a good attempt to share that information, but there was still a lot of work left to do. After NFS, other approaches came, such as CORBA and Microsoft DCOM, but they still keep the dependencies between the whole set of applications connected. Refer to the following diagram:
Finally, with the SOA approach, by the end of the '90s, independent applications where able to share their data while avoiding dependencies. This data interchange is done using services. An SOA service is a data interchange need between different systems that accomplishes some rules. These rules are the so-called SOA principles that we will explain as we move on.
The SOA principles are the rules that we always have to keep in mind when taking any kinds of decisions in an SOA organization, such as the following:
Analyzing proposals for services
Deciding whether to add a new functionality to a service or to split it into two services
Solving performance issues
Designing new services
There is no industry agreement about the SOA principles, and some of them publish their own principles. Now, we will go through the principles that will help us in understanding its importance:
Service Standardization
: Services must comply with communication and design agreements defined for the catalog they belong to. These include both high-level specifications and low-level details, such as those mentioned here:
Service name
Functional details
Input data
Output data
Protocols
Security
Service loose coupling
: Services in the catalog must be independent of each other. The only thing a service should know about the rest of the services in the catalog is that they exist. The way to achieve this is by defining service contracts so that when a service needs to use another one, it has to just use that service contract.
Service abstraction
: The service should be a black box just defined by its contracts. The contract specifies the input and output parameters with no information about how the process is performed at all. This reduces the coupling with other services to a minimum.
Service reusability
