về cả hai phân tích (serializing, deserializing) và gửi các gói dữ liệu qua mạng là có bất kỳ ước tính tốt về hiệu suất khác biệt giữa nhị phân và xml serialization?Có sự khác biệt về sự khác biệt nào giữa tuần tự hóa nhị phân và XML không?
Trả lời
Không.
Tùy thuộc vào loại dữ liệu nào bên trong chính tài liệu XML. Nếu bạn có nhiều dữ liệu có cấu trúc, chi phí cho XML sẽ lớn. Ví dụ, nếu dữ liệu của bạn trông giống như:
<person>
<name>Dave</dave>
<ssn>000-00-0000</ssn>
<email1>xxxxxx/email1>
</person>
...
Bạn sẽ phải chi phí nhiều hơn nếu bạn có một tài liệu XML trông giống như:
<book name="bible">
In the beginning God created the heavens and the earth.
Now the earth was formless and empty ...
And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
</book>
Vì vậy, nó không thực sự là một câu hỏi hợp lý. Nó phụ thuộc rất cao vào dữ liệu bạn dự định gửi và cách/nếu bạn đang nén dữ liệu đó.
Theo bản năng, bạn sẽ muốn nói rằng nhị phân hiệu quả hơn, nhưng nó thực sự phụ thuộc vào dữ liệu đang được tuần tự hóa.
Kiểm tra bài viết này: http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/
Chỉ cần chỉ ra hiệu suất không phải là chỉ số mà bạn có thể muốn xem xét.
- Dễ xây dựng. Bạn có vài ngày/tuần để xây dựng một chương trình tuần tự/deserialiser thường xuyên và kiểm tra nó kỹ lưỡng hoặc có thể thời gian đó được chi tiêu tốt hơn vào các tính năng.
- Dễ tiêu thụ dữ liệu. Một khách hàng có thể sử dụng một trình phân tích cú pháp nguồn mở được xây dựng sẵn hay họ cần phải thực hiện một loạt các mã (có khả năng lỗi)?
- Dễ gỡ lỗi. Sẽ có thể xem dữ liệu trong quá trình trợ giúp để gỡ lỗi? Sau đó, một định dạng nhị phân sẽ có xu hướng làm xáo trộn bất kỳ vấn đề nào.
- Chi phí bảo trì cho mỗi phương pháp là gì?
Cá nhân, tôi sẽ sử dụng một thư viện phân tích cú pháp nguồn mở và tiêu chuẩn XML đã xuất bản cho đến khi một nút cổ chai hiệu suất được chứng minh bằng thử nghiệm thực tế.
Sự khác biệt lớn nhất giữa BinaryFormatter
và xml serialization là tính di động; BinaryFormatter rất khó đảm bảo giữa các phiên bản, vì vậy chỉ thực sự thích hợp để lưu trữ hoặc truyền tải ngắn hạn.
Tuy nhiên, bạn có thể tận dụng tốt nhất của cả hai, và có nó nhỏ hơn và có nó nhanh hơn, bằng cách sử dụng serialization nhị phân bespoke - và bạn thậm chí không cần phải làm điều đó cho mình ;-p
protobuf-net là triển khai .NET của bộ đệm giao thức nhị phân của Google. nó nhỏ hơn XmlSerializer
hoặc BinaryFormatter
, đầy đủ di động (không chỉ giữa các phiên bản - bạn có thể tải luồng pb vào, ví dụ, java, v.v.), có thể mở rộng và nhanh. Nó cũng được kiểm tra khá toàn diện, với số lượng người dùng hợp lý.
Phân tích đầy đủ về kích thước và tốc độ, bao gồm XmlSerializer
, BinaryFormatter
, DataContractSerializer
và protobuf-net là here.
Vì đây là C#, đã có XML và nhị phân serializers OP có thể sử dụng được kiểm tra đầy đủ và làm việc. –