Quy định kỹ thuật ràng buộc SOAP đơn giản WS-I phiên bản 1.0 (WS-I Simple SOAP Binding Profile version 1.0) 

Tổ chức Liên thông Dịch vụ Web (Web Services Interoperability, viết tắt là WS-I) là một tổ chức được tạo ra để thúc đẩy khả năng liên thông dịch vụ Web trên các nền tảng, hệ điều hành và ngôn ngữ lập trình...

I. Giới thiệu

Tổ chức Liên thông Dịch vụ Web (Web Services Interoperability, viết tắt là WS-I)  là một tổ chức được tạo ra để thúc đẩy khả năng liên thông dịch vụ Web trên các nền tảng, hệ điều hành và ngôn ngữ lập trình.

Để biết thêm thông tin về WS-I, hãy tham khảo trang web: http://www.ws-i.org/. Trang này chứa các thông tin như tổng quan về liên thông dịch vụ web, các kịch bản sử dụng và các đặc tả kỹ thuật.

Quy định kỹ thuật cơ bản của WS-I (WS-I Basic Profile) là một loạt các yêu cầu mà giao thức WSDL và giao thức truyền tải SOAP/HTTP phải tuân thủ để đảm bảo sự liên thông trong WS-I.

Tiêu chuẩn WS-I Simple SOAP Binding Profile 1.0 (Quy định kỹ thuật ràng buộc SOAP đơn giản WS-I phiên bản 1.0, viết tắt là WS-I SSBP) là tiêu chuẩn được xây dựng dựa trên Quy định kỹ thuật cơ bản WS-I và Quy định bổ sung đính kèm WS-I 1.0 (WS-I Attach Profile 1.0).

Tùy thuộc vào kiểu dịch vụ Web được tạo, nhà phát triển muốn hoặc không muốn dịch vụ web  tuân theo các Quy định kỹ thuật cơ bản WS-I. Mức tuân thủ mặc định là tạo ra cảnh báo nếu dịch vụ Web thông báo không phải WS-I SSBP được lựa chọn và bỏ qua mọi lựa chọn không theo tuân theo WS-I AP. Nhà phát triển có thể đặt mức độ tuân thủ WS-I ở mức độ công việc thông thường hay ở mức dự án phát triển. Các thủ thuật dịch vụ Web, môi trường chạy WebSphere®, trình soạn thảo WSDL và các công cụ dịch vụ Web khác hỗ trợ, khuyến khích việc phát triển các dịch vụ tuân thủ WS-I.

Bài viết này giới thiệu về  WS-I Simple SOAP Binding Profile 1.0 (sau đây gọi tắt là "Quy định kỹ thuật"), bao gồm các mô tả kỹ thuật dịch vụ Web không độc quyền nhằm thúc đẩy khả năng liên thông.

II. Một số nội dung chính của Quy định kỹ thuật

II.1 Liên kết với các quy định kỹ thuật khác

Quy định kỹ thuật này bắt nguồn từ những yêu cầu của Quy định kỹ thuật cơ bản phiên bản 1.0  (Basic Profile 1.0) liên quan đến trình tự của bao bì thông điệp và cách trình diễn dữ liệu trong thông điệp. Các yêu cầu này được loại khỏi Quy định kỹ thuật cơ bản phiên bản 1.1 để cho phép các Quy định kỹ thuật khác có thể kết hợp với nó.

II.2 Quy ước ký hiệu

Các từ khóa "PHẢI", "KHÔNG PHẢI", "YÊU CẦU", "XẢY RA", "KHÔNG XẢY RA", "NÊN", "KHÔNG NÊN", "ĐƯỢC ĐỀ XUẤT", "CÓ THỂ" và "TÙY CHỌN" trong bài viết này được diễn giải như trong mô tả RFC2119.

Các định danh yêu cầu có thể được coi là không gian tên được chấp nhận, tương thích với QNames trong không gian tên của XML. Nếu tiền tố không gian tên không rõ ràng trên định danh yêu cầu (ví dụ: "R9999" trái ngược với "bp10: R9999"), nó sẽ được biên dịch như là không gian tên được xác định bởi URI. Nếu nó đủ điều kiện, tiền tố sẽ được biên dịch theo bảng ánh xạ không gian tên.

Một số yêu cầu làm rõ các đặc tả kỹ thuật tham chiếu, nhưng không đặt các ràng buộc bổ sung khi triển khai.

Đặc tả kỹ thuật này sử dụng một số tiền tố không gian tên xuyên suốt và URI liên kết của chúng được liệt kê như dưới đây. Lưu ý rằng việc chọn bất kỳ tiền tố không gian tên nào là tùy chọn và không quan trọng về mặt ngữ nghĩa.

• wsdl - "http://schemas.xmlsoap.org/wsdl/"

