Sự khác nhau giữa Web Service, WCF, WCF REST, Web API

9/17/2020 10:51 AM | Lập trình

Hiện nay trong kỷ nguyên hậu PC, smartphone và tablet lên ngôi, nhu cầu xây dựng các ứng dụng mobile trên Windows Phone, iOS, Android đồng bộ dữ liệu đến server theo mô hình điện toán đám mây đang trở nên rất hot.

Nếu quyết định xây dựng phía server sử dụng .NET Framework (với phiên bản mới nhất 4.5.3) thì lập trình viên có thể tạo ra các HTTP service bằng rất nhiều công nghệ khác nhau như là:

-  Web service (ASMX)
-  WCF service
-  WCF REST service
-  Web API service

Điều này rất tốt vì nó cho phép lập trình viên có nhiều lựa chọn hơn trong việc xây dựng các HTTP service dựa trên nền .NET nhưng với những người mới tiếp cận .NET Framework sẽ rối không biết cần phải sử dụng công nghệ nào để bắt đầu. Trong bài viết này chúng ta sẽ cùng điểm qua các công nghệ này để thấy được sự khác nhau giữa chúng từ đó có một cái nhìn toàn diện nhất về các công nghệ service trên .NET đồng thời quyết định được công nghệ nào là phù hợp nhất với nhu cầu của mình.

Web Service

-  Đây là công nghệ cũ nhất của .NET Framework
-  Nó dựa trên
   +  SOAP (Simple Object Access protocol)
   +  dữ liệu trả về dạng XML
-  Chỉ hỗ trợ giao thức HTTP
-  Không phải Open Source nhưng có thể sử dụng được với bất cứ client nào hỗ trợ XML
-  Chỉ có thể host trên IIS

Ưu điểm:
-  Code và Test đơn giản

Nhược điểm:
-  Chỉ hỗ trợ giao thức SOAP để truyền nhận dữ liệu nên performance không cao
-  Không thể tạo ra service dạng REST hỗ trợ định dạng dữ liệu JSON

WCF (.NET 3.0 trở lên)

-  Cũng dựa trên SOAP và trả về dữ liệu dạng XML
-  Phát triển dựa trên Web service và hỗ trợ thêm rất nhiều giao thức khác nhau như: TCP, HTTP, HTTPS, Named Pipes, MSMQ.
-  Giống Web service không phải Open Source nhưng có thể sử dụng bởi các client hỗ trợ XML
-  Có thể host được trong ứng dụng, trên IIS hoặc Windows Service

Ưu điểm:
-  Hỗ trợ nhiều giao thức với nhiều kiểu binding khác nhau đặc biệt là HTTPS
-  Hỗ trợ nhiều định dạng dữ liệu XML, ATOM…

Nhược điểm:
-  Cấu hình rất phức tạp và rối rắm, chắc chắn các lập trình viên mới dùng không thể cấu hình được nếu không sử dụng Configuration Tool & Google
-  Kiến trúc rất phức tạp và cồng kềnh
-  WCF REST (.NET 3.5 trở lên)

WCF REST Service

-  Là bản nâng cấp đáng giá của WCF với việc trên .NET 3.5 Microsoft bổ sung webHttpBinding để hỗ trợ RESTful service
-  Hỗ trợ 2 HTTP verb GET, POST để truyền nhận dữ liệu với 2 thuộc tính tương ứng là WebGet và WebInvoke
-  Muốn sử dụng các HTTP verb khác như PUT, DELETE cần cấu hình thêm trên IIS
-  Hỗ trợ các định dạng dữ liệu XML, ATOM, JSON

Ưu điểm:

-  Bổ sung hỗ trợ RESTful service với định dạng dữ liệu JSON nhẹ hơn SOAP với dữ liệu XML rất nhiều
-  Cho phép cấu hình tham số WebGet qua URI sử dụng UriTemplate

Nhược điểm:

-  Chưa hoàn toàn phải là RESTful service, mới chỉ hỗ trợ mặc định GET, POST
-  Cấu hình khó nhớ (cố hữu của WCF)

Web API (.NET 4 trở lên)

-  Đây là một framework mới giúp cho việc xây dựng các HTTP service rất đơn giản và nhanh chóng
-  Open Source và có thể được sử dụng bởi bất kì client nào hỗ trợ XML, JSON
-  Hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content formats
-  Có thể host trong ứng dụng hoặc trên IIS
-  Kiến trúc lý tưởng cho các thiết bị có băng thông giới hạn như smartphone, tablet
-  Định dạng dữ liệu có thể là JSON, XML hoặc một kiểu dữ liệu bất kỳ

Ưu điểm:

-  Cấu hình hết sức đơn giản khi so với WCF
-  Performance cao
-  Hỗ trợ RESTful đầy đủ
-  Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model binder, IoC container, dependency injection, unit test
-  Open Source

Nhược điểm:

-  Còn rất mới nên chưa có nhiều đánh giá về nhược điểm của Web API

Vậy tôi nên lựa chọn framework nào để phát triển HTTP Service?

Câu trả lời sẽ tùy thuộc vào yêu cầu công việc cụ thể của bạn như thế nào?

Web Service:

-  Lựa chọn khi bạn chỉ cần xây dựng một service đơn giản

