Khi nào sử dụng ASN.1 thích hợp hơn khi sử dụng JSON? Một số ưu điểm và nhược điểm của cả hai cách tiếp cận là gì?ASN.1 so với JSON khi nào là thích hợp để sử dụng chúng?
Trả lời
ASN.1 và JSON không hoàn toàn so sánh được. JSON là một định dạng dữ liệu. ASN.1 là một ngôn ngữ lược đồ cộng với nhiều bộ quy tắc mã hóa, mỗi quy tắc trong số đó tạo ra các định dạng dữ liệu khác nhau cho một lược đồ đã cho. Vì vậy, câu hỏi ban đầu phần nào song song với câu hỏi "Lược đồ XML so với XML: khi nào nó thích hợp để sử dụng chúng?" So sánh công bằng hơn giữa ASN.1 và JSON Schema.
Điều đó nói rằng, một vài điểm cần cân nhắc:
- ASN.1 có quy tắc mã hóa nhị phân. Xem xét liệu mã hóa nhị phân hay văn bản có thích hợp hơn cho ứng dụng của bạn hay không.
- ASN.1 cũng có các quy tắc mã hóa XML. Bạn có thể chọn sử dụng mã hóa dựa trên văn bản bằng cách sử dụng ASN.1, nếu bạn muốn.
- ASN.1 cho phép các quy tắc mã hóa khác được phát triển. Trên thực tế, chúng tôi đã chỉ định quy tắc của riêng mình (không được chuẩn hóa) để mã hóa ASN.1 thành JSON. Tôi viết blog về điều này trên trang web công ty của chúng tôi here
- Giống như với Lược đồ XML, các công cụ tồn tại để biên dịch ASN.1. Đây thường được gọi là công cụ ràng buộc dữ liệu. Đầu ra trình biên dịch bao gồm các cấu trúc dữ liệu để giữ dữ liệu của bạn và mã để mã hóa/giải mã thành/từ các mã hóa khác nhau (nhị phân, XML, hoặc, nếu sử dụng công cụ của chúng tôi, JSON).
- Tôi không chắc chắn, nếu có, công cụ ràng buộc dữ liệu tồn tại cho JSON Schema. Tôi cũng không chắc chắn về cách lược đồ JSON trưởng thành/ổn định, trong khi ASN.1 khá trưởng thành và ổn định.
- Chọn giữa JSON Schema và ASN.1, lưu ý rằng JSON Schema được ràng buộc với JSON, trong khi ASN.1 không bị ràng buộc với bất kỳ biểu diễn cụ thể nào.
Bạn có thể sử dụng ASN.1 bất kể bạn cần serialize các thư có thể chuyển đến người nhận bằng C, C++, C#, Java hay bất kỳ ngôn ngữ lập trình nào khác với bộ mã hóa/giải mã ASN.1. ASN.1 cũng cung cấp nhiều quy tắc mã hóa có lợi ích trong các trường hợp khác nhau. Ví dụ, DER được sử dụng khi mã hóa chuẩn là rất quan trọng, như trong chứng chỉ kỹ thuật số, trong khi PER được sử dụng khi băng thông rất quan trọng như trong giao thức di động và E-XER được sử dụng khi bạn không quan tâm đến băng thông và muốn để hiển thị một bảng mã trong XML để xử lý maniplulation trong một trình duyệt hoặc trao đổi thông điệp với một công cụ Lược đồ XML.
Lưu ý rằng với công cụ ASN.1 tốt, bạn không phải thay đổi mã ứng dụng của mình để chuyển đổi giữa các quy tắc mã hóa ASN.1 này. Một cuộc gọi hàm đơn giản có thể chọn các quy tắc mã hóa bạn muốn sử dụng.
- 1. Bộ đệm giao thức của Google so với ASN.1
- 2. Khi nào thích hợp để sử dụng mảng ô so với cấu trúc trong Matlab?
- 3. Ở đâu/khi nào chúng tôi sử dụng JSON?
- 4. Khi nào thích hợp để sử dụng mã lỗi?
- 5. Khi nào thích hợp để sử dụng couchDB?
- 6. Khi nào thích hợp để sử dụng CacheItemRemovedCallback?
- 7. Cách thích hợp để sử dụng jQuery kết hợp với 'sử dụng nghiêm ngặt' là gì?
- 8. Khi nào thích hợp để sử dụng thuộc tính KnownType?
- 9. Tệp ASN là gì và cách sử dụng?
- 10. Giải mã một ASN.1 DER OCTET STRING với OpenSSL
- 11. Tránh @ tài sản-itis (tức là sử dụng quá nhiều tài sản, khi nào chúng thích hợp)?
- 12. Khi nào thích hợp để sử dụng Time # utc trong Rails 2.1?
- 13. Khi nào là thời điểm thích hợp để sử dụng từ khóa 'mới'?
- 14. Khi nào nên sử dụng tiện ích kết hợp so với phạm vi được đặt tên?
- 15. Khi nào tôi nên sử dụng Hashtable so với HashMap
- 16. Khi nào không thích hợp để sử dụng các bảng có nguồn gốc?
- 17. trình phân tích cú pháp asn.1 trong C/Python
- 18. Khi nào nó cần thiết/thích hợp để sử dụng InAttribute và OutAttribute cho COM Interop
- 19. Nhận NLog gửi JSON với các tiêu đề thích hợp?
- 20. Khi nào bạn nên sử dụng Page.DataBind() so với Control.DataBind()?
- 21. Phân tích dữ liệu nhị phân ASN.1 bằng Java
- 22. Khi nào thích hợp để sử dụng EAR và khi nào các ứng dụng của bạn sẽ có trong WAR?
- 23. Khi nào sử dụng class so với dict trong python?
- 24. Khi nào sử dụng node.js so với sinatra vs ray?
- 25. Cách thích hợp để nhập tệp json vào mongo
- 26. Khi nào chúng ta sẽ sử dụng applicationContext.xml trong Spring?
- 27. Khi nào sử dụng IModelBinder so với DefaultModelBinder
- 28. Cách thích hợp để sử dụng phương thức gwt-bootstrap với gwt-platform là gì?
- 29. Khi nào là thích hợp để sử dụng tĩnh (trên các không gian tên chưa đặt tên) trong C++?
- 30. Khi nào thích hợp để sử dụng các biến số trống cuối cùng?
Java phải làm gì với JSON? –
Sự hiểu biết của tôi là bởi JSON, bạn có nghĩa là Ký hiệu đối tượng JavaScript. Bạn đang nói với tôi điều này không có gì để làm với Java mặc dù Java là một phần của tên của nó? –
Java chính xác không liên quan gì đến JSON. – megazord