• soapbind - "http://schemas.xmlsoap.org/wsdl/soap/"

• uddi - "urn: uddi-org: api_v2"

II.3 Nhận dạng Quy định kỹ thuật và phiên bản

Tiêu chuẩn này được xác định bởi một tên (trong trường hợp này, là Simple SOAP Binding Profile) và một số phiên bản (ở đây, 1.0). Số phiên bản bao gồm một thành phần chính và thành phần phụ, dưới dạng "thành phần chính.thành phần phụ". Chúng có thể được sử dụng để xác định quyền ưu tiên; phiên bản có số lớn hơn (xem xét cả hai thành phần chính và phụ) chỉ ra phiên bản đó mới hơn và thay thế các phiên bản trước đó.

Các phiên bản của Quy định kỹ thuật có thể cùng đưa ra các vấn đề về liên thông trong cùng phạm vi chung (mặc dù một số phát triển có thể yêu cầu phạm vi chính xác của một Quy định kỹ thuật để thay đổi giữa phiên bản).

Người ta cũng có thể sử dụng thông tin này để xác định xem liệu hai phiên bản của một Quy định kỹ thuật là hai phiên bản của một Quy định kỹ thuật có tương thích với nhau hay không. Có thể giả định rằng tương thích với phiên bản trước của Quy định kỹ thuật cũng có nghĩa là tương thích với phiên bản sau. Các phiên bản Quy định kỹ thuật có cùng tên và số phiên bản chính CÓ THỂ được coi là tương thích.

II.4 Sự tương thích Quy định kỹ thuật

Sự tương thích với một Quy định kỹ thuật được xác định bằng cách tuân thủ  một tập hợp các yêu cầu cho một mục tiêu cụ thể. Phần này giải thích các điều khoản và mô tả sự tương thích được xác định và sử dụng như thế nào.

II.4.1 Yêu cầu tương thích

Các yêu cầu nêu rõ các tiêu chí đối với khả năng tương thích với Quy định kỹ thuật. Chúng được mô tả dưới  một đặc tả kỹ thuật hiện có và các phiên bản điều chỉnh, diễn giải và làm rõ để cải thiện khả năng liên thông. Tất cả các yêu cầu trong Quy định kỹ thuật được coi xem như quy chuẩn, và các yêu cầu trong các đặc tả kỹ thuật cũng được xem như dạng tiêu chuẩn. Khi các yêu cầu trong Quy định kỹ thuật và các đặc tả kỹ thuật có những điểm khác biệt, mâu thuẫn với nhau, các yêu cầu của Quy định kỹ thuật được xác định quyền ưu tiên cho các mục đích của tương thích Quy định kỹ thuật.

Các mức độ của yêu cầu sử dụng ngôn ngữ RFC2119 (ví dụ, PHẢI, CÓ THỂ, NÊN) chỉ ra bản chất của yêu cầu và tác động của nó đối với sự tương thích.

Ví dụ;

R9999 WIDGETs NÊN có hình tròn.

Yêu cầu này được xác định bởi "R9999", áp dụng cho WIDGET đích và đặt một yêu cầu có điều kiện lên các widget; tức là, yêu cầu này được đáp ứng để duy trì sự tương thích trong hầu hết các trường hợp.

Mỗi câu lệnh yêu cầu chứa một yêu cầu mức từ khóa (ví dụ: "PHẢI") và một từ khóa đích tương ứng (ví dụ: "THÔNG BÁO"). Các văn bản bổ sung có thể được thêm để làm rõ một yêu cầu hoặc một nhóm các yêu cầu (ví dụ: các bản giải thích và ví dụ);

Các định nghĩa của các thuật ngữ trong Quy định kỹ thuật để quyết định khả năng tương thích.

Không có yêu cầu nào trong Quy định kỹ thuật được xem như là giới hạn khả năng tương thích khi áp dụng các biện pháp an ninh, bảo mật nhằm ngăn ngừa với mối đe dọa (ví dụ: từ chối tấn công dịch vụ).

II.4.2 Mục tiêu tương thích

Các mục tiêu tương thích xác định các dữ liệu được tạo ra (ví dụ: thông báo SOAP, mô tả WSDL, dữ liệu đăng ký UDDI) hoặc các yêu cầu của bên áp dụng (ví dụ: bộ xử lý SOAP, người dùng cuối).

Điều này cho phép định nghĩa sự tương thích trong các ngữ cảnh khác nhau, để đảm bảo sự biên dịch rõ ràng các yêu cầu và cho phép kiểm tra sự tương thích của các đối tượng (ví dụ, các thông báo SOAP và các mô tả WSDL) và hành vi, cử xử của các bên khác nhau đối với dịch vụ Web (ví dụ như  khách hàng và các bản ghi dịch vụ).

