it-swarm-vi.tech

Sự lựa chọn tốt nhất cho giao tiếp giữa các quá trình .NET là gì?

Tôi có nên sử dụng Named Faucet hoặc .NET Remote để liên lạc với một quy trình đang chạy trên máy của mình không?

81
mrbradleyt

WCF là sự lựa chọn tốt nhất. Nó hỗ trợ một số cơ chế vận chuyển khác nha ( bao gồmĐược đặt tênỐng ) và có thể được điều khiển cấu hình hoàn toàn. Tôi rất khuyên bạn nên xem WCF.

Đây là một blog thực hiện WCF so với hiệu suất so sánh từ xa .

Một trích dẫn từ blog:

WCF và .NET Remote thực sự có thể so sánh về hiệu suất. Sự khác biệt là rất nhỏ (đo độ trễ của máy khách) đến mức không quan trọng cái nào nhanh hơn một chút. WCF mặc dù có thông lượng máy chủ tốt hơn nhiều so với .NET Remote. Nếu tôi bắt đầu dự án hoàn toàn mới, tôi sẽ chọn WCF. Dù sao, WCF làm được nhiều hơn là từ xa và cho tất cả các tính năng mà tôi yêu thích.

Phần MSDN cho WCF

58
Eric Schoonover

Nếu là trên một máy đơn lẻ, Named Faucet mang lại cho bạn hiệu suất tốt hơn và có thể được triển khai với cơ sở hạ tầng từ xa cũng như WCF. Hoặc bạn chỉ có thể sử dụng trực tiếp System.IO.Pipes .

15
Mark Cidade

Nếu bạn có nghĩa là giao tiếp giữa các quá trình, tôi đã sử dụng .NET Remote mà không có vấn đề gì cho đến nay. Nếu hai quá trình trên cùng một máy, giao tiếp khá nhanh.

Named Faucet chắc chắn hiệu quả hơn, nhưng chúng yêu cầu thiết kế ít nhất một giao thức ứng dụng cơ bản, điều này có thể không khả thi. Từ xa cho phép bạn gọi các phương thức từ xa một cách dễ dàng.

5
Dario Solera

Nếu bạn đang sử dụng .NET Framework 3.0 trở lên, tôi sẽ sử dụng WCF. Sử dụng WCF, bạn có thể sử dụng các ràng buộc khác nhau phụ thuộc vào sự đánh đổi giữa hiệu suất/interop/vv. đó là điều bạn cần.

Nếu hiệu suất không quan trọng và bạn cần can thiệp với các công nghệ Dịch vụ Web khác, bạn sẽ muốn sử dụng liên kết WS-HTTP. Đối với trường hợp của bạn, bạn có thể sử dụng WCF với ràng buộc net-tcp hoặc ràng buộc ống có tên. Hoặc là nên làm việc.

Quan điểm cá nhân của tôi là cách tiếp cận WCF sạch sẽ hơn khi bạn có thể thực hiện các dịch vụ theo Hợp đồng và tập trung vào các tin nhắn, không phải các đối tượng (Tôi đang khái quát hóa ở đây dựa trên các mô hình lập trình mặc định của WCF/.NET Remjection). Tôi không thích gửi các đối tượng qua dây vì nhiều thông tin ngữ nghĩa bị mất hoặc không rõ ràng. Khi tất cả những gì bạn đang làm là gửi một tin nhắn giống như bạn với WCF, việc phân tách mối quan tâm của bạn giữa giao tiếp và các lớp/cơ sở hạ tầng mà một nút được cấu thành sẽ trở nên dễ dàng hơn.

3
Jason Olson

Từ xa trong .NET Framework 2.0 cung cấp kênh IPC để liên lạc giữa các quá trình trong cùng một máy.

3
icelava

WCF cũng cung cấp sự linh hoạt. Chỉ cần thay đổi một số cấu hình (ràng buộc), bạn có thể có cùng dịch vụ trên một số máy khác thay vì IPC trên cùng một máy. Do đó, mã của bạn vẫn linh hoạt.

2
Vikram I Code

.Net từ xa không phải là một giao thức trong chính nó. Nó cho phép bạn chọn tiêu đề nào sẽ sử dụng: SOAP, ống có tên, v.v.

1
Joel Coehoorn

.net từ xa được tích hợp vào .net để thực hiện giao tiếp bên trong. Nếu bạn sử dụng điều đó, họ sẽ tiếp tục hỗ trợ và có thể nâng cao nó trong các phiên bản trong tương lai. Các ống được đặt tên không mang đến cho bạn lời hứa về các cải tiến trong các phiên bản tương lai của .net

0
kemiller2002