2012-06-19 37 views
21

Tôi tự hỏi chúng ta nên chọn cơ chế tuần tự hóa nào khi xử lý đối tượng truyền qua mạng. Những ưu và khuyết điểm là gì ?Java serialization vs JSON vs XML

Tôi biết phần lớn thời gian chúng tôi sử dụng JSON hoặc XML cho AJAX kể từ khi định dạng chuyển nhượng được khá nhiều Javascript định dạng, và cộng JSON là khá nhẹ với kích thước nhỏ gọn của nó, do đó là Java serialization hoàn toàn ra khỏi bảng?

Trả lời

15

Nói chung câu hỏi quan trọng là khách hàng sẽ nhận được các đối tượng được tuần tự hóa - trình duyệt/công cụ JavaScript như (nút-js), máy khách Java, máy khách không xác định/nhiều.

JSON - Cú pháp JSON về cơ bản là JavaScript và do đó bất kỳ thành phần nào với công cụ JS sẽ xử lý phân tích rất tốt - thậm chí các cấu trúc dữ liệu phức tạp sẽ được chuyển đổi thành đối tượng "sống" một cách hiệu quả.Các trình phân tích cú pháp JSON tồn tại cho bất kỳ ngôn ngữ nào và dễ sử dụng ngay cả khi không sử dụng một công cụ JS, (Lấy Google Gson chẳng hạn, có thể chuyển đổi JSON thành các đối tượng tương ứng một cách dễ dàng). - ví dụ: messaging architecture.

XML - Chia sẻ nhiều lợi ích của JSON - ngôn ngữ chéo, trọng lượng nhẹ, v.v. Adobe Flex ví dụ xử lý XML rất tốt, thậm chí tốt hơn JSON. Đó chắc chắn là một thay thế thích hợp cho JSON. Cá nhân tôi thích JSON cho cú pháp JS của nó, nhưng XML cũng tốt.

Nối tiếp Java - Chỉ nên xem xét cho giao tiếp Java-to-Java. Lưu ý quan trọng là định nghĩa lớp học phải được gửi và kết thúc nhận và thường bạn sẽ không đạt được nhiều bằng cách truyền toàn bộ đối tượng. Tôi sẽ không loại trừ RMI như là một giao thức truyền thông, nó đơn giản hóa sự phát triển. Tuy nhiên, các thành phần ứng dụng kết quả sẽ khó có thể thay thế được.

Một lưu ý khác - Việc tuần tự nói chung có chi phí của nó. Tuy nhiên khi giao tiếp được thực hiện qua mạng, nút cổ chai thường là mạng chứ không phải là sự tuần tự hóa/tự tuần tự hóa.

+0

Vì vậy, bạn sẽ vẫn xem xét JSON hoặc XML qua chuỗi tuần tự hóa java khi truyền thông JAVA-tới-JAVA? – peter

+0

Nếu tất cả những gì bạn truyền là dữ liệu tôi sẽ dùng cho XML hoặc JSON. Tôi sẽ không đi vào tuần tự hóa và truyền các đối tượng Java một cách thủ công. Xem xét RMI Java nếu nó có ý nghĩa để có cùng một định nghĩa đối tượng trên cả hai đầu và trong trường hợp bạn quan tâm đến việc gọi các phương thức trên đối tượng từ xa. Hy vọng nó giúp. –

6

Tôi nghĩ điều đó phụ thuộc. Nếu bạn đang gửi một yêu cầu http hoặc một cái gì đó thì JSON hoặc XML rõ ràng là một lựa chọn tốt. Nếu bạn chỉ đang gửi một đối tượng java trên một socket tcp cho một số thuật toán phân tán hoặc một cái gì đó tôi nghĩ rằng serialization java là dễ dàng hơn/tốt hơn

1

Tôi nghĩ là nhà phát triển chúng ta không cần phải chăm sóc serialization của Response Objects. nhưng nếu chúng ta xem xét JSON, nó có các ưu điểm phong phú để lựa chọn trên XML.

  1. Trả lời JSON không cần phản hồi được mã hóa không giống XML.
  2. xử lý và xử lý JSON nhanh hơn so với XML vì nó không được phân tích cú pháp.
  3. Phản hồi XML cho AJAX luôn được mã hóa do đó việc xử lý cần có thời gian.
  4. JSON phù hợp nhất với Jquery cho mã hóa liên quan đến giao diện người dùng và nhanh hơn.
  5. Xử lý dữ liệu lớn Ví dụ: tìm nạp dữ liệu lập chỉ mục đến/từ máy chủ, xử lý JSON nhanh hơn.
4

Trong khi tuần tự hóa trên mạng, cả xml và json đều hoạt động. Nó phụ thuộc vào người tiêu dùng của thông tin này.

  • Nếu người tiêu dùng là một trình duyệt sử dụng Ajax để yêu cầu một số thông tin và đưa ra một cái gì đó trên màn hình, nói chung jason là đặt cược tốt nhất là nó đã có trong định dạng đối tượng javascript và không có chi phí chuyển đổi các đối tượng tương thích Javascript . Thực tế, nhiều libs Ajax (ví dụ jQuery) có hỗ trợ tốt cho json.

  • Nếu bạn là người tiêu dùng là một ứng dụng khác có thể hoặc không có trong java, thì xml là cơ chế tuần tự thích. Các dịch vụ web sử dụng xml rất nhiều.

  • Nếu người tiêu dùng của bạn là một chương trình Java khác thì chắc chắn việc tuần tự hóa java là tùy chọn ưa thích (ví dụ: RMI). Vì vậy, nó chưa ra :-).

Nhưng có có dòng mờ giữa XML và Json. Những gì tôi đã đề cập ở đây là thực hành chung. Dưới đây là một nice article đặt tất cả các khía cạnh trên xml vs jason.