12/08/2018, 15:19

SOAP & REST

Thông thường, các ứng dụng phân tán phổ biến sẽ dùng các công nghệ phân tán như corba, dcom, Java/RMI. Các công nghệ này sử dựa trên giao thức RPC hướng đối tượng, tuy nhiên việc cả hai phía đường truyền cần sử dụng cùng mô hình liên lạc là bắt buộc, nó trở nên khó thực hiện khi có tường lửa hay ...

Thông thường, các ứng dụng phân tán phổ biến sẽ dùng các công nghệ phân tán như corba, dcom, Java/RMI. Các công nghệ này sử dựa trên giao thức RPC hướng đối tượng, tuy nhiên việc cả hai phía đường truyền cần sử dụng cùng mô hình liên lạc là bắt buộc, nó trở nên khó thực hiện khi có tường lửa hay proxy vì công nghệ này được cấu hình chỉ cho phép HTTP Để xử lý vấn đề hệ thống riêng biệt, chạy trên các hạ tâng không đồng nhất, dịch vụ web sử dụng SOAP Simple Object Access Protocol - SOAP: Giao thức liên lạc dựa trên XML để trao đổi thoog điệp giữa các máy tính bất kể hệ điều hành, môi trường lập trình hay các nền tảng mô hình đối tượng, nó được dùng cho liên lạc giữa các ứng dụng, sử dụng XML để mã hóa các tham số của yêu cầu và đáp ứng, dùng HTTP làm phương tiện vận chuyển

SOAP bao gồm 4 phần chính:

  • Định dạng thông điệp cho liên lạc một chiều mô tả cách đóng gói thông điệp thành văn bản XML
  • Mô tả các thông điệp SOAP cần được vận chuyển dùng HTTP(với tương tác dựa trên Web) hay SMTP (cho tương tác dựa trên thư điện tử).
  • Tập luật cần được tuân thủ khi xử lý thông điệp SOAP và phân loại đơn giản các thực thể liên quan đến việc xử lý thông điệp SOAP.
  • Tập các quy ước về cách chuyển các lời gọi RPC thành các thông điệp SOAP và ngược lại.

SOAP hỗ trợ hai kiểu truyền thông khác nhau:

  • Remote procedure call (RPC): Cho phép gọi hàm hoặc thủ tục qua mạng. Kiểu này được khai thác bởi nhiều web service và có nhiều trợ giúp.
  • Document (Được biết như kiểu hướng message): Kiểu này cung cấp một lớp thấp của sự trừu tượng hóa và yêu cầu người lập trình nhiều hơn khi làm việc. SOAP có một số ưu và nhược điểm sau: Đối với RPC tuân theo cơ chế liên lạc đồng bộ Máy khách sẽ biểu diễn yêu cầu dưới dạng lời gọi thủ tục với tập tham số, mà được trả lại một response chứa kết quả

Example

Ví dụ với dịch vụ lấy thông tin giá theo mã sản phẩm GetProductPrice RPC-style SOAP body

<env:Envelope
    xmlns:SOAP=“http://www.w3.org/2003/05/soap-envelope”
    xmlns:m="http://www.plastics_supply.com/product-prices">
    <env:Header>
        <tx:Transaction-id xmlns:t=”http://www.transaction.com/transactions”
            env:mustUnderstand='1'>
            512
        </tx:Transaction-id>
    </env:Header>
    <env:Body>
        <m:GetProductPrice>
            <product-id> 450R6OP </product-id >
        </m:GetProductPrice >
    </env:Body>
</env:Envelope>

RPC-style SOAP response message

<env:Envelope
    xmlns:SOAP=“http://www.w3.org/2003/05/soap-envelope”
    xmlns:m="http://www.plastics_supply.com/product-prices">
    <env:Header>
    <--! – Optional context information -->
    </env:Header>
    <env:Body>
        <m:GetProductPriceResponse>
            <product-price>
                134.32 
            </product-price>
        </m:GetProductPriceResponse>
    </env:Body>
</env:Envelope>

Document-style SOAP:

  • Khác với rpc thì nó theo chế độ liên lạc dị bộ
  • Có thể có hoặc không đáp ứng gắn với các thông điệp này
  • Đáp ứng có thể xuất hiện sau và bất cứ khi nào Example
<env:Envelope
    xmlns:SOAP=“http://www.w3.org/2003/05/soap-envelope”>
    <env:Header>
        <tx:Transaction-id xmlns:t=”http://www.transaction.com/transactions”
            env:mustUnderstand='1'>
            512
        </tx:Transaction-id>
    </env:Header>
    <env:Body>
        <po:PurchaseOrder oderDate=”2004-12-02”
            xmlns:m="http://www.plastics_supply.com/POs">
            <po:from>
                <po:accountName>
                    RightPlastics
                </po:accountName>
                <po:accountNumber>
                    PSC-0343-02 
                </po:accountNumber>
            </po:from>
            <po:to>
                <po:supplierName> Plastic Supplies Inc. </po:supplierName>
                <po:supplierAddress> Yara Valley Melbourne </po:supplierAddress>
            </po:to>
            <po:product>
                <po:product-name> injection molder </po:product-name>
                <po:product-model> G-100T </po:product-model>
                <po:quantity> 2 </po:quantity>
            </po:product>
        </ po:PurchaseOrder >
     </env:Body>
</env:Envelope>

Ưu điểm:

  • Đơn giản
  • Khả chuyển (linh hoạt)
  • Thích ứng với tường lửa
  • Dùng chuẩn mở
  • Có khả năng hoạt động trên nhiều hệ thống
  • Chấp nhận rộng rãi Nhược điểm:
  • Dựa quá nhiều vào HTTP
  • Không có trạng thái
  • Rời rạc hóa theo giá trị không theo tham chiếu.

Tạo một mô hình kiến trúc mô tả cách Web nên hoạt động -> nền tảng hướng dẫn cho các chuẩn giao thức Web REST không phải chuẩn, nhưng nó yêu cầu sử dụng một số chuẩn

  • HTTP
  • URL
  • XML/HTML/GIF/JPEG/etc (Resource Representations)
  • text/xml, text/html, image/gif, image/jpeg, etc (Resource Types, MIME Types)

REST mang lại nhiều tiện lợi hơn so với SOAP Hi vọng bài viết giúp bạn phần nào phân biệt được Soap và Rest. Cảm ơn các bạn đã quan tâm tới bài viết

0