Mục tiêu của các yêu cầu tương thích là các đối tượng vật lý (physical artifact) để đơn giản hóa việc kiểm tra và tránh sự mơ hồ, không rõ ràng.

Các tương thích đích sau được sử dụng trong Quy định kỹ thuật:

ENVELOPE (Phong bì) - Quy trình hóa của SOAP bao gồm thành phần vỏ bọc và nội dung của nó.

MESSAGE (Thông điệp) – Bao gồm các yếu tố giao thức để vận chuyển một ENVELOPE (ví dụ: thông báo SOAP / HTTP)

DESCRIPTION (Mô tả) – Bao gồm các mô tả về các loại, thông điệp, giao diện, giao thức, các ràng buộc định dạng dữ liệu, và các điểm truy cập mạng được liên kết với các dịch vụ Web (ví dụ: mô tả WSDL)

INSTANCE - phần mềm thực hiện một wsdl: port hoặc uddi: bindingTemplate (từ Quy cách kỹ thuật cơ bản 1.1)

RECEIVER (Người nhận) - phần mềm xử lý thông báo theo một giao thức liên kết với nó (ví dụ: bộ xử lý SOAP)

II.4.3  Phạm vi tương thích

Phạm vi của Quy định kỹ thuật mô tả các công nghệ mà nó đưa ra. Nói cách khác, Quy định kỹ thuật cố gắng cải thiện khả năng liên thông trong phạm vi của nó. Về cơ bản, phạm vi của Quy định kỹ thuật  được xác định bởi các thông số được tham chiếu bởi nó.

Phạm vi của Quy định kỹ thuật được tinh chỉnh bằng các điểm mở rộng. Các đặc tả kỹ thuật thường cung cấp cơ chế mở rộng và các tham số cấu hình mở, khi được xác định trong Quy định kỹ thuật như điểm mở rộng, cơ chế hoặc thông số đó nằm ngoài phạm vi của Quy định kỹ thuật. Việc sử dụng hoặc không sử dụng của nó không liên quan đến sự tương thích của Quy định kỹ thuật.

Lưu ý rằng Quy định kỹ thuật vẫn có thể đưa ra các yêu cầu trong việc sử dụng điểm mở rộng. Ngoài ra, việc sử dụng của các điểm mở rộng có thể bị hạn chế bởi các thông số kỹ thuật khác nhằm cải thiện khả năng liên thông khi được sử dụng kết hợp với Quy định kỹ thuật.

Bởi vì việc sử dụng các điểm mở rộng có thể làm giảm khả năng liên thông, do đó, việc sử dụng chúng nên được các bên tham gia vào một dịch vụ web thương lượng hoặc ghi lại một cách rõ ràng;

II.5 Thông điệp gói tin

Phần này của Quy định kỹ thuật kết hợp các thông số kỹ thuật sau bằng cách tham chiếu và xác định các điểm mở rộng bên trong chúng:

  • Giao thức truy cập đối tượng cơ bản (SOAP) 1.1
  • Ngôn ngữ đánh dấu mở rộng (XML) 1.0 (Ấn bản thứ hai)
  • Miền tên trong XML 1.0
  • RFC2616: Giao thức truyền siêu văn bản - HTTP / 1.1

II.5.1 Quy trình trong thông điệp

SOAP 1.1 xác định một cấu trúc XML để truyền tải thông điệp, phong thư. Quy định kỹ thuật ủy nhiệm việc sử dụng cấu trúc đó và đưa ra các ràng buộc sau đây vào việc sử dụng nó:

Quy trình chứa phong bì XML

R9700 THÔNG ĐIỆP PHẢI sắp xếp lại phong thư như là tải trọng của phần thân thực thể HTTP;

HTTP.R9701 THÔNG ĐIỆP PHẢI sắp xếp lại phong thư dưới dạng XML 1.0;

R9702 THÔNG ĐIỆP PHẢI có trường tiêu đề HTTP "Kiểu nội dung";

R9703 Trường tiêu đề HTTP "Kiểu nội dung" của THÔNG ĐIỆP PHẢI có giá trị trường là "văn bản / xml".

Khai báo miền tên XML

R9704 ENVELOPE KHÔNG NÊN khai báo không gian tên xmlns:

xml = "http://www.w3.org/XML/1998/namespace" .C

Mã hóa BOM

XML 1.0 cho phép mã hóa UTF-8 bao gồm một BOM; do đó, người nhận tệp chứa phải được chuẩn bị để chấp nhận chúng. BOM bắt buộc đối với XML được mã hóa dưới dạng UTF-16.

R4001 A RECEIVER PHẢI chấp nhận các tệp chứa bao gồm cả Unicode Byte Order Mark (BOM) .C

Tuyên bố XML

Sự hiện diện hoặc vắng mặt của một khai báo XML không ảnh hưởng đến khả năng liên thông. Một số triển khai nhất định có thể luôn cho biết việc tuần tự hóa XML của chúng với khai báo XML.

