Dịch vụ Web so với Dịch vụ WCF


Câu trả lời:


67

Câu trả lời này dựa trên một bài báo không còn tồn tại:

Tóm tắt bài báo:

"Về cơ bản, WCF là một lớp dịch vụ cho phép bạn xây dựng các ứng dụng có thể giao tiếp bằng nhiều cơ chế giao tiếp. Với nó, bạn có thể giao tiếp bằng cách sử dụng Peer to Peer, Named Pipes, Web Services, v.v.

Bạn không thể so sánh chúng vì WCF là một khuôn khổ để xây dựng các ứng dụng có thể tương tác. Nếu bạn thích, bạn có thể coi nó như một công cụ hỗ trợ SOA. Điều đó có nghĩa là gì?

Vâng, WCF tuân theo một cái gì đó được gọi là ABC, trong đó A là địa chỉ của dịch vụ mà bạn muốn giao tiếp, B là đại diện cho ràng buộc và C là hợp đồng. Điều này rất quan trọng vì có thể thay đổi ràng buộc mà không nhất thiết phải thay đổi mã. Hợp đồng có tác dụng mạnh hơn nhiều vì nó buộc tách hợp đồng ra khỏi việc thực hiện. Điều này có nghĩa là hợp đồng được xác định trong một giao diện và có một triển khai cụ thể được ràng buộc bởi người tiêu dùng sử dụng cùng một ý tưởng của hợp đồng. Mô hình dữ liệu được tóm tắt. "

... một lát sau ...

"nên sử dụng WCF khi chúng ta cần giao tiếp với các công nghệ truyền thông khác (e, .g. Peer to Peer, Named Pipes) hơn là Web Service"


2
Đối với bất kỳ dự án mới nào dựa trên cách tiếp cận SOA, Nhà phát triển nên chọn WCF qua các dịch vụ web. Bởi vì nó mang lại sự linh hoạt và khả năng mở rộng để sử dụng trong tương lai. Chỉ có một ngoại lệ: nếu máy khách không hỗ trợ giao tiếp với các dịch vụ wcf tức là Flash AS2.
Lalit

WCF 1) Nó là một kiến ​​trúc nhiều lớp 2) Nó cung cấp một nền tảng thống nhất duy nhất (có thể tương tác) hoặc khuôn khổ để xây dựng Ứng dụng Hướng Dịch vụ để giao tiếp bằng nhiều giao thức mạng. 3) WCF cung cấp độ bảo mật và độ tin cậy tốt hơn so với các dịch vụ web hoặc dịch vụ ASMX 4) Hỗ trợ cho Dịch vụ Web Plain XML, Ajax và REST 1) Nó đơn giản 2) Viết một hàm và nối nó với thuộc tính [WebMethod] và nó là sẵn sàng cung cấp dịch vụ
Arun Banik

Như đã trả lời từ Joe -> Bài báo được sao chép trên codeproject.com/Articles/139787/…
Bernhard

33

Từ Sự khác biệt giữa WCF và Dịch vụ Web là gì?

WCF là sự thay thế cho tất cả các công nghệ dịch vụ web trước đây của Microsoft. Nó cũng làm được nhiều hơn những gì truyền thống được coi là "dịch vụ web".

WCF "dịch vụ web" là một phần của phổ rộng hơn nhiều của giao tiếp từ xa được kích hoạt thông qua WCF. Bạn sẽ nhận được mức độ linh hoạt và tính di động cao hơn nhiều khi thực hiện mọi việc trong WCF so với thông qua ASMX truyền thống bởi vì WCF được thiết kế, từ đầu, để tóm tắt tất cả các cơ sở hạ tầng lập trình phân tán khác nhau do Microsoft cung cấp. Một điểm cuối trong WCF có thể được giao tiếp dễ dàng qua SOAP / XML cũng như nó có thể qua TCP / nhị phân và để thay đổi phương tiện này chỉ cần một mod tệp cấu hình. Về lý thuyết, điều này làm giảm số lượng mã mới cần thiết khi chuyển hoặc thay đổi nhu cầu kinh doanh, mục tiêu, v.v.

ASMX cũ hơn WCF và bất cứ thứ gì ASMX có thể làm như vậy WCF đều có thể làm được (và hơn thế nữa). Về cơ bản, bạn có thể thấy WCF đang cố gắng nhóm một cách hợp lý tất cả các cách khác nhau để hai ứng dụng giao tiếp trong thế giới của Microsoft; ASMX chỉ là một trong số nhiều cách này và hiện nay nó được nhóm lại dưới phạm vi khả năng của WCF.

Dịch vụ Web chỉ có thể được truy cập qua HTTP và nó hoạt động trong môi trường không trạng thái, nơi WCF linh hoạt vì các dịch vụ của nó có thể được lưu trữ trong các loại ứng dụng khác nhau. Các kịch bản phổ biến để lưu trữ các dịch vụ WCF là IIS, WAS, Tự lưu trữ, Dịch vụ Windows được quản lý.

Sự khác biệt chính là Sử dụng Dịch vụ Web XmlSerializer. Nhưng WCF Sử dụng DataContractSerializerhiệu suất tốt hơn so với XmlSerializer.


2
Lưu ý ngẫu nhiên: Một sự khác biệt lớn của DataContractSerializer và XmlSerializer là DCS yêu cầu sắp xếp trường - đó là lý do tại sao tôi không sử dụng DCS cho tuần tự hóa hoặc hợp đồng không nhất thời! Do đó, có thể phá vỡ một dịch vụ được sử dụng bởi khách hàng không sử dụng thứ tự cố định khi chuyển sang DCS (hoặc chuyển sang DCS nhưng theo thứ tự khác với thứ tự đã được sử dụng trước đó). Cấp, điều này sẽ được thể hiện trong Schema, nhưng ..
user2246674

