2008-09-17 26 views

Trả lời

58

WCF là lựa chọn tốt nhất. Nó hỗ trợ a number of different transport mechanisms (includingNamedPipes) và có thể được định cấu hình hoàn toàn. Tôi rất muốn giới thiệu bạn hãy xem WCF.

Đây là blog có WCF vs Remoting performance comparison.

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

Các WCF và .NET Remoting là thực sự so sánh trong hoạt động. Sự khác biệt là quá nhỏ (đo độ trễ của khách hàng) mà 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 Remoting. 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 nhiều hơn Remoting và cho tất cả những tính năng tôi thích nó.

MSDN Section for WCF

+1

Bằng chứng khác có lợi cho việc truy cập từ xa. Từ một người nào đó trong nhóm từ xa của Microsoft/WCF: "có rất ít đầu tư phát triển đi vào Remoting. WCF là người kế thừa của Remoting." Từ đây http://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ

0

. Truy cập từ xa được tích hợp vào .net để thực hiện giao tiếp trong quá trình. Nếu bạn sử dụng nó, họ sẽ tiếp tục hỗ trợ và có thể tăng cường nó trong các phiên bản sau. Các đường ống được đặt tên không cung cấp 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

+2

Không chắc chắn rằng chúng sẽ tăng cường khả năng truy cập từ xa. Từ một ai đó trong nhóm từ xa/WCF: "có rất ít đầu tư phát triển đi vào Remoting. WCF là người kế thừa của Remoting." Từ đây http://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ

5

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

Ống có tên 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, có thể không khả thi. Remoting cho phép bạn gọi các phương thức từ xa một cách dễ dàng.

+3

WCF trên các đường ống có tên cũng cho phép điều này. Và bạn chỉ có thể sử dụng cùng một hợp đồng lắp ráp trong cả hai quy trình. –

14

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

1

.Net từ xa không phải là giao thức trong và của chính nó. Nó cho phép bạn chọn tiêu chuẩn để sử dụng: SOAP, tên-ống, v.v.

3

Remoting trong .NET Framework 2.0 cung cấp các kênh IPC cho quá trình liên lạc trong cùng một máy.

3

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ự cân bằng giữa hiệu năng/interop/etc. đó là điều bạn cần.

Nếu hiệu suất không quan trọng và bạn cần tương tác 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 một ràng buộc net-tcp, hoặc một ràng buộc tên-ống. Hoặc là nên làm việc.

Cách tiếp cận WCF của tôi là sạch hơn vì bạn có thể thực hiện các dịch vụ theo hợp đồng và tập trung vào tin nhắn chứ không phải đối tượng (tôi đang khái quát hóa ở đây dựa trên mô hình lập trình mặc định của WCF/.NET Remoting). Tôi không thích gửi các đối tượng trên dây bởi vì rất 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 thông điệp giống như bạn đang ở WCF, bạn sẽ dễ dàng phân tách các mối quan tâm của mình giữa giao tiếp và các lớp/cơ sở hạ tầng mà một nút đơn được tạo thành.

1

WCF cũng cung cấp tính linh hoạt. Bởi chỉ cần thay đổi một số cấu hình (ràng buộc), bạn có thể có cùng một 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.

+0

Danh sách các API IPC cho .NET: http://weblogs.asp.net/ricardoperes/local-machine-interprocess -truyền thông với mạng –

Các vấn đề liên quan