2008-12-09 38 views
6

Tôi đang cố gắng tìm một phần mềm trung gian giao thức phù hợp cho ứng dụng được phân phối tiếp theo của mình. Tôi đã tìm thấy một số chi tiết kỹ thuật trong vài ngày qua và đã tự hỏi nếu tôi bị mất một số quan trọng? Nó phải là một giao thức nhị phân, hỗ trợ RPC và tùy chọn có các triển khai mã nguồn mở bằng các ngôn ngữ khác nhau. Dưới đây là danh sách các giao thức tôi thấy:giao thức nhị phân đa mục đích

  • CORBA
  • ICE
  • AMQP
  • Thrift

Và đây là danh sách các giao thức bác bỏ:

  • XML dựa các giao thức vì chúng dựa trên văn bản (XML-RCP, SOAP, được cuộn bằng tay, v.v.)
  • Nghị định thư Buffers (Closed Source)
  • COM (Windows-only)
+0

Có bất kỳ lý do tại sao nó phải là nhị phân? – Skizz

+0

XML có thể được mã hóa theo định dạng nhị phân không gian hiệu quả hơn, xem http://en.wikipedia.org/wiki/Binary_XML cho các tùy chọn. – xahtep

+0

Một phần của giao tiếp có thể sẽ diễn ra giữa các quá trình trên một máy chủ duy nhất. XML (thậm chí là xml nén) sẽ lãng phí thời gian của CPU – soulmerge

Trả lời

13

Dự án Bộ đệm giao thức chắc chắn không phải là nguồn đóng.

Bạn quan tâm đến ngôn ngữ/nền tảng nào?

  • Đối với Java, C++ và Python có Google code.
  • Đối với C# có ít nhất ba dự án (bao gồm cả mine hoặc Marc's)
  • Đối với ngôn ngữ/nền tảng khác, hãy xem relevant wiki page

Lưu ý rằng mặc dù có còn sơ khai hỗ trợ RPC trong Nghị định thư Buffers, Google hasn không phát hành lớp RPC thực sự của nó, vì vậy bạn phải tự cung cấp. Cho rằng về cơ bản bạn sẽ vượt qua một thông báo yêu cầu và trả về một tin nhắn phản hồi, nó không phải là rằng khó phân lớp nó qua các giao thức hiện có (ví dụ: HTTP POST).

8

Tôi không nghĩ Protocol Buffers là nguồn đóng. Trang này ngụ ý khác nhau và có tải xuống nguồn.

2

Bạn có thể xem ASN.1.

Được sử dụng để mã hóa và truyền dữ liệu nhị phân trong nhiều giao thức khác (ví dụ: SNMP, LDAP) mặc dù ASN.1 không tự xác định giao thức truyền tải.

+0

Nó thậm chí có thể được sử dụng để mã hóa thêm XML: http://java.sun.com/developer/technicalArticles/xml/fastinfoset/ – xahtep

3

Khá có thể không phải là ứng cử viên tốt nhất, nhưng vì đầy đủ 'vì tôi muốn thêm rằng có một binary encoding for XML.

3

Tôi khuyên bạn nên xem xét lại Bộ đệm giao thức của Google. Có nhiều triển khai mã nguồn mở cho tất cả các nền tảng chính, bao gồm C++/Java/Python do chính Google xuất bản.

Như đã đề cập bởi Jon Skeet ở trên, PB spec không xác định mô hình RPC nhưng nó rất dễ dàng để xác định RPC của riêng bạn bằng cách sử dụng PB.

Ngoài ra, bạn có thể xem ASN.1. Có rất nhiều ứng dụng sử dụng ASN.1.

0

Tôi khuyên bạn nên thử dùng RabbitMQ AMQP và sử dụng Protocol Buffers, XML hoặc một số định dạng dữ liệu khác như JSON, để nếm thử. Ngoài việc tương đối đơn giản và dễ dàng để bắt đầu, điều này cho phép bạn trộn và kết hợp các kiểu pubsub RPC và không đồng bộ, và có sự lây lan tốt trên các ngôn ngữ, giao thức và nền tảng. Nhưng nó có thể không phù hợp với vấn đề của bạn - tất cả đều phụ thuộc vào những gì bạn đang cố gắng làm! Cheers, alexis

2

Joe Armstrong's UBF dường như không bắt kịp, nhưng nó đáp ứng các yêu cầu của bạn với thiết kế trang nhã.

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