R1010 A RECEIVER PHẢI chấp nhận thông báo có trong tệp chứa Tuyên bố XML.

II.5.2 Mã hóa ký tự

Một quy định kỹ thuật yêu cầu các bộ xử lý XML hỗ trợ mã hóa ký tự "UTF-8" và "UTF-16", để hỗ trợ khả năng liên thông.

Do đó, kết hợp với yêu cầu của SOAP 1.1 để sử dụng loại phương tiện "văn bản / xml" (có mã hóa ký tự mặc định là "us-ascii") trên tệp chứa, tham số "ký tự" (charset) phải luôn có trong nội dung của tệp chứa. Thuộc tính giải mã hóa (encoding pseudo-attribute) của khai báo XML trong thông điệp bị bỏ qua, phù hợp với các yêu cầu của cả XML 1.0 và RFC3023, "Kiểu truyền thông XML".

Tham số "ký tự" của trường tiêu đề Content-Type HTTP phải được sử dụng để xác định mã hóa ký tự chính xác của thư, khi không có thông số "ký tự", giá trị mặc định cho bộ ký tự (là "us-ascii") phải được sử dụng.

R1012 THÔNG ĐIỆP PHẢI sắp xếp tệp chứa bằng cách sử dụng mã hóa ký tự UTF-8 hoặc UTF-16.

R1018 Giá trị trường tiêu đề HTTP "Loại nội dung" của THÔNG ĐIỆP PHẢI cho biết mã hóa ký tự chính xác, sử dụng tham số "ký tự".

II.6 Ràng buộc (Binding)

Tiện ích Binding SOAP

Quy định kỹ thuật giới hạn việc lựa chọn các ràng buộc WSDL với các ràng buộc SOAP đã được định nghĩa và thường được sử dụng trong các ràng buộc WSDL với SOAP. WSDL 1.1 xác định các ràng buộc liên kết cho HTTP GET / POST và MIME hoặc bất kỳ công nghệ tệp đính kèm nào khác.

R9802 một wsdl: phần tử Binding (ràng buộc) trong một DESCRIPTION (MÔ TẢ) PHẢI sử dụng Binding SOAP WSDL như được định nghĩa trong WSDL 1.1 Phần 3

R9800 Trong một Binding liên kết thành phần WSDL DESCRIPTION làm cho các thông điệp trên đường truyền không tương thích với Cấu hình KHÔNG được sử dụng.

R9801 Trong DESCRIPTION, WSDL MIME và HTTP GET/POST và MIME ràng buộc liên kết KHÔNG PHẢI xuất hiện trong SOAP binding.

Lưu ý rằng điều này đặt ra một yêu cầu về việc xây dựng các phần tử ràng buộc WSDL. Nó không đặt một yêu cầu về mô tả tổng thể. Cụ thể, nó không loại trừ các tài liệu WSDL chứa các phần tử wsdl: không tương thích.

Nội dung phần tử portType

WSDL 1.1 không chỉ rõ việc liệu nó có được phép cho một wsdl: Binding ràng buộc cho các phần của nội dung được định nghĩa bởi một wsdl: portType không xác định.

R2209 một wsdl: Binding trong một DESCRIPTION nên ràng buộc mỗi wsdl: một phần của một wsdl: thông điệp trong wsdl: portType mà nó đề cập đến một trong soapbind: body, soapbind: header, soapbind: lỗi hoặc soapbind: headerfault.

PortType định nghĩa một hợp đồng trừu tượng với một tập hợp các hoạt động có tên và các thông báo trừu tượng liên quan. Mặc dù không được phép, mọi phần của thông tin đầu vào, đầu ra và lỗi trừu tượng được chỉ định trong portType đều ràng buộc với soapbind: body hoặc soapbind: header khi sử dụng liên kết SOAP như được định nghĩa trong WSDL 1.1.

III. Kết Luận

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 Ban hành 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, Khuyến nghị áp dụng tiêu chuẩn WS-I Simple SOAP Binding Profile version 1.0 và được xếp vào nhóm Tiêu chuẩn kết nối.

                                                          Đỗ Tiến Thành

Tài liệu tham khảo

  1. https://www.service-architecture.com/articles/web-services/web_services_interoperability_organization_ws-i.html
  2. http://www.ws-i.org/Profiles/SimpleSoapBindingProfile-1.0.html

 

 

121 Go top

Ý kiến về Trang thông tin điện tử Cục Tin học hóa?



THÔNG KÊ TRUY CẬP
  • Người trực tuyến Người trực tuyến
    • Khách Khách 24
    • Thành viên Thành viên 0
    • Tổng Tổng 24
    • Tổng lượt truy cập: Tổng lượt truy cập: 10409858