2009-07-26 16 views

Trả lời

8

Có, có rất nhiều thứ, nhưng không có thứ gì là "Chuẩn" như COM/DCOM. Ít nhất, trong Windows, COM/DCOM được sử dụng bởi các công cụ "Windows", và các cơ chế RPC khác được sử dụng bởi các công cụ "Windows".

Linux không có bất kỳ thứ gì như thế, thay vào đó các giao thức RPC cấp cao thường sử dụng bất kỳ ngôn ngữ nào cung cấp hoặc thư viện cụ thể phù hợp nhất với nhu cầu của ứng dụng. Ví dụ về điều đó sẽ là RMI trong Java, mô-đun "pyro" của Python, vv, sẽ cung cấp (một số) tính chẵn lẻ chức năng với DCOM.

Corba hơi nặng nhưng một số người dường như sử dụng nó.

Rất nhiều ứng dụng cuộn thư viện RPC của riêng họ. Đừng làm điều đó trừ khi bạn phải, nó khó chịu.

+0

Sun RPC -ONC có hoạt động tương tự như COM/DCOM không? –

+0

[ONC RPC] (https://en.wikipedia.org/wiki/Open_Network_Computing_Remote_Procedure_Call) ngang bằng với [DCE/RPC] (https://en.wikipedia.org/wiki/DCE/RPC) hoặc [MSRPC ] (https://en.wikipedia.org/wiki/Microsoft_RPC). IDL của nó đơn giản hơn nhiều và nó có ít tính năng hơn. [Phân phối COM] (https://en.wikipedia.org/wiki/Distributed_Component_Object_Model) dựa trên MSRPC để giao tiếp, nhưng nó xử lý nhiều thứ phức tạp trên mức đó, chẳng hạn như bộ nhớ đệm đối tượng proxy để tránh 'AddRef' và' QueryInterface' các chuyến đi khứ hồi, ping để thu gom rác, quản lý bộ nhớ COM cụ thể, v.v. – acelent

+0

** Linux không có bất cứ thứ gì như thế **: Tôi sẽ nói * dbus * đến khá gần: các ứng dụng có thể phơi bày các phương thức và sự kiện rpc, bạn có thể xem xét các phương pháp này và sau đó gọi chúng từ xa. ** Rất nhiều ứng dụng cuộn thư viện RPC của riêng họ. Đừng làm điều đó trừ khi bạn phải, nó khó chịu ** Tôi chắc chắn thấy điểm. Mặt khác, tôi sẽ nói những thứ như emacs và gimp có các thư viện RPC khá đẹp. Tôi đoán ứng dụng phức tạp hơn là nó càng xứng đáng với cơ chế rpc của riêng nó! –

11

Đối với liên lạc nội bộ, D-Bus là cơ chế mức cao hơn tiêu chuẩn. Cả GTK và Qt đều có các ràng buộc cho D-Bus, hầu hết các môi trường máy tính để bàn (hoặc ít nhất là GNOME và KDE) trưng ra các dịch vụ khác nhau thông qua D-Bus và nhiều ứng dụng máy tính để bàn có thể được điều khiển thông qua giao diện D-Bus. Bus hệ thống cũng hữu ích cho việc tìm ra các thông tin mức thấp khác nhau về hệ thống sử dụng các dịch vụ hệ thống tiêu chuẩn.

KDE4 (được xây dựng dựa trên Qt4) cũng bao gồm một công nghệ gọi là KParts, thường được so sánh với COM của Window.

+5

"Đối với truyền thông liên tiến trình, D-Bus là cơ chế tiêu chuẩn." Đó là? Ổ cắm, bộ nhớ chia sẻ, hàng đợi tin nhắn, và semaphores là những gì tôi sẽ nói nếu được hỏi những gì các tiêu chuẩn truyền thông interprocess tiêu chuẩn của bất kỳ môi trường POSIX được. – smcameron

+3

D-Bus cao hơn các cơ chế cơ bản mà bạn liệt kê, có thể so sánh với COM/DCOM và phổ biến rộng rãi trên Linux (tất cả các phiên bản khác được thừa kế từ nhiều phiên bản khác của Unix-D-Bus các cơ chế cấp độ của khóa học). –

+0

Bạn có thể viết bộ điều khiển Pigin IM hoạt động thông qua D-Bus thay vì một plugin pigin. Chạy dbus-monitor --session và bạn có thể thấy pigdin đặt mọi thứ trong các cuộc hội thoại của bạn trên đó trên D-Bus. –

2

Có công nghệ XPCOM của Mozilla, Mô hình đối tượng thành phần nền tảng chéo. Sắp xếp tương tự như COM hoặc DCOM theo khái niệm.

Here là một danh sách các chương trình tương đối ít mà làm tận dụng D-bus

3

Bạn có thể kiểm tra Corba, nó hoạt động trên Linux và Windows là tốt.

3

Dự án Mono nhảy vào tâm trí. Chủ yếu là vì CLR/.NET là COM mới - sau khi tất cả, COM ban đầu được bán dưới dạng ngôn ngữ độc lập, các đối tượng tương thích nhị phân.

Tôi đoán DCOM (ví dụ: COM với một sợi dây dài hơn) sẽ là .NET Remoting? Hoặc có lẽ một số dịch vụ web với serialization đối tượng. Tôi tin Mono hỗ trợ cả hai.

4
D-Bus
  • D-Bus sử dụng một logic "xe buýt" trên đó các ứng dụng kết nối có thể giao tiếp
  • truyền thông diễn ra thông qua một đơn giản -mô hình đối tượng D-Bus bao gồm một cơ chế intropection tiêu chuẩn cho truy vấn thời gian chạy của giao diện đối tượng, các ứng dụng kết nối với bus có thể truy vấn sự sẵn có của các đối tượng, gọi phương thức từ xa trên chúng và yêu cầu thông báo cho các tín hiệu phát ra họ
  • trước: GNOME Bonobo, KDE DCOP, CORBA, Sun RPC ... ngày nay mọi người có vẻ thích D-Bus
UNO
  • giao diện dựa comp mô hình onent, như COM và CORBA
  • tất cả các giao diện UNO phải được lấy từ giao diện cung cấp khả năng thu nhận, giải phóng và phương thức QueryInterface (so sánh với COM)
  • tuổi thọ của các đối tượng UNO được kiểm soát bởi tham chiếu toàn cầu đếm.
  • thành phần chỉ giao tiếp qua giao diện o mỗi thành phần trong môi trường Uno Runtime (URE), không có chi phí hoạt động cho các thành phần, được khởi tạo trong cùng một URE, ví dụ, trong C++, một cuộc gọi từ thành phần A đến B chỉ là một cuộc gọi ảo
  • Giao diện UNO được chỉ định trong IDL
  • ngoại lệ được sử dụng để xử lý lỗi.
XPCOM
  • tương tự như Microsoft COM
  • Giao diện trong XPCOM được định nghĩa trong một phương ngữ của IDL gọi XPIDL
  • bất lợi là XPCOM thêm rất nhiều mã cho marshalling đối tượng giữa sử dụng khác nhau ngữ cảnh, dẫn đến mã bloat trong các hệ thống dựa trên XPCOM

... một lựa chọn khác để chống lại ider có thể Java RMI cũng

Nó cũng đáng để xem câu hỏi liên quan:
Is there an equivalent to COM on *nix systems ? If not, what was the *nix approach to re-usability?
Analog of COM programming in Linux/UNIX

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