Tiêu chuẩn điều phối dịch vụ Web (WS-Coordination) 

Vào tháng 7 năm 2002, BEA, IBM và Microsoft đã công bố một bản đặc tả kỹ thuật dùng thử nhằm hỗ trợ giao dịch nghiệp vụ thông qua Web. Các đặc tả kỹ thuật này – Business Process Execution Language for Web Service - BPEL4WS (Ngôn ngữ triển khai quy trình nghiệp vụ cho dịch vụ web),WS-Transaction (Dịch vụ web - Giao dịch) và WS-Coordination (Dịch vụ web – Điều phối) - cùng nhau tạo thành nền tảng phát triển các ứng dụng dựa trên các dịch vụ Web đáng tin cậy, cung cấp quản lý quy trình nghiệp vụ, đảm bảo toàn vẹn trong giao dịch và các công cụ điều phối chung...

I. Giới thiệu

Vào tháng 7 năm 2002, BEA, IBM và Microsoft đã công bố một bản đặc tả kỹ thuật dùng thử nhằm hỗ trợ giao dịch nghiệp vụ thông qua Web. Các đặc tả kỹ thuật này – Business Process Execution Language for Web Service - BPEL4WS  (Ngôn ngữ triển khai quy trình nghiệp vụ cho dịch vụ web),WS-Transaction (Dịch vụ web - Giao dịch) và WS-Coordination (Dịch vụ web – Điều phối) - cùng nhau tạo thành nền tảng phát triển các ứng dụng dựa trên các dịch vụ Web đáng tin cậy, cung cấp quản lý quy trình nghiệp vụ, đảm bảo toàn vẹn trong giao dịch và các công cụ điều phối chung.

Về cơ bản, điều phối được xem như một hoạt động của một thực thể (có thể được xem là người điều phối) phổ biến thông tin cho một số người tham gia nhằm phục vụ một số lí do cụ thể. Các hoạt động điều phối được sử dụng để đạt được sự đồng thuận về một quyết định nào đó như trong giao thức giao dịch phân tán, hoặc đơn giản để đảm bảo rằng tất cả những người tham gia có cùng một thông điệp trong một môi trường kết nối đa điểm đáng tin cậy. Khi các bên tham gia được điều phối, thông tin được xem như là ngữ cảnh phối hợp được gửi tới các bên tham gia để gắn kết các hoạt động. Thông tin ngữ cảnh này có thể cùng luồng với thông điệp ứng dụng thông thường, hoặc có thể là một phần tách biệt của thông điệp trao đổi.

