zoukankan      html  css  js  c++  java
  • Service Oriented Architecture and WCF 【转】

    http://www.codeproject.com/Articles/515253/Service-Oriented-Architecture-and-WCF

    Introduction

    This article will not talk about how to create and host a WCF service rather we stress on importance of SOA and WCF.
    If you are a advanced WCF developer then article is not for you, if you are one who is trying to learn WCF then article is not for you, this is for them who is completely new to WCF and trying to understand why WCF is there.

    Index

    Evolution of SOA

    Evolution is the nature’s law. Just like Human beings who evolved from Primate to Modern age Humans just to adapt the moving environment and competitions, Programing style or we can say technique also evolved to overcome the challenges in the changing programming world.

    Procedural Programming

    Initially programmers used this approach for developing applications where Functions were everything.
    In this approach Functionalities will be encapsulated inside one or more functions, which can call each other, pass some parameters and get some return value. Here one of the functions will be made as entry point (like in C programming we had main method).

    Why it need to be evolved.

    The biggest challenges with this approach were,

    • How to reuse the same code?
    • Difficulties in code Management.

    Object oriented Programming

    To overcome the problems in the Procedural programming, object oriented era comes into the picture where people start talking in terms of objects and classes. Everything is treated and considered as real world objects created from the blue print that is class. Lots of Object oriented principles like Abstraction, Encapsulation, Inheritance, polymorphism and solid has been introduced are introduced in this era.

    Why it need to be evolved.

    OOP increased the reusability and thus improved the code management. But one thing which was not addressed here was how two or more applications will communicate each other, especially when they have been written using different languages or technologies. For instance inventory module which is written using Java will not be able to call function inside classes of accounting module written in .NET.

    Service oriented Programming

    We have progressed from functions, to objects and now to services. In SOA functions and tasks are created as loosely connected independent services communicating via messages. Service provider publishes the service via standard interfaces in a publicly accessible directory called Service Repository and Service consumer make a service request and in response gets the Service Response.

    Architecture Terminologies

    Before we go in depth and talk about SOA (Service oriented architecture), it’s must to understand some terminologies related to architecture.

    Patterns

    In simple words Pattern is a solution to a problem in a context.

    Architectural Style

    When we say architectural style, it’s a very high level thing, it’s a concept. It’s up to us how we take this and implement. For example REST is an architectural style which tells us how we can use standard web features in effective way. It’s not standard or specification, in a style which we can understand and design web services in that style. In my perspective n-Tier is also an architectural style, it says divide your systems into different tiers but middle tier may be anything, and developer can make it a simple class library or a WCF service. In face the value of ‘n’ is also not sure.

    Architectural Patterns

    Architectural Pattern is something which solves our problem at sub system level or in short module level. It deals with the problem related to architecture of a project. We make Class libraries, Components, Web services to solve the problem. For example - In MVC we break the application into Model, View and Controller. Here we know how View interacts with model and so on.

    Design Patterns

    Design pattern talk about problems at class or function level.

    What is SOA?

    SOA or Service oriented architecture is an architecture style for building business applications by means of services. Application comprises collection of services which communicate through messages.

    Service

    • Services are logical encapsulation of self-contained business functionality
    • Every Service encapsulates one action such as Register User, Send Email etc.

    Messages

    Services communicate with each other using messages. Messages are standard formats which everyone (every service) can read and understand.

    Characteristics of SOA

    • In SOA, Services should be independent of other services.
      Altering a service should not affect calling service.
    • Services should be self-contained.
      When we talk about a RegisterCusomer service it means, service will do all the necessary work for us, we are not required to care about anything.
    • Services should be able to define themselves.
      Services should be able to answer a question what is does? It should be able to tell client what all operations it does, what all data types it uses and what kind of responses it will return.
    • Services should be published into a location (directory) where anyone can search for it.
    • As I said, SOA comprises of collection services which communicate via standard Messages.
      Standard messages make them platform independent.
      (Here standard doesn’t mean standard across Microsoft it means across all programming languages and technologies.)
    • Services should be able to communicate with each other asynchronously.
    • Services should support reliable messaging.
      Means there should be a guarantee that request will be reached to correct destination and correct response will be obtained.
    • Services should support secure communication.

    WCF and Web services

    WCF is a Microsoft framework for building Service-Oriented applications.
    Comparing Web services with WCF will not be a good idea. Can you compare yourself with yourself in past(let's say two year before)? Obviously in two year you might have learned new things, improved somewhat,right? WCF and Web service are related to each other in same manner. WCF has evolved from Web services and so WCF can do all which a web services is capable of, plus can do some more.

    Features of WCF

    • WCF hosting - If we are working with web services then only option we are having is hosting it inside web server such as IIS using http or wshttp protocols. But WCF supports four types of hosting
      • IIS
      • WAS (Windows process activation services)
      • Self-hosting
      • Windows services

      Read more about WCF hosting at
      http://msdn.microsoft.com/en-us/library/bb332338.aspx

    • Message transmission - Messages can be transmitted between clients and service via various transport protocols and encodings such as SOAP using http and binary data using TCP.
    • Serialization - Web services uses XmlSerializer for transferring data between service calls whereas WCF supports multiple serializers
      • DataContractSerializer(faster and supports versioning)
      • NetDataContractSerializer(when it required to include CLR type information in the serialized XML)
      • XmlSerializes(mostly to support backward compatibility).
    • Multiple technologies at one place - WCF unites following four technologies
      • .NET remoting
      • MSMQ
      • Web Services
      • COM+
    • Message Contract - In Web services customizing the headers of the SOAP message was a tedious task. For that we were supposed to derive a class from SoapHeader and then SoapHeaderAttribute is used to indicate the presence of the header.
      But with WCF we can make it easily with the help of simple attributes like MessageContractAttribute, MessageHeaderAttribute, and MessageBodyMemberAttribute.
    • Multiple Message Patterns - WCF supports three message patterns that describe how client and service pass messages
      • Request-Reply Pattern – Client sends message to service and waits for reply.
      • One-Way Message Pattern – Client sends message to service but service does not reply message to client.
      • Duplex pattern – Both client and the service can initiate communication. The client calls a method of the service. The service can then use a client callback to call a method in the client.
    • Security - In WCF security can be implemented with the help of well-known standards such as SSL.
    • Reliable - WCF supports reliable messages with the help of Queues and reliable sessions.
    • REST - WCF can be extended to support plain xml data that is not wrapped in a soap envelope, xml formats such as ATOM and non xml standard such as JSON.
    • WCF Transaction - - WCF supports to create distributed transactions for your service application. Transaction is a collection of logical operations which need to be run as a single logical unit.
      (Either all operations will successfully execute and completes or in case any of them fail others will rollback).
    • WCF instancing - In WCF we can control the way WCF service objects are instantiated in the WCF server. WCF Framework comes up with following instancing models
      • Per Call - A new instance will be created for every client request.
      • Per session - A new instance is created for each new client session and maintained for the lifetime of that session.
      • Single - A single instance handles all client requests for the lifetime of the application.
    • WCF Concurrency - With WCF Concurrency features we can control how service instances can serve multiple requests at the same time. We have three choices
      • Single – Only one request will be served at a time.
      • Multiple - Multiple requests can be handled by the WCF service object at any given moment of time.
      • Reentrant - A single request thread has access to the WCF service object, but the thread can exit the WCF service to call another WCF service or can also call a WCF client through callback and reenter without deadlock.

    What is ABC in WCF

    We had gone through the feature of WCF and understood why its termed as advanced version of web services. Now it’s time to answer a very basic question related to WCF i.e., what is ABC of WCF?

    When we say WCF, we came across end points. Service endpoint can be a part of continuously hosted service hosted in IIS or service hosted in an application.
    ABC or Address, Binding and Contract are the three elements which constitutes and Service Endpoint.

    • Address - Where Service is residing (URL of the service.)
    • Binding – How to talk to the service?
    • Example – basicHttpBinding, wsHttpBinding, webHttpBinding etc.
    • Contract – What can the service do for me?

    Conclusion

    We have understood

    • What is Service oriented architecture?
    • Why SOA required?
    • What are the characteristics of SOA?
      • How WCF can be differentiated from Web service?
      • What are the characteristics of WCF?
      • What is mean by ABC of WCF?
  • 相关阅读:
    Add Binary
    Java笔记之String
    Java笔记之数组
    Merge Two Sorted Lists
    Remove Nth Node From End of List
    Longest Common Prefix
    Roman to Integer
    Palindrome Number
    Reverse Integer
    _cdel stdcall
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/5556310.html
Copyright © 2011-2022 走看看