Nguon: Microsoft Learn · .NET 8.0

Tại sao nên migrate (di chuyển) từ WCF sang ASP.NET Core gRPC

Nguồn: Why migrate WCF to ASP.NET Core gRPC

Bài viết này cung cấp tóm tắt về lý do tại sao ASP.NET Core gRPC là lựa chọn phù hợp cho các nhà phát triển Windows Communication Foundation (WCF) muốn di chuyển sang kiến trúc và nền tảng hiện đại.

So sánh với WCF

Mặc dù việc triển khai và cách tiếp cận khác nhau đối với gRPC, nhưng trải nghiệm phát triển và sử dụng dịch vụ với gRPC sẽ trực quan đối với các nhà phát triển WCF. WCF và gRPC đều là các framework (khung) RPC (remote procedure call - gọi thủ tục từ xa) với cùng mục tiêu:

Cả hai nền tảng đều chia sẻ yêu cầu khai báo và triển khai giao diện, mặc dù quy trình khai báo giao diện khác nhau. Nhiều loại lời gọi RPC mà gRPC hỗ trợ ánh xạ tốt sang các ràng buộc có sẵn cho dịch vụ WCF. Để biết thêm thông tin và ví dụ, xem Migrate a WCF solution to gRPC.

Lợi ích của gRPC

gRPC cung cấp framework tốt hơn so với các cách tiếp cận khác vì những lý do sau.

Hiệu suất

gRPC sử dụng HTTP/2. So với HTTP/1.1, HTTP/2:

gRPC sử dụng Protobuf, định dạng nhị phân hiệu quả, để tuần tự hóa thông báo. Các thông báo Protobuf:

gRPC là giải pháp tốt cho các thiết bị di động và mạng có hạn chế băng thông.

Khả năng tương tác

Có các công cụ và thư viện gRPC cho tất cả các ngôn ngữ lập trình và nền tảng chính, bao gồm .NET, Java, Python, Go, C++, Node.js, Swift, Dart, Ruby và PHP. Nhờ định dạng wire nhị phân Protobuf và việc tạo code hiệu quả cho mỗi nền tảng, các nhà phát triển có thể xây dựng các ứng dụng đa nền tảng, hiệu năng cao.

Tính dễ sử dụng và năng suất

gRPC là giải pháp RPC toàn diện. Nó hoạt động nhất quán trên nhiều ngôn ngữ và nền tảng. Nó cũng cung cấp công cụ tuyệt vời, với nhiều code boilerplate (code mẫu) được tạo tự động. Giống như WCF, gRPC tự động tạo thông báo và client có kiểu dữ liệu mạnh (strongly typed client). Thời gian của nhà phát triển được giải phóng để tập trung vào logic kinh doanh.

Streaming (truyền dữ liệu liên tục)

gRPC có streaming hai chiều đầy đủ, cung cấp chức năng tương tự như các dịch vụ full duplex (song công hoàn toàn) của WCF. gRPC streaming có thể hoạt động qua các kết nối internet thông thường, load balancer (cân bằng tải) và service mesh (lưới dịch vụ).

Deadlines (thời hạn), timeouts (thời gian chờ) và cancellation (hủy bỏ)

gRPC cho phép client chỉ định thời gian tối đa cho một RPC để hoàn thành. Nếu deadline được chỉ định bị vượt quá, máy chủ có thể hủy hoạt động độc lập với client. Deadlines và cancellations có thể được truyền qua các lời gọi gRPC tiếp theo để giúp thực thi giới hạn sử dụng tài nguyên. Client có thể dừng hoạt động khi deadline bị vượt quá, hoặc sớm hơn nếu cần. Ví dụ, client có thể dừng hoạt động do tương tác của người dùng.

Bảo mật

gRPC có thể sử dụng TLS và HTTP/2 để cung cấp kết nối được mã hóa đầu cuối giữa client và máy chủ. Hỗ trợ xác thực chứng chỉ client tăng cường thêm bảo mật và tin cậy giữa client và máy chủ.

gRPC như là con đường di chuyển cho WCF

Có hai con đường được khuyến nghị để hiện đại hóa ứng dụng WCF:

Bắt đầu

Để được hướng dẫn chi tiết về việc xây dựng dịch vụ gRPC trong ASP.NET Core cho các nhà phát triển WCF, xem ASP.NET Core gRPC for WCF Developers.