2008-09-27 19 views
15

Tôi đang xem xét một cơ chế để tuần tự hóa dữ liệu được truyền qua một ổ cắm hoặc bộ nhớ dùng chung trong một cơ chế độc lập về ngôn ngữ. Tôi miễn cưỡng sử dụng XML vì dữ liệu này sẽ rất có cấu trúc và tốc độ mã hóa/giải mã là rất quan trọng. Có một API C tốt được cấp phép tự do là rất quan trọng, nhưng lý tưởng là phải có hỗ trợ cho một tấn các ngôn ngữ khác. Tôi đã xem google's protocol buffersASN.1. Có phải tôi đang trên đường ray bên phải không? Có cái gì tốt hơn? Tôi có nên thực hiện cấu trúc đóng gói của riêng mình và không tìm kiếm một số tiêu chuẩn?Cách tốt nhất để tuần tự hóa dữ liệu theo định dạng nhị phân độc lập với ngôn ngữ là gì?

+0

có thể muốn xem [performant-entity-serialization-bson-vs-messagepack-vs-json] (http://stackoverflow.com/questions/6355497/performant-entity-serialization-bson-vs-messagepack-vs -json). – nawfal

Trả lời

11

Với yêu cầu của bạn, tôi sẽ sử dụng Bộ đệm giao thức của Google. Có vẻ như nó lý tưởng cho ứng dụng của bạn.

+1

Vấn đề tôi gặp phải với Protocol Buffers là giao diện C là cực kỳ khủng khiếp. Tôi đang hướng tới asn1c vào lúc này. – bmdhacks

+1

Năm năm sau, có một số giao diện C tốt cho bộ đệm giao thức, vì vậy tôi đánh dấu đây là câu trả lời đúng. – bmdhacks

+0

Bạn có thể giải thích về sự khác biệt giữa các protobuffers và XDR ... – Claudio

3

Bạn có thể xem xét XDR. Nó có một RFC. Tôi đã sử dụng nó và không bao giờ có bất kỳ vấn đề hiệu suất với nó. Nó được sử dụng trong ONC RPC và có một công cụ gọi là rpcgen. Nó cũng dễ dàng để tạo ra một máy phát điện cho mình khi bạn chỉ muốn serialize dữ liệu (đó là những gì tôi đã kết thúc làm vì lý do di động, đã cho tôi nửa ngày). Có một triển khai C nguồn mở, nhưng nó có thể đã có trong thư viện hệ thống, vì vậy bạn sẽ không cần nguồn.

ASN.1 luôn luôn có vẻ là một chút baroque với tôi, nhưng tùy thuộc vào nhu cầu thực tế của bạn có thể thích hợp hơn, vì có một số hạn chế đối với XDR.

+0

Tôi đồng ý Sun XDR hoạt động tốt cho tất cả các nền tảng và hệ điều hành mà chúng tôi đã sử dụng. –

1

Ngoài ra còn có Binary XML nhưng có vẻ như chưa được ổn định. Bài viết tôi liên kết để cung cấp cho một loạt các liên kết mà có thể được quan tâm.

1

Tùy chọn khác là SNAC/TLV được AOL sử dụng trong giao thức Oscar/AIM của nó.

2

JSON thực sự là yêu thích của tôi đối với loại nội dung này. Tôi không có kinh nghiệm trước đó với các công cụ nhị phân trong nó mặc dù. Vui lòng đăng kết quả của bạn nếu bạn định sử dụng JSON!

+0

Rất tiếc, tôi sẽ phải loại bỏ JSON ra do chi phí phân tích cú pháp. Tôi thực sự đang tìm kiếm các định dạng lưu trữ dữ liệu theo dạng nhị phân mà không cần phải được phân tích cú pháp. – bmdhacks

+0

Bạn có thể đánh giá quá cao chi phí - trình phân tích cú pháp JSON được viết tốt là khá hiệu quả; và không phải tất cả các trình phân tích nhị phân đều được viết tốt (có nghĩa là đôi khi chúng chậm hơn). Vì vậy, trước tiên tôi sẽ đo lường hiệu suất của các lựa chọn thay thế giả sử bạn biết câu trả lời. – StaxMan

+0

Cập nhật từ phía tôi: Tôi vừa mới thực hiện JSON với nội dung nhị phân, bằng cách mã hóa base64 theo cách thủ công các đốm màu nhị phân. Nó hoạt động khá tốt! – SchizoDuckie

1

Ngoài ra, hãy kiểm tra Muscle. Trong khi nó làm khá một chút, nó nối tiếp thành một định dạng nhị phân.

3

Chỉ muốn ném ASN.1 vào hỗn hợp này. ASN.1 là một định dạng chuẩn, nhưng có thư viện cho hầu hết các ngôn ngữ và giao diện C qua asn1c sạch hơn nhiều so với C interface for protocol buffers.

0

ít Thing của bạn cần phải xem xét

1. Storage 
2. Encoding Style (1 byte 2 byte) 
3. TLV standards 

ASN.1 Parser là tốt cho represenations nhị phân phần tốt nhất là ASN.1 là một công nghệ cũng như thành lập được sử dụng rộng rãi cả trong ITU-T và bên ngoài nó. Ký hiệu được hỗ trợ bởi một số nhà cung cấp phần mềm.

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