1
Ngoài ra, vui lòng trích dẫn / liên kết các nguồn và chỉ ra các đoạn trích và / hoặc lấy thông tin gốc và viết một cái gì đó mới với nó. Thật thô lỗ khi ăn trộm. Tôi đã thêm liên kết cho bạn, nhưng hãy đảm bảo ghi công khi nó đến hạn! (Tôi sẽ downvote trên cơ sở đó, nếu tôi có thể downvote ở tất cả.)
user2246674

32

Dịch vụ Web dựa trên SOAP và trả về dữ liệu ở dạng XML. Nó chỉ hỗ trợ giao thức HTTP. Nó không phải là mã nguồn mở nhưng có thể được sử dụng bởi bất kỳ ứng dụng khách nào hiểu xml. Nó chỉ có thể được lưu trữ trên IIS.

WCF cũng dựa trên SOAP và trả về dữ liệu ở dạng XML. Đó là sự phát triển của dịch vụ web (ASMX) và hỗ trợ nhiều giao thức khác nhau như TCP, HTTP, HTTPS, Named Pipes, MSMQ. Vấn đề chính với WCF là, cấu hình rộng rãi và tẻ nhạt của nó. Nó không phải là mã nguồn mở nhưng có thể được sử dụng bởi bất kỳ máy khách nào hiểu xml. Nó có thể được lưu trữ trong ứng dụng hoặc trên IIS hoặc sử dụng dịch vụ cửa sổ.


WCF cũng có thể nhận / gửi yêu cầu / phản hồi http ở định dạng JSON và không cần sử dụng SOAP / lược đồ (ngày nay?).
Efrain

Điểm chi tiết: SOAP hỗ trợ HTTPS. Việc mã hóa xảy ra ở lớp truyền tải, vì vậy máy khách không thể hiểu được nó - máy khách thực hiện các yêu cầu XML và nhận các phản hồi XML, và nó không biết cũng như không quan tâm xem nó là trơn-ol-http hay được mã hóa-https.
Jinlye

16

Sự khác biệt cơ bản và chính là, dịch vụ web ASP.NET được thiết kế để chỉ trao đổi tin nhắn SOAP qua HTTP trong khi Dịch vụ WCF có thể trao đổi tin nhắn bằng bất kỳ định dạng nào (SOAP là mặc định) qua bất kỳ giao thức truyền tải nào tức là HTTP, TCP, MSMQ hoặc NamedPipes, v.v.


4

Sự khác biệt giữa dịch vụ web và WCF là gì?

  1. Dịch vụ web chỉ sử dụng giao thức HTTP trong khi truyền dữ liệu từ ứng dụng này sang ứng dụng khác.

    Nhưng WCF hỗ trợ nhiều giao thức truyền thông điệp hơn dịch vụ Web ASP.NET. WCF hỗ trợ gửi tin nhắn bằng cách sử dụng HTTP, cũng như Giao thức điều khiển truyền (TCP), đường ống được đặt tên và Hàng đợi tin nhắn của Microsoft (MSMQ).

  2. Để phát triển một dịch vụ trong Dịch vụ Web, chúng tôi sẽ viết đoạn mã sau

    [WebService]
    public class Service : System.Web.Services.WebService
    {
      [WebMethod]
      public string Test(string strMsg)
      {
        return strMsg;
      }
    }

    Để phát triển một dịch vụ trong WCF, chúng tôi sẽ viết đoạn mã sau

    [ServiceContract]
    public interface ITest
    {
      [OperationContract]
      string ShowMessage(string strMsg);
    }
    public class Service : ITest
    {
      public string ShowMessage(string strMsg)
      {
         return strMsg;
      }
    }
  3. Dịch vụ Web không mạnh hơn về mặt kiến ​​trúc. Nhưng WCF mạnh mẽ hơn về mặt kiến ​​trúc và thúc đẩy các phương pháp hay nhất.

  4. Dịch vụ Web sử dụng XmlSerializer nhưng WCF sử dụng DataContractSerializer. Cái nào tốt hơn về hiệu suất so với XmlSerializer?

  5. Đối với các lệnh gọi dịch vụ nội bộ (sau tường lửa), chúng tôi sử dụng liên kết net: tcp, nhanh hơn nhiều so với SOAP.

    WCF nhanh hơn 25% —50% so với ASP.NET Web Services và nhanh hơn khoảng 25% so với .NET Remoting.

Khi nào thì tôi chọn cái này hơn cái kia?

  • WCF được sử dụng để giao tiếp giữa các ứng dụng khác đã được phát triển trên các nền tảng khác và sử dụng Công nghệ khác.

    Ví dụ: nếu tôi phải chuyển dữ liệu từ nền tảng .net sang ứng dụng khác đang chạy trên hệ điều hành khác (như Unix hoặc Linux) và chúng đang sử dụng giao thức truyền khác (như WAS hoặc TCP) thì chỉ có thể truyền dữ liệu sử dụng WCF.

  • Ở đây không hạn chế nền tảng, giao thức truyền của ứng dụng trong khi chuyển dữ liệu giữa ứng dụng này sang ứng dụng khác.

  • Bảo mật rất cao so với dịch vụ web


2

Sự khác biệt chính là thời gian chờ, Dịch vụ WCF đã hết thời gian chờ khi không có phản hồi, nhưng dịch vụ web không có thuộc tính này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.