sự khác biệt giữa chúng là gì?
Khi nào thì tôi chọn cái này hơn cái kia?
sự khác biệt giữa chúng là gì?
Khi nào thì tôi chọn cái này hơn cái kia?
Câu trả lời:
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"
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ụngDataContractSerializer
hiệu suất tốt hơn so vớiXmlSerializer
.
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ổ.
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.
Sự khác biệt giữa dịch vụ web và WCF là gì?
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).
Để 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;
}
}
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.
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?
Đố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
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.