大批量的數據對象的網絡問題:URL file or 使用RMI傳遞序列化好的對象Byte流 ??


現在,Server上有一些文件中存放了大量的數據,先不管存不存放到數據庫中,目的就是要是用戶頁面上的applet能下載到並生成一些對象,顯示並和終端用戶交。

問題是,如題,是使用 Java 里面那個完美的 URL 類從 server 上把文件讀到本機呢?還是先在 server 上運行一個遠程對象,把這些文件讀入並生成相關對象,然后一旦有客戶請求下載,就從線程池中運行一個線程把這些對象序列化成byte流,傳過去。這樣,客戶端applet就可以直接根據這些byte流回復成對象了。

第二種方案肯定比較 flexible,因為他給了服務器更多的控制權,還可以控制客戶的下載。各位覺得那一種比較好,URL讀文件方式是不是比較快一點?RMI的話,是不是比較難以發布一些?或者大蝦們還有什么其他更好的方案?
小弟洗耳恭聽,多謝先!

6 个解决方案

#1


匆忙之中,卻把主題寫漏了兩個字。特此更正:

大批量的數據對象的網絡傳輸問題:URL file or 使用RMI傳遞序列化好的對象Byte流 ??

#2


大蝦隨便給點意見撒,多謝!

#3


別的我不知道 
但是我要說 
用rmi的話,不用你做序列化的工作。

#4


嗯,多謝!
樓上的意思我了解,通過Java RMI方法,使用遠程對象就象使用本地對象一樣方便,正如你所說的,對該對象來說,是不需要自己去管他的序列化的工作。

但是,我上面要求的實現是說:使用一個遠程對象A把服務器上其他類型的大批量對象實例傳給客戶端,這個遠程對象A好像是一個數據代理一樣。

#5


如果我是你 我會考慮用socket把數據發給客戶端,讓客戶根據數據來生成新的對象。

#6


樓上說的也有道理,我一開始也是這樣想的(只不過不是用socket,而是用URL類,socket是不是很通用呢?),但是這樣會降低applet初始化的速度。事實上我已經這樣做了,無奈,沒人幫忙呀,只好用 URL + 多線程下載, 自己按照最簡單的方法實現了。

說到這里,我也想弄明白 URL 和Socket 兩大類使用起來究竟有什么分別?URL的底層是用Socket實現的,使用起來的確很方便,尤其是用來下載server上的文件,而且使用HTTP協議,能穿透防火牆,客戶不受限制。
Socket 編程我只在Windows下用C++試過,Java沒用過,我想它的第一個問題就是如何分配端口給你的server端?80嗎?這樣是不是合適?

大蝦給點意見。謝謝先!:)

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com