Tôi có nên sử dụng Ống có tên, hoặc .NET Remoting để giao tiếp với một tiến trình đang chạy trên máy của tôi không?Lựa chọn tốt nhất cho giao tiếp liên tiến trình .NET là gì?
Trả lời
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ó.
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
. 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
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
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.
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. –
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.
.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.
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.
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.
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.
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 –
- 1. Cách tốt nhất để tạo Thanh tiến trình được phân đoạn là gì?
- 2. Lựa chọn thay thế duyên dáng nhất cho giao diện không đổi là gì?
- 3. Cách tốt nhất để giao tiếp C# và Java là gì?
- 4. Lựa chọn tốt nhất cho khóa chính của bảng Person
- 5. Triển khai tốt nhất cho AOP trong .Net là gì?
- 6. Cách tốt nhất để giao tiếp với Ogre (C++) trong một ứng dụng Java là gì?
- 7. Công nghệ tìm kiếm Net tốt nhất và năng động nhất là gì?
- 8. Trình chỉnh sửa tốt nhất cho AutoHotkey là gì?
- 9. Cách tốt nhất để giao tiếp với máy chủ bằng PhoneGap là gì?
- 10. Hiển thị Lots Of RichText: Chọn lựa chọn tốt nhất
- 11. Thay thế Serializable tốt nhất cho giao diện "Set" và "Collection" là gì?
- 12. Các lựa chọn thay thế cho nút radio là gì?
- 13. Trình ghi đè JSON tốt nhất cho Java là gì?
- 14. Trình chỉnh sửa PHP tốt nhất cho Windows là gì?
- 15. IDE tốt nhất cho lập trình DigitalMars D là gì?
- 16. Thư viện usb tốt nhất để giao tiếp với thiết bị USB HID trên Windows là gì?
- 17. OpenID có nhất thiết là một lựa chọn tốt cho Thương mại điện tử không?
- 18. đang sử dụng TinyMCE một lựa chọn hàng đầu cho trình soạn thảo WYSIWYG trên một trang web? Lựa chọn thay thế tốt là gì?
- 19. Chữ ký tốt nhất cho clone() trong C++ là gì?
- 20. Chương trình phát thanh có liên quan đến lập trình tốt nhất là gì?
- 21. Cách tiếp cận tốt nhất để đăng nhập là gì?
- 22. Phông chữ nhỏ tốt nhất cho nhật thực là gì?
- 23. Lựa chọn tốt nhất cho thư viện kết nối cơ sở dữ liệu kết nối là gì? (c3p0 problem)
- 24. Lựa chọn thay thế tốt cho ASpell?
- 25. Lựa chọn tốt nhất để lưu trữ kho lưu trữ Maven và tích hợp liên tục?
- 26. Tiến trình xây dựng .NET và liên kết
- 27. Cách tốt nhất để thể hiện danh sách bất biến trong .NET là gì?
- 28. Trình phát sự kiện liên tiến trình cho Node.js?
- 29. Các lựa chọn thay thế cho DataGridView là gì?
- 30. Một số lựa chọn thay thế cho PlayN là gì?
Wow, tôi chỉ hỏi về cơ bản cùng một câu hỏi ... http://stackoverflow.com/questions/84860/how-to-communicate-with-a-windows-service-from-an-application-that -interacts-wi –