QC 4 Flashcards
What does SOA stand for?
Service Oriented Architecture
describes applications that have everything built into it. The UI, BL, and DL are all wrapped up in a package.
Monolithic Architecture
how does one interact with Monolithic Architecture?
User interface -> Buisness Logic -> Data Interface < – > Database
What is the ASP.NET MVC Dilemma?
with asp.net mvc, the view is tightly coupled to the processing logic. This means that the client will have to wait for its request to be processed and also for the view that the server eventually returns
Architecture style for building software applications that use services available in a network such as the web
Services are an implementation of a well defined business functionality
So what we want to do is to delegate the whole business logic with the data layer associated with it as a service that returns to the client the necessary data it would need to present to the end user, how to present that data is wholly up to the client
Service oriented architecture (SOA)
What is the solution to the asp.net Dilemma?
Decoupling the logic that processes the data (aka your backend logic) from the logic that presents your data (aka your front end logic)
Put those into two different servers
What are the SOA Principles?
Standardized Service Contract
Loose Coupling
Service Abstraction
Service Reusability
Service Autonomy
Service Statelessness
Service Discoverability
Service Composability
Service Interoperability
Services adhere to a service description. A service must have some sort of description which describes what the service is about. This makes it easier for client applications to understand what the service does.
Standardized Service Contract
Less dependency on each other. This is one of the main characteristics of web services which just states that there should be as less dependency as possible between the web services and the client invoking the web service. So if the service functionality changes at any point in time, it should not break the client application or stop it from working.
Loose Coupling
Services hide the logic they encapsulate from the outside world. The service should not expose how it executes its functionality; it should just tell the client application on what it does and not on how it does it.
Service Abstraction
Logic is divided into services with the intent of maximizing reuse. In any development company re-usability is a big topic because obviously one wouldn’t want to spend time and effort building the same code again and again across multiple applications which require them. Hence, once the code for a web service is written it should have the ability work with various application types.
Service Reusability
Services should have control over the logic they encapsulate. The service knows everything on what functionality it offers and hence should also have complete control over the code it contains.
Service Autonomy
Ideally, services should be stateless. This means that services should not withhold information from one state to the other. This would need to be done from either the client application. An example can be an order placed on a shopping site. Now you can have a web service which gives you the price of a particular item. But if the items are added to a shopping cart and the web page navigates to the page where you do the payment, the responsibility of the price of the item to be transferred to the payment page should not be done by the web service. Instead, it needs to be done by the web application.
Service Statelessness
Services can be discovered (usually in a service registry). We have already seen this in the concept of the UDDI (Universal Description, Discovery, and Integration), which performs a registry which can hold information about the web service.
Service Discoverability
Services break big problems into little problems. One should never embed all functionality of an application into one single service but instead, break the service down into modules each with a separate business functionality.
Service Composability
Services should use standards that allow diverse subscribers to use the service. In web services, standards as XML and communication over HTTP is used to ensure it conforms to this principle.
Service Interoperability
Pros of SOA
Independent location. It doesn’t really matter where the services are located. They can be published on one server or several different ones. Consumer requests would still work fine.
High reusability. Services can be reused regardless of their earlier interactions with other services. This reusability is possible due to the SOA applications infrastructure — a combination of small self-sufficient functions.
Improved scalability. You can easily scale up the system since multiple layers of a single service can run simultaneously on different servers.
Parallel development opportunities. Thanks to the layer-based architecture, developers can work on independent services and have them both delivered fast. This not only increases productivity but also enables businesses to reduce costs.