盡力2~3周發布一個版本,我這次也沒有失言。這段時間內,我仿照QQ的微雲功能,在GG中增加了網盤的功能,而且,我還自創了一個QQ沒有的新的功能:遠程磁盤。正如遠程桌面一樣,遠程磁盤允許我們像訪問本地磁盤一樣來訪問在線的其它用戶的磁盤。
一.GG V2.0 新增功能展現
(1)網盤:在服務端為每個用戶分配一個網盤,用戶通過客戶端可以訪問自己的網盤。就像QQ的微雲一樣。
(2)遠程磁盤:任何一個在線用戶,都可以訪問其它在線用戶的磁盤(先要經過對方的同意)。
(3)無論是網盤、還是遠程磁盤,都支持:上傳/下載/刪除/復制/剪切/粘貼 文件、新建文件夾、重命名。
(4)在GG的實現中,網盤和遠程磁盤公用的是同一個組件NDiskBrowser。
廢話不多說,還是先上圖。新功能入口按鈕:
上圖中有三處標記:1.按鈕可進入 我的網盤;2.按鈕可進入 好友的遠程磁盤;3.顯示和好友之間的P2P通道的狀態
下圖是網盤截圖:
磁盤訪問請求截圖:
進入遠程磁盤(就像打開自己本地硬盤一樣):
遠程磁盤操作:
二.實現思路
雖然提供了源代碼,但是,我還是想將主要的思路列一下,這樣,大家理解起源碼來,會節省更多的時間。
1. 該版本增加了一個新的項目GGLib。
我打算將GGLib作為一個可復用的類庫,這樣它就可以在GG以外其它的項目中使用。目前,GGLib已經包含了修改后的文件傳輸顯示控件FileTransferingViewer以及網盤組件。
2. 網盤組件:位於GGLib項目的NDisk文件夾下,雖然網盤組件的底層仍然基於ESFramework提供的文件傳輸功能,但是,其實現還是比較復雜的。
(1)通過網盤組件,既可以訪問網盤,也可以訪問另一個在線用戶的磁盤。
(2)目前版本的GG服務端提供的是一個簡單的網盤功能,其在運行目錄下的NetworkDisk文件夾下,為需要的用戶新建一個文件夾(以UserID命名)作為用戶的網盤。
(3)如果需要,我們可以重新實現GGLib.NDisk.Server.INDiskPathManager接口,比如,我們可以使用分布式文件系統,作為網盤的后端存儲。
(4)普通文件傳送和網盤文件傳送,都使用了ESFramework的文件傳送功能,在程序中,我是通過TransferingProject的Comment屬性來區分二者的(普通文件的Comment為null,網盤則不為null)。
(5)普通文件和網盤文件,也都使用了FileTransferingViewer來顯示文件傳送進度,我改寫了原始的FileTransferingViewer,為其Initialize增加了一個filter參數,使其可以過濾掉無關的文件傳送事件。
(6)進入遠程磁盤時,默認進入的是“我的電腦”的內容 -- 列出所有分區、包括光盤、U盤等,我們可以通過修改程序來改變這一行為,比如,磁盤的主人可以控制自己只允許來訪者訪問哪一個分區或目錄。
(7)基於(6),換個方向,我們就可以實現磁盤共享或目錄共享的功能。
3. 數據庫:有很多朋友問數據庫怎么弄,實際上GG的目前版本還沒有用到數據庫(后續高級版本會增加),所有的信息都只是在內存中,所以,目前版本的GG做了一些假設:
(1)用戶登錄帳號隨意,但必須為數字組;密碼可隨意輸入。
(2)所有的在線用戶都是好友。
4. 語音視頻:也有很多朋友問語音視頻設備的工作怎么不正常,這個可以直接參考OMCS官方文檔:攝像頭、麥克風、揚聲器、設備測試。
5. GG使用了最新版本的SkinForm,如果有關於SkinForm的問題,可以直接聯系我的好友 威廉喬克斯_汀。
三.新的想法
有了遠程磁盤點子之后,我又產生了一個新的點子,這個新點子的孕育過程是這樣的:
我經常晚上在家加班,所以,下班的時候,我就用U盤把項目文檔拷回去,在家里的電腦上工作,完畢后,再把更新的文檔拷回U盤,第二天再帶到公司覆蓋公司電腦上舊的文檔。相信有些朋友也有類似的經歷,用U盤拷來拷去很麻煩。當然,如果不是保密性的要求,我們也可以使用網盤。無論是U盤還是網盤,都需要經過“中間站”轉一道,不夠直接。
如果下面的情形能夠實現該多好:下班的時候,我在公司的電腦上能夠直接訪問家里電腦的磁盤,把需要的文檔傳送到指定的目錄,晚上回去就可以繼續工作,完畢后,在家里的電腦上又可以直接訪問公司電腦的磁盤,把更新后的文檔再傳送回去。這樣就夠直接了,也不需要U盤了。
我想在GG中增加這樣的功能,那么,該如何實現了?我的初步方案如下:增加一個新的項目叫GG受控端,受控端不需要主界面,只要一個托盤,表示其在運行。在家里的電腦上,我用帳號514330登錄GG受控端,到公司后,用514330正常登錄GG,在GG的主界面上,就可以列出所有在線的受控端,點擊其中一個,就可以訪問其磁盤,這就是已有的GG的遠程磁盤的功能了。當前,前提是受控端電腦必需是開啟的並且是聯網的。
關於這個功能,大家有什么好的想法,可以留言告訴我。
四.源碼下載
下載最新版本,請轉到這里。
注意:如果要將GG部署到廣域網,則可以在服務端的配置文件中設置監聽的端口;而在客戶端的配置文件中,則可以指定服務器的IP和Port。
特別說明:為了減少壓縮包的大小(博客園最大上傳文件只能為10M,這個限制有點過了),我把debug目錄清空了,大家重新編譯生產后,請將Dlls文件夾下的三個dll(VideoEngine.dll,VideoEngineCore.dll,AudioEngineCore.dll)拷貝到運行那個目錄下,才可正常啟動程序的。
GG最新進展總覽鏈接:可在廣域網部署運行的QQ高仿版 -- GG2013總覽
我會繼續努力爭取2~3個星期發布一個新版本,使GG慢慢成熟起來。
大家有什么問題和建議,可以留言,也可以發送email到我郵箱:ggim2013@163.com。
如果你覺得還不錯,請粉我,順便再頂一下啊,呵呵