2008-10-08 38 views
9

Tôi có một dự án mới cần một giao thức nhị phân tốt.Bắt đầu với Hessian

Tôi đã nghĩ đến việc sử dụng Hessian, trừ khi có ai đó có bất kỳ ý tưởng nào tốt hơn.

Tôi đã đọc qua một số tài liệu của họ và nó không đơn giản như tôi nghĩ, vì vậy tôi có một vài câu hỏi nhanh.

Trang nhà có một phần có tiêu đề "Tài liệu" có các tài liệu sau:

* Hessian Documentation 
* Hessian 1.0.1 spec 
* Hessian 2.0 Serialization Draft 
* Hessian 2.0 Web Service Draft 
* Taxonomy explaining Hessians relationship to CORBA, SOAP, RMI 

1) sự khác biệt giữa các là gì? Tôi giả định rằng 1.0.1 sau đó trở thành 2.0, và nó là đúng để sử dụng 2.0 ngày hôm nay, nhưng tôi đã không chắc chắn.

2) Bạn có mong đợi ai đó sử dụng tính năng tuần tự hóa 2.0 hoặc dịch vụ web 2.0 không? Có vẻ như dịch vụ web chỉ là một tham chiếu để tạo ra một triển khai mới, nhưng một lần nữa nó không hoàn toàn rõ ràng với tôi.

3) Điều gì về việc triển khai máy chủ hỗ trợ Hessian bằng PHP. Bạn có cần phải sử dụng một máy chủ Caucho, hoặc bạn có thể thực hiện máy chủ trong PHP trên Fedora Core và kết nối bằng một máy khách Java không?

Trả lời

2

tôi đã không sử dụng Hessian trong quá khứ và tôi không có ý định sử dụng nó trong tương lai, hoặc, và lập luận của tôi là những:

Đối với một dịch vụ web, tôi sẽ cố gắng thực sự khó khăn để giữ nó trong XML cũ đơn giản. Trong trường hợp tôi sẽ chọn một biểu diễn XML nhị phân, có lẽ tôi sẽ sử dụng Fast Infoset - đây là một tiêu chuẩn và rất có thể được hỗ trợ bởi một bộ API/thư viện/khung công tác dịch vụ web lớn hơn nhiều. Tôi biết rằng số người CXF đã nói về infoset nhanh trên danh sách gửi thư của họ và nó sẽ được hỗ trợ, mặc dù họ chưa ghi lại điều này trên wiki của họ.

Nếu tốc độ là điều chính, tôi có thể sẽ sử dụng Protocol Buffers.

+1

Bí quyết ở đây là trả về XML từ máy chủ theo mặc định và nếu khách hàng yêu cầu Hessian, hãy trả lại điều đó. –

+0

Nếu sẽ hữu ích nếu bạn có thể giải thích tại sao bạn sẽ không sử dụng Hessian nữa. – Vincent

+0

Chúng tôi sử dụng Hessian trong phần mềm của chúng tôi, và tôi ước các nhà phát triển trước đã không làm điều này vì bây giờ chúng ta phải truy cập điểm cuối hessian từ C++. Đó là một nỗi đau và tôi thích mọi thứ ở dạng HTTP xml hoặc json đơn giản. – portoalet

9

Có, Hessian 2.0 là ứng dụng được sử dụng. Giao thức chỉ định cách cấu trúc dữ liệu được biểu diễn nhị phân, thông số kỹ thuật rất đơn giản.

Dịch vụ web Hessian được xây dựng trên giao thức Hessian, nó chỉ định một số tiêu đề theo định dạng Hessian để mô tả ví dụ: định dạng yêu cầu/đáp ứng trong giao thức Hessian. Nó định nghĩa nội dung của yêu cầu, phương thức cần được gọi và vân vân. Nó không hoàn toàn cần thiết bởi vì không ai sử dụng nó. Bạn có thể tự xác định điều này bằng cách tạo lớp "Yêu cầu" và lớp "Phản hồi" phù hợp nhất với bạn và tuần tự hóa bằng giao thức Hessian.

Hessian là một thay thế cho tuần tự hóa Java, nó chậm hơn vì không được hỗ trợ trực tiếp bởi máy ảo Java, nhưng nhanh hơn nhiều so với phân tích cú pháp XML. Nó có thể được sử dụng theo cách nền tảng chéo, mặc dù bạn sẽ phải tinh chỉnh việc triển khai hiện tại để làm cho chúng hoạt động cùng nhau, thông số đã thay đổi ở đây và ở đó (ví dụ: thông số độ dài) để triển khai có xu hướng khác nhau. Mặt trái là nó không phải là con người có thể đọc được, bạn luôn cần một công cụ để chuyển đổi Hessian thành văn bản.

Tôi đã sử dụng Hessian trong một ứng dụng công ty lớn, nơi một khách hàng giàu Java giao tiếp với đầu cuối để làm cho phiên bản JVM của máy khách độc lập với phiên bản JVM của máy chủ. Và nó hoạt động như một sự quyến rũ.

Hãy xem triển khai Hessian4J. Nó là nguồn mở để bạn có thể hoàn toàn kiểm soát nó.

+0

Trang web bị hỏng, liên kết SourceForge: https://sourceforge.net/projects/hessian4j.berlios/ – Wolf

+0

* bạn có thể hoàn toàn kiểm soát nó * - trong LGPLv2 – Wolf