Mặc dù có nhiều loại ứng dụng phân tán yêu cầu điều phối, nhưng sẽ không có gì ngạc nhiên khi biết rằng mỗi miền thường sử dụng các giao thức phối hợp khác nhau. Trong các giao dịch, ví dụ, giao thức giao dịch trong nghiệp vụ của OASIS (OASIS Business Transactions Protocol) và dịch vụ giao dịch đối tượng của Nhóm quản lý đối tượng (Object Management Group's Object Transaction Service) là các giải pháp cho áp dụng cho các miền cụ thể, không áp dụng cho những miền khác vì chúng dựa trên các kiểu kiến trúc khác nhau.

II. Một số đặc điểm kỹ thuật của WS-Coordination

Ý tưởng cơ bản xây dựng WS-Coordination trở thành một yêu cầu chung để truyền thông tin ngữ cảnh trong một môi trường dịch vụ Web. Đặc tả kỹ thuật WS-Coordination định nghĩa một khung cho phép các giao thức điều phối khác nhau được cắm vào, để điều phối công việc giữa các máy khách, các dịch vụ và các thành phần tham gia (xem Hình 1). Đặc tả kỹ thuật của WS-Coordination thực hiện các hoạt động điều phối công việc liên quan đến một hoặc nhiều bên (có thể là các dịch vụ, các thành phần hoặc thậm chí cả các đối tượng).

Hình 1 – Kiến trúc WS-Coordination

Trong Hình 1, một khung chung được sử dụng để tuyên truyền về bảo mật, quy trình làm việc hoặc ngữ cảnh nghiệp vụ. Tuy nhiên, bất kỳ giao thức điều phối nào được sử dụng và trong bất kỳ miền nào nó được triển khai, có một số các yêu cầu chung như sau:

• Sự khởi tạo (hoặc kích hoạt) của một điều phối viên mới cho giao thức điều phối cụ thể cho một ứng dụng cụ thể;

• Đăng ký người tham gia với điều phối viên. Họ sẽ nhận được  các thông điệp thông báo giao thức của điều phối viên trong  vòng đời của ứng dụng;

• Tuyên truyền thông tin ngữ cảnh giữa các dịch vụ Web có chứa ứng dụng;

• Một thực thể để thúc đẩy giao thức điều phối.

WS-Coordination cần xác định vai trò và trách nhiệm của các thực thể bên thứ ba trong ngữ cảnh dịch vụ web. Các thực thể bên thứ ba này thường là ứng dụng máy khách. Vai trò này và mối quan hệ tương tác của điều phối viên và ứng dụng máy khách (thực thể bên thư ba) được thể hiện trong Hình 2.

Hình 2 – Cơ sơ hạ tầng WS-Coordination

II.1 Kích hoạt

Khung WS-Coordination đưa ra một Dịch vụ Kích hoạt (Activation Service) nhằm hỗ trợ việc tạo ra các điều phối viên cho các giao thức cụ thể và các bối cảnh liên quan của chúng. Quá trình gọi một dịch vụ kích hoạt được thực hiện không đồng bộ, do đó đặc tả kỹ thuật xác định cả giao diện của dịch vụ kích hoạt và giao diện của dịch vụ gọi. Dịch vụ kích hoạt có thể gọi lại để cung cấp kết quả kích hoạt - cụ thể là một ngữ cảnh xác định loại giao thức và vị trí điều phối viên. Các giao diện này được trình bày trong Danh sách 1, nơi mà dịch vụ kích hoạt sẽ nhận được một thông báo CreateCoordinationContext (Thiết lập ngữ cảnh điều phối) và  gửi trả lại một thông điệp CreateCoordinationContextResponse (Phản hồi thiết lập ngữ cảnh điều phối), hoặc gửi đi thông báo về một vấn đề thông qua một thông báo lỗi.

Danh sách 1 – Giao diện WSDL dịch vụ kích hoạt

<!-- Activation Service portType Declaration -->

<wsdl:portType name="ActivationCoordinatorPortType">

<wsdl:operation name="CreateCoordinationContext">

<wsdl:input

message="wscoor:CreateCoordinationContext"/>

</wsdl:operation>

</wsdl:portType>

<!-- Activation Requester portType Declaration -->

<wsdl:portType name="ActivationRequesterPortType">

<wsdl:operation

name="CreateCoordinationContextResponse">

<wsdl:input

message="wscoor:CreateCoordinationContextResponse"/>

</wsdl:operation>

<wsdl:operation name="Error">

<wsdl:input message="wscoor:Error"/>

</wsdl:operation>

</wsdl:portType>

II.2 Đăng ký

Khi một điều phối viên đã được khởi tạo và một ngữ cảnh tương ứng được tạo ra bởi dịch vụ kích hoạt, một Dịch vụ Đăng ký được tạo ra và hiển thị. Dịch vụ này cho phép người tham gia đăng ký nhận các thông điệp giao thức liên kết với một điều phối viên cụ thể. Giống như dịch vụ kích hoạt, dịch vụ đăng ký giả định các kết nối là không đồng bộ, do đó chỉ định sử dụng WSDL cho cả dịch vụ đăng ký và người yêu cầu đăng ký (xem Danh sách 2).

Danh sách 2: Giao diện WSDL dịch vụ đăng ký 
<!-- Registration Service portType Declaration -->
<wsdl:portType name="RegistrationCoordinatorPortType">
  <wsdl:operation name="Register">
      <wsdl:input message="wscoor:Register"/>
  </wsdl:operation>
</wsdl:portType>
<!-- Registration Requester portType Declaration -->
<wsdl:portType name="RegistrationRequesterPortType">
  <wsdl:operation name="RegisterResponse">
      <wsdl:input message="wscoor:RegisterResponse"/>
  </wsdl:operation>
  <wsdl:operation name="Error">
      <wsdl:input message="wscoor:Error"/>
  </wsdl:operation>
</wsdl:portType>

II.3 Hoàn thành

Việc kết thục dịch vụ (terminator) thường được triển khai bởi ứng dụng máy khách. Tại một điểm thích hợp, điều phối viên sẽ thực hiện chức năng điều phối cụ thể với bất kỳ người tham gia nào đã đăng ký. Khi hoàn thành, ứng dụng máy khách có thể được thông báo về kết quả cho hoạt động, có thể là  các thông báo thành công / thất bại đơn đến dữ liệu có cấu trúc phức tạp nêu chi tiết trạng thái của hoạt động.

II.4 Ngữ cảnh

Ngữ cảnh rất quan trọng cho việc điều phối  vì nó chứa thông tin cần thiết cho các dịch vụ tham gia vào giao thức. Nó cung cấp chất kết dính để ràng buộc tất cả các dịch vụ Web của ứng dụng với nhau thành một ứng dụng duy nhất. Vì WS-Coordination là một khung điều phối chung, các ngữ cảnh phải được điều chỉnh để đáp ứng các nhu cầu của giao thức điều phối.

Trong Danh sách 3, lược đồ mô tả một ngữ cảnh bao gồm một URI xác định kiểu điều phối được yêu cầu (xs: anyURI), một điểm cuối mà người tham gia có thể được đăng ký (wsu: PortReferenceType) và một phần tử mở rộng được thiết kế để truyền tải  tải trọng của ngữ cảnh giao thức điều phối (xs: any).

Danh sách 3: WS-Coordination Context Schema Fragment
<xs:complexType name="CoordinationContextType" 
    abstract="false">
  <xs:complexContent>
    <xs:extension base="wsu:ContextType">
      <xs:sequence>
        <xs:element name="CoordinationType" 
            type="xs:anyURI" /> 
        <xs:element name="RegistrationService" 
            type="wsu:PortReferenceType" /> 
        <xs:any namespace="##any" processContents="lax" 
            minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

II.5 Điều phối các quy trình nghiệp vụ trên Web

Để xem xét một hiển thị WS-Coordination đang hoạt động, chúng ta nên xem xét một dịch vụ đăng nhập tập trung, cho phép ứng dụng máy khách xác thực một lần và sau đó, sử dụng các thông tin xác thực để truy cập vào một số dịch vụ Web. Mô hình điều phối cho kịch bản này được thể hiện trong Hình 3.

Hình 3 – Kiến trúc điều phối bảo mật 

Trong các giai đoạn đầu của ứng dụng, ứng dụng máy khách định vị một dịch vụ đã kích hoạt và gửi một thông báo yêu cầu tạo một điều phối viên bảo mật và một ngữ cảnh bảo mật tương ứng, sau đó, chuyển các thông tin người dùng phù hợp như trong Danh sách 4.

            Danh sách 4: Security Coordination Activation Message

<soap:Envelope

    xmlns:soap="http://www.w3.org/2002/06/soap-envelope">

  <soap:Body>

    <CreateCoordinationContext  

    xmlns="http://schemas.xmlsoap.org/ws/2002/08/wscoor"

    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"

    xmlns:security="http://security.example.org/authentication">

      <ActivationService>

        <wsu:Address>

          http://activation.example.org

        </wsu:Address>

        <security:loginID>

           a.n@other.com

        </security:loginID>

        <security:password>

          foobar

        </security:password>

      </ActivationService>

      <RequesterReference>

        <wsu:Address>

          http://workstation.example.org/station101

        </wsu:Address>

      </RequesterReference>

      <CoordinationType>

        http://security.example.org/single-logon

      </CoordinationType>

    </CreateCoordinationContext>

  </soap:Body>

</soap:Envelope>

Giả sử rằng một dịch vụ điều phối bảo mật đã được đăng ký với khung điều phối, một điều phối viên mới được tạo ra (được xem như một dịch vụ đăng ký). Một ngữ cảnh như trong Danh sách 4 được trả về hợp lệ cho ứng dụng máy khách như một phần của gói tin CreateCoordinationContextResponse.

Giả sử rằng một dịch vụ biết rằng các thông điệp được kết hợp với dịch vụ đăng nhập tập trung, đơn giản  Khi dịch vụ nhận được một thông điệp SOAP chứa tiêu đề ngữ cảnh bảo mật (xem Danh sách 5), nó đăng ký một người tham gia với điều phối viên bằng cách sử dụng các chi tiết được cung cấp trong ngữ cảnh (thông qua URI dịch vụ đăng ký WS-Coordination). Hoạt động đăng ký này xảy ra khi các dịch vụ nhận được một ngữ cảnh cụ thể trong lần đầu tiên. Điều này đảm bảo rằng tất cả các dịch vụ đều đăng ký người tham gia trong hoạt động.

Khi ứng dụng máy khách quyết định chấm dứt phiên làm việc của nó và đăng xuất khỏi các dịch vụ mà nó đã sử dụng, nó sẽ gửi một thông báo hoàn chỉnh tới điều phối viên. Theo đó, điều phối viên thông báo cho mỗi người tham gia thu hồi các đặc quyền cấp cho ứng dụng khách.

        Danh sách 5: Một ngữ cảnh bảo mật 

<soap:Envelope

    xmlns:soap="http://www.w3.org/2002/06/soap-envelope">

  <soap:Body>

    <CreateCoordinationContextResponse

    xmlns="http://schemas.xmlsoap.org/ws/2002/08/wscoor"      

    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"    

    xmlns:security="http://security.example.org/authentication">

      <RequesterReference>

        <wsu:Address>

          http://workstation.example.org/station101

        </wsu:Address>

      </RequesterReference>

      <CoordinationContext>

        <CoordinationType>

          http://security.example.org/single-logon

        </CoordinationType>

        <RegistrationService>

          <wsu:Address>

            http://security.example.org/registration

          </wsu:Address>

          <security:token>

            1234-5678-9ABC-DEF0

          </security:token>

        </RegistrationService>

      </CoordinationContext>

    </CreateCoordinationContextResponse>

  </soap:Body>

</soap:Envelope>

 

Tại một số thời điểm, ứng dụng máy khách kết thúc công việc của mình và phải chạy giao thức hoàn thành để buộc đăng xuất toàn bộ ra khỏi hệ thống. Để thực hiện điều này, nó sẽ gửi một thông báo đăng xuất được bảo mật tới điều phối viên bảo mật. Thông báo hoàn thành được hiển thị như trong Danh sách 6

Danh sách 6  Thông điệp hoàn thành

<?xml version="1.0" encoding="UTF-8"?>

<soap:Envelope

  xmlns:soap="http://www.w3.org/2002/06/soap-envelope"  

  xmlns:wscoor="http://schemas.xmlsoap.org/ws/2002/08/wscoor"

  xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"

  xmlns:sec="http://security.example.org/authentication"

  xmlns:comp="http://security.example.org/authentication/

                                                completion">

  <soap:Body>

    <comp:logout>

      <wscoor:RequesterReference>

        <wsu:Address>

          http://workstation.example.org/station101

        </wsu:Address>

      </wscoor:RequesterReference>

      <sec:loginID>

        a.n@other.com

      </sec:loginID>

      <sec:password>

        foobar

      </sec:password>

    </comp:logout>

  </soap:Body>

</soap:Envelope>

Đáp lại việc nhận được thông báo này, điều phối viên bảo mật thông báo cho mỗi người tham gia chấm dứt phiên hiện tại của người dùng. Để thực hiện điều này, nó sẽ gửi cho mỗi người tham gia một thông báo đăng xuất signOut để xác nhận rằng người dùng không còn được xác thực với dịch vụ liên quan. Các nội dung của thông báo signOut (Đăng xuất) và signedOut (Đã đăng xuất) được hiển thị trong Danh sách 7.

Danh sách 7 – Nội dung thông điệp singOut và singedOut

<!--The signOut message contents -->

<comp:signOut>

  <wscoor:RequesterReference>

    <wsu:Address>

      http://security.example.org/logout-service

     </wsu:Address>

  </wscoor:RequesterReference>

  <sec:loginID>

    a.n@other.com

  </sec:loginID>

</comp:signOut>

<!--The signedOut message contents -->

<comp:signedOut>

  <wscoor:RequesterReference>

    <wsu:Address>

      http://printer.example.org/logout-service

    </wsu:Address>

  </wscoor:RequesterReference>

  <sec:loginID>

    a.n@other.com

  </sec:loginID>

</comp:signOut>

Khi một thông điệp signedOut nhận từ mỗi người tham gia đã đăng ký, nó có thể thông báo lại cho ứng dụng máy khách rằng phiên của nó đã được kết thúc. Thông báo cuối cùng trong giao thức WS-Coordination là thông điệp phản hồi đăng xuất từ sự điều phối bảo mật cho máy khách (xem Danh sách 8)

Danh sách 8 – Thông điệp hoàn thành phiên

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
  xmlns:soap="http://www.w3.org/2002/06/soap-envelope"   
  xmlns:wscoor="http://schemas.xmlsoap.org/ws/2002/08/wscoor" 
  xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" 
  xmlns:sec="http://security.example.org/authentication" 
  xmlns:comp="http://security.example.org/authentication/completion">
  <soap:Body>
    <comp:loggedout>
      <wscoor:RequesterReference>
        <wsu:Address>
          http://security.example.org/authentication</wsu:Address>
      </wscoor:RequesterReference>
      <sec:loginID>
        a.n@other.com
      </sec:loginID>
    </comp:loggedout>
  </soap:Body>
</soap:Envelope>

II.6 Các kịch bản sử dụng nâng cao

Để thể hiện khả năng điều phối các nhóm dịch vụ Web tùy ý như là một phần của một ứng dụng đơn, lô gic và điều phối, WS-Coordination sử dụng một lược đồ được gọi là lược đồ ngắt (interposition).

Ngắt (Interposition) là một phương thức để tạo ra một hệ thống phân cấp của các điều phối viên. Một điều phối viên  được xem như một người tham gia đơn giản với các điều phối viên cao hơn trong cây phối hợp, nhưng hoạt động giống như một điều phối viên bình thường cho những người tham gia ở tầng thấp hơn. Các điều phối viên sẽ được đăng ký trong hệ thống phân cấp này nếu ứng dụng máy khách gửi một gói tin CreateCoordination Context tới một dịch vụ kích hoạt cùng với một ngữ cảnh hợp lệ.

Hình 4 – Mô hình điều phối xen kẽ

Trong Hình 4, chúng ta thấy một sự điều phối xen kẽ giữa ba doanh nghiệp khác nhau bằng cách sử dụng hai giao thức điều phối khác nhau. Sự sắp xếp này được đưa ra thông qua một ứng dụng máy khách. Ứng dụng máy khách này tạo ra một ngữ cảnh mức cao, và sau đó gọi các dịch vụ Web từ các doanh nghiệp là đối tác của nó (Doanh nghiệp A, B và C).

Các điều phối viên mức thấp được tạo để điều phối các người tham gia trong phạm vi một doanh nghiệp (A hoặc B hoặc C) Điều phối viên mức cao không biết về sự sắp xếp của các điều phối viên mức thấp trong phạm vị một doanh nghiệp do như xem các điều phối viên mức thấp như là một người tham gia trong hệ thống, trong khi những người tham gia trong doanh nghiệp A (hoặc B hoặc C) được điều phối bởi điều phối viên mức thấp của doanh nghiệp đó.

Một số ưu điểm của mô hình điều phối xen kẽ (interposed coordination) như sau:

            • Tăng hiệu suất: Vì chỉ các thông điệp hoàn thành mới được truyền qua Internet tới điều phối viên cấp cao, nên nhiều thông điệp được quản lý bởi điều phối viên mức thấp trong phạm vi một doanh nghiệp, do đó, các thông điệp này sẽ có độ trễ thấp và băng thông mạng cao;

            • Điều phối linh hoạt: Vì sự điều phối bên ngầm diễn ra bên trong doanh nghiệp và không có bất kì sự hiển thị nào tới các hệ thống bên ngoài, do đó, điều phối viên có thể sử dụng bất kỳ giao thức điều phối nào phù hợp nhất với loại ứng dụng đang được thực hiện trong doanh nghiệp. Trong Hình 5, Doanh nghiệp A sử dụng cùng một giao thức điều phối  với tư cách là điều phối viên cấp cao  nhất . Trong trường hợp này, điều phối viên của Doanh nghiệp A điều phối những người tham gia  khác theo cùng một giao thức (giao thức X). Trong nội bộ của Doanh nghiệp B hoặc C, điều phối viên mức thấp sử dụng các giao thức khác nhau phù hợp với loại ứng dụng của B hoặc C (giao thức Y của Doanh nghiệp B và giao thức Z của Doanh nghiệp C)

III. Kết luận

WS-Coordination được xây dựng để trở thành tiêu chuẩn điều phối các hoạt động của dịch vụ Web.  WS-Coordination chỉ cung cấp các dịch vụ hoạt động và đăng ký, và được mở rộng thông qua các trình cắm thêm giao thức  (protocol plug-in). Ngoài các đặc điểm nêu trên, mô hình WS-Coordination còn có khả năng mở rộng hiệu quả thông qua việc điều phối hợp xen kẽ. Điều này cho phép các bộ lưu trữ các dịch vụ Web tùy ý điều phối hoạt động đơn giản, dễ dàng và có khả năng mở rộng cao.

Trong Thông tư số 39/2017/TT-BTTTT ngày 15/12/2017 của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn WS-Coordination phiên bản 1.2 và được xếp vào nhóm Tiêu chuẩn về kết nối.

                                                                                                Đỗ Tiến Thành

Tài liệu tham khảo

1. http://www2.sys-con.com/itsg/virtualcd/webservices/archives/0305/little/index.html

2. http://soa.sys-con.com/node/39751

 

 

718 Go top

Sự kiện nổi bật

Ý kiến về Trang thông tin điện tử Cục Tin học hóa?
1. Đạt yêu cầu, 1180 phiếu (88 %)
2. Chưa đạt yêu cầu, 107 phiếu (8 %)
3. Cần thêm chủ đề, 57 phiếu (4 %)
Tổng số phiếu: 1344
THÔNG KÊ TRUY CẬP
  • Người trực tuyến Người trực tuyến
    • Khách Khách 292
    • Thành viên Thành viên 0
    • Tổng Tổng 292
    • Tổng lượt truy cập: Tổng lượt truy cập: 12728945