In the Analysis and Design course you covered the business aspects of SOA and SOA reference architecture building blocks. In this course, Real World SOA: Design and Implementation, you'll move into the detailed design and implementation of SOA services. First, you'll look into the design principles that drive the entire design effort and the structure and dynamics of services. Then, you'll learn the different MEPs supported by services and the management of state, sessions, and client-service interactions. Finally, you'll learn the security of services, and various other topics. By the end of this course, you'll learn all you need to know about the design and implementation of SOA.
Course Introduction Hi. I'm Mohamad Halabi. Welcome to the Real World SOA: Design and Implementation course. This course is a continuation of the Analysis and Design course. In that course, we studied in detail SOA analysis and overall design. In this course, we move forward in the software development lifecycle into detailed design and implementation.
Course Recap: Analysis and Overall Design Before we dive into the course contents, let's take a moment to briefly recap the analysis and design course. This recap is actually taken from that course, so you can skip this module if the knowledge is still fresh in your head. If, however you have watched the analysis and design course some time ago, and you need a refresher, or if you do not want to watch that course, and instead want just a brief about what it covered, then this module will help you.
Hiding the Existing (Messy) State: Integration Services Welcome to this module about Integration Services. You're watching Real World SOA: Design and Implementation. In the previous course, we covered business services in detail. Integration services are kept to this course because they are considered a detailed design concern. In this module, you will learn what integration services are, what are their benefits, and how to identify them.
Guiding the Design of SOA Services: Design Principles Welcome to this module about SOA design principles. We are watching real world SOA design and implementation. As explained in the previous course, SOA is an architectural style that aims to fulfill the strategic goals of service-oriented computing. The efficient application of service orientation design principles on SOA services helps SOA achieve those strategic goals. So, what are these design principles, what value do they bring, and how are they applied? All this will be explained in this module.
Brief Overview of WCF Channel Layer Welcome to this module which presents a brief overview of the WCF channel layer. You're watching Real World SOA: Design and Implementation. As I said at the beginning, this course does assume basic WCF knowledge. However, for most developers, this basic knowledge revolves around the high-level architecture of WCF. This includes working with service contracts, data contracts, and bindings at the server side, and proxies at the client side. However, at different stages in the course, I will talk about architecture decisions that require at least a high-level understanding of the WCF channel layer. So this module covers the basics of the WCF channel layer.
It All Starts with an Agreement: Service Contracts Welcome to this module about service contracts. You are watching Real World SOA: Design and Implementation. Just as business contracts define the rules of a business transaction, in SOA, service contracts define the rules of client service interactions. A service contract specifies what consumers must do to successfully engage in a meaningful interaction with the service. So, what is a service contract? What are its building blocks? And, how to services and the clients agree on using a contract? These topics are discussed in this module.
Scalability Essentials: Session and State Welcome to this module, about Scalability Essentials in Sessions and State. You're watching Real World SOA: Design and Implementation. There are many aspects to designing scalable software, and no one module can possibly cover all of them. But two aspects that are especially important to SOA are those of client-service sessions and service state management. In this module, you will learn what is a client-service session. And what is a service state. What are the types of session, and what are the possible ways to handle service state. And all this will lead us to the important topic of design best practices from the perspective of scalability.
Reliability: Reliable Messaging vs. Business Semantics Welcome to this module about Reliable Messaging. You are watching Real World SOA design and implementation. You will be surprised how often a critical topic, such as message reliability is left out of SOA design. When this happens, you open the door to some serious business problems. So what is message reliability? What are the effects of not tackling this concern in our SOA design? And what are the techniques we can use to tackle this concern? All these topics will be covered in this module.
The Power of Asynchronous Messaging: Understanding One-way Welcome to this module about asynchronous messaging and one-way operation. You're watching Real World SOA: Design and Implementation. It's an unfortunate truth that service designers do not take advantage of asynchronous messaging patterns as much as they should. Instead they lean towards the Request/Response model of messaging due to its simplicity. Yet asynchronous messaging provides a chance to design scalable and loosely coupled solutions. In the next module we're going to examine the asynchronous patterns but before we do that we need to understand the foundation concepts of which asynchronous patterns are built on top of and that is the concept of one-way operations and WCF. So what's so special about understanding one-way operations? Why exactly do we need an entire module devoted just for that? Let's understand this in this module.
The Power of Asynchronous Messaging: Patterns Based on One-way Welcome to this module about asynchronous messaging patterns based on one-way calls. You are watching Real World SOA: Design and Implementation. In the previous module, you understood WCF one-way operations in detail. The reason we spent that amount of time understanding one-way, is that you can build scalable asynchronous messaging solutions, based on one-way operations. So what are these asynchronous patterns? What are the usage scenarios? And how do they improve SOA design? In this module, you will learn about asynchronous patterns.
Security: SOA and Trust-based Access Welcome to this module about securing SOA services. You're watching Real World SOA, Design and Innovation. In a sense SOA share the same security concerns of other service-based architectures. SOA services need to identify legitimate clients. They need to grant clients proper permissions. Services and clients need to make sure that exchanged messages are private, intact, and do not contain harmful data. Yet although these concerns are not unique to SOA, our security decisions are influenced by SOA reference architecture. And a special emphasis on loose coupling and re-usability. In this module we will examine the most common security concerns and how they are tackled in SOA. Before diving into details, to better understand the content of this model, you need to have a basic understanding of public and private keys, certificates and certificate authorities. If you do not yet have this basic understanding, then I strongly advise you to go to my course, Understanding Web Service Specifications in WCF. In the module, WS-Security Essentials, there is a section about certificates encryption and digital signatures. Please watch this section, as it will give you the basic knowledge why.
Taking Loose Coupling to the Next Level: Routing Welcome to this module about routing. You're watching Real World SOA: Design and Implementation. Imagine a large-scale SOA with tons of clients and hundreds of services. How can you reduce the coupling between the clients and physical locations of services? How can you reduce the impact of publishing a new service versions on existing clients? And how can you centralize certain processing logic that applies to all messages, instead of repeating this logic across your services? In this module you will learn about routing which helps in all the above and more scenarios.
More Loose Coupling: Dynamic Discovery Welcome to this module about dynamic discovery. You're watching "Real Works Hour", design in the pre notation. In the previous module you saw how to ghost loose coupling by using routing. However, while routing it leaves service consumers from knowing the physical location of services. They still require consumers to know the binding requirements of services at design time. So how can we extend our loose coupling support, so that consumers can now know the binding requirements dynamically at run time. Without forming design time coupling. You will learn how to do that this module.
SOA Distributed Transactions Welcome to this module about Soa Distributed Transactions. You're watching real world server design implementation. Transactions where a set of actions must agree on a single outcome is one of the most basic business requirements. Yet, till this day the implementation mechanism is still one of the most debated topics. In a distributed architecture such as SOA, the challenge is even bigger. So how do we deal with transactions in a SOA? How to implement short-lived transactions? And how to implement long running transactions? And what are the tradeoffs and challenges? All these topics will be examined in this module.
Role of an Enterprise Service Bus (ESB) Welcome to this module, module Enterprise Service Bus. You're watching Real World SOA, Design and Implementation. Unlike what most of the so called SOA suite vendors try to tell you, having an Enterprise Service Bus does not mean in any shape or form, that you have SOA. ESB is just one of the tools that help in implementing SOA. I discussed this point in the previous course, but I feel I need to stress it again. As you surely have understood by now, SOA is a style, a complete architectural that starts all the way back from the strategy, and goes all the way to implementation. Any time you have a vendor visiting you trying to sell the idea that by purchasing an ESB, you get a SOA, you know have the knowledge to understand that this is wrong. In this module, we will have a look at what an ESB is, and what role it plays in SOA.
Other Design Concerns Welcome to this module, where we will examine two important design topics. You're watching Real World SOA: Design and Implementation. Exception handling and versioning are two topics that are many times left without a well thought-out strategy, mainly because these topics are dull by nature, meaning that they do not provide direct, tangible benefits. However, we need to decide on a strategy to handle both topics. An exception handling strategy is required to provide consumers just enough information to take real-time corrective actions and to provide developers and business owners information to fix the root cause of problems. A versioning strategy is required in order to control the management and maintenance of server services. As business changes, and services evolve, without a suitable strategy things can quickly get out of hand.
Extending the Ecosystem with REST APIs Welcome to this module, about extending the ecosystem with REST APIs. You are watching Real World SOA, design and implementation. This module is not intended to teach you Web APIs nor REST. In fact, it does assume knowledge of both topics. There are two objectives for this module. First is to explain the reasons SOAP services were chosen over Web APIs as the implementation mechanism for SOA. And the second is to explain why REST services were chosen to achieve the strategic goal of extending the agency ecosystem. This goal was explained in the previous course, and will be revisited here.
Overview of SOA Governance Welcome to this module about SOA governance. You're watching real world design and implementation. Governance is a big field of study, definitely worthy of multiple courses by itself. This is especially true when you know that SOA governance can be under the umbrella of enterprise architecture governance, which in turn could be under a wider scope of corporate governance, which ideally should also have IT governance which has a strong relation with enterprise architecture governance. When you look at this picture, you can only imagine how complex this study can be. Especially that there are no global standard definitions. Multiple governance frameworks exist, and different organizations have different requirements. Therefore, in this module, we're going to see a brief overview of SOA governance. You will understand in simple terms what SOA governance is, what value it brings, and what are its building blocks. We are not going to dive into details, but if you are new to the topic of governance, then this module will give you a good jump start.