Các tính năng mới trong WCF 4.5

Ngoc Huynh

Tận dụng những lợi thế của các tính năng mới trong WCF 4.5 để xây dựng dịch vụ an toàn, tin cậy, và có khả năng thay đổi một cách trơn tru hơn.

WCF (Windows Communication Foundation) cung cấp một mô hình lập trình thống nhất dùng để xây dựng các dịch vụ mạnh mẽ và có khả năng thay đổi. Đó là một nền tảng thông tin (messaging platform) có thể thay đổi, tin cậy và an toàn để phát triển các ứng dụng hướng dịch vụ trong lập trình .Net. Bạn cũng có thể sử dụng WCF để xây dựng các dịch vụ RESTful.

WCF đã được phát triển trong nhiều năm qua, và bản phát hành ổn định mới nhất – WCF 4.5 có nhiều cải tiến quan trọng. Các tính năng mới đáng chú ý của WCF 4.5 như sau:

• Hỗ trợ Web Sockets
• Hỗ trợ các điểm kết thúc UDP
• Đơn giản hóa các tệp tin cấu hình
• Hỗ trợ xác nhận cấu hình WCF
• Hỗ trợ Contract – First Development
• Các cải tiến về Streaming

Hỗ trợ Web Sockets

Web sockets cung cấp hỗ trợ dành cho giao tiếp song công (full duplex communication) thiếu đồng bộ bằng cách sử dụng giao thức HTTP. Trong WCF 4.5, netHttpBinding và netHttpsBinding đã được cập nhật nhằm mang đến hỗ trợ dành cho WebSockets. Nếu bạn muốn cài đặt hỗ trợ dành cho WebSockets trong dịch vụ WCF của mình, thì bạn nên thiết lập CallbackContract theo ServiceContract. Sau đây là cách thực hiện:

[ServiceContract(CallbackContract = typeof(ITestCallback))]
public interface ITestService
{
[OperationContract(IsOneWay = true)]
Task SendTextMessage(string text);
}

Hỗ trợ các điểm cuối UDP

Có hai cách để trao đổi dữ liệu dữ liệu giữa hai hay nhiều quá trình thông qua một network. Bạn có thể sử dụng hoặc TCP (Transmission Control Protocol) hoặc UDP (User Datagram Protocol). Trong khi TCP là một giao thức hướng kết nối tin cậy và an toàn, thì UDP không phải là một giao thức kết nối, ít an toàn và ít đáng tin cậy hơn. Hiện tại WCF 4.5 cung cấp hỗ trợ dành cho giao thức UDP – một giao thức nhẹ (lightweight) và không có sự kết nối. Code snippet sau đây minh họa cách bạn có thể định rõ một điểm cuối UDP trong WCF 4.5.

<endpoint address=”soap.udp://localhost:8080/” binding=”udpBinding” contract=”IDG.IService” />

Đơn giản hóa các tệp tin cấu hình

Bạn không còn lo lắng về các tệp tin cấu hình dài dòng được tạo ra bởi WCF. Khi bạn tạo ra một dịch vụ WCF mà sử dụng WCF 4.5, thì cấu hình được tạo ra sẽ chỉ có siêu dữ liệu (metadata) liên kết không mặc định. Dưới đây là những gì mà một cấu hình đặc trưng đã tạo ra trong WCF 4.5:

<System.serviceModel>
<bindings>
<wsHttpBinding>
</wsHttpBinding>
</bindings>
<client>
<endpoint name=”IDGBinding”
address=”http://localhost:8080/IDG/ITestService.svc”
binding=”wsHttpBinding”
bindingConfiguration=”WSHttpBinding_ITestService”
contract=”ITestService” />
</client>
</System.serviceModel>

Hỗ trợ xác nhận cấu hình WCF

Đây là một tính năng mới tuyệt vời có trong phiên bản WCF 4.5. Với WCF 4.5, sự hỗ trợ dành cho intellisense được nâng cấp nhiều hơn trong Visual Studio IDE. Với WCF 4.5 nếu Visual Studio có thể phát hiện bất kỳ sự cố với cài đặt cấu hình của dịch vụ WCF vào thời điểm biên dịch, thì nó sẽ hiển thị những cảnh báo khi biên dịch. Ở những phiên bản đầu tiên của WCF bạn đã không có bất kỳ hỗ trợ nào dành cho xác nhận cài đặt cấu hình của dịch vụ WCF.

Contract-first development

Hiện tại WCF 4.5 cung cấp hỗ trợ dành cho contract list development, tức là bây giờ bạn có thể tạo ra các contract dữ liệu từ WSDL. Giờ đây bạn sẽ có một công cụ contract-first được tích hợp vào Visual Studio để bạn có thể sử dụng tính năng này. Hãy lưu ý rằng công cụ phổ biến svcutl có thêm một sự chuyển đổi mới (sự chuyển đổi mới là /serviceContract) có thể tạo ra các contract dịch vụ và dữ liệu từ WSDL document có sẵn.

Cải tiến về streaming

Lập trình bất đồng bộ là một tính năng tuyệt vời khác để cải thiện hiệu năng của ứng dụng. Bạn có thể lợi dụng sự bất đồng bộ để thực hiện các hoạt động mà không cần khóa (block) luồng thực hiện và luồng chính của ứng dụng. WCF 4.5 mang đến sự hỗ trợ dành cho streaming không đồng bộ. Không giống như các phiên bản đầu tiên của WCF, dịch vụ của bạn hiện nay sẽ không chặn khi người tiêu thụ dịch vụ nhận thông báo. Hơn thế nữa, luồng sẽ được tạo ra để phục vụ những người tiêu thụ dịch vụ khác. Và nay các dịch vụ WCF đã được lưu trong IIS để có thể bắt đầu xử lý dữ liệu ngay cả trước khi nhận được toàn bộ dữ liệu.

Để kích hoạt tính năng này, bạn làm theo hướng dẫn sau:

<endpointBehaviors>
<behavior name = “IDGBehavior”>
<dispatcherSynchronization asynchronousSendEnabled = “true” />
</behavior>
</endpointBehaviors>

Chia sẻ bài viết ngay

Nguồn bài viết : http://www.infoworld.com/