WCF là lựa chọn số một khi xây dựng:

-  Service cần hỗ trợ những ngữ cảnh đặc biệt như: message queue, duplex communication…
-  Service sử dụng những kênh truyền dữ liệu ở tầng thấp cho nhanh như: TCP, Named Pipes, UDP…

WCF Rest, Web API được sử dụng khi xây dựng:

-  Service RESTful hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content formats
-  Service cung cấp dữ liệu cho nhiều client khác nhau với băng thông giới hạn như: browser, mobile, tablet…

Kết luận

Qua bài viết này chúng ta đã có một cái nhìn tổng quan hơn về 4 công nghệ hỗ trợ tạo HTTP service trên nền tảng .NET: Web Service, WCF, WCF REST, Web API. Với sự phát triển vũ bão của các thiết bị smartphone, tablet như hiện nay các công nghệ WCF REST và mới đây nhất là WEB API đang nổi lên là những công nghệ lý tưởng nhất cho việc xây dựng các ứng dụng điện toán đám mây. Việc nắm bắt được các công nghệ này là nhu cầu cấp thiết của các lập trình viên vì vậy trong các bài viết sau chúng ta sẽ cùng tìm hiểu chi tiết về cách tạo và sử dụng các service này.

Tin tức khác

  • Tạo chatbot với CHAT GPT sử dụng C#

    Tạo chatbot với CHAT GPT sử dụng C#

    Trong hướng dẫn này, chúng ta sẽ đi sâu vào quá trình xây dựng chatbot bằng ChatGPT và C#. Chúng tôi sẽ đề cập đến mọi thứ, từ thiết lập quyền truy cập API ChatGPT đến triển khai chatbot của bạn. Bắt đầu nào!

  • Remote SQL Server. Cách mở port 1433 để kết nối với sqlserver từ xa.

    Remote SQL Server. Cách mở port 1433 để kết nối với sqlserver từ xa.

    Hiện nay nhiều người có xây dựng cơ sở dữ liệu trên server và kết nối tới để làm việc cho tiện. Nên mình chia sẻ bài viết này cho người mới nhé.

  • Sự khác nhau giữa Application, Virtual Direction và Site. Cách tạo 1 Virtual Direction.

    Sự khác nhau giữa Application, Virtual Direction và Site. Cách tạo 1 Virtual Direction.

    Trong IIS, bạn có thể tạo các trang web, ứng dụng và thư mục ảo để chia sẻ thông tin với người dùng qua Internet, mạng nội bộ hoặc mạng phụ. Mặc dù các khái niệm này đã tồn tại trong các phiên bản trước của IIS, một số thay đổi trong IIS 7 trở lên ảnh hưởng đến định nghĩa và chức năng của các khái niệm này. Quan trọng nhất, các trang web, ứng dụng và thư mục ảo giờ đây hoạt động cùng nhau theo mối quan hệ phân cấp như những khối xây dựng cơ bản để lưu trữ nội dung trực tuyến và cung cấp dịch vụ trực tuyến.

  • Design pattern là gì? Tại sao nên sử dụng Design pattern?

    Design pattern là gì? Tại sao nên sử dụng Design pattern?

    Design pattern là các giải pháp tổng thể đã được tối ưu hóa, được tái sử dụng cho các vấn đề phổ biến trong thiết kế phần mềm mà chúng ta thường gặp phải hàng ngày. Đây là tập các giải pháp đã được suy nghĩ, đã giải quyết trong tình huống cụ thể.

  • CDN là gì? Khi nào thì cần xài CDN cho website

    CDN là gì? Khi nào thì cần xài CDN cho website

    Thuật ngữ CDN có thể bạn sẽ bắt gặp khá nhiều bài viết trên thachpham.com, hoặc khi bạn cần một người có kinh nghiệm tư vấn giải pháp tiết kiệm băng thông máy chủ và tăng tốc độ website đều sẽ được nghe tư vấn là sử dụng CDN. Vậy CDN chính xác là cái gì, có bao nhiêu loại CDN, và website của bạn có thích hợp để sử dụng CDN không thì bài này sẽ cung cấp cho bạn các thông tin cần thiết đó.

  • Giao thức HTTP và HTTPS là gì? Tại sao nên sử dụng HTTPS?

    Giao thức HTTP và HTTPS là gì? Tại sao nên sử dụng HTTPS?

    Môi trường internet phát triển, kéo theo tội phạm mạng tăng cao, vì thế cần có những chuẩn bảo mật web cao hơn. Đó là lí do giao thức HTTPS dần thay thế hoàn toàn HTTP. Vậy, giao thức HTTPS là gì? HTTP và HTTPS khác nhau như thế nào? Và tại sao các website nên dùng HTTPS thay vì HTTP? Bài viết này sẽ giúp bạn giải đáp tất cả những thắc mắc đó.

  • Tích hợp zalo vào website.

    Tích hợp zalo vào website.

    Nếu bạn là một người có website bán hàng thì việc liên hệ thuận lợi nhanh cho khách hàng luôn là ưu tiên hàng đầu. Cũng chính vì lí dó này mình đã tìm hiểu sau khi chèn cho website của mình. Thấy hay nên chia sẻ cho mọi người có nhu cầu.