天天看點

一個基于Wave GWT Guice 的Sns 設想一個基于Wave GWT Guice 的Sns 設想

created monday 11 april 2011

現在的sns 都還是重新整理 頁面。一個一個 的頁面重新整理。跳轉到不同用的頁面。這樣對于程式設計是很友善維護成本也很低。

但是,考慮的技術是不斷的更新的。用現在的技術已經可以構造一個web2.0 的sns了。

wave 現在已經開源了。代碼裡面有很漂亮的ui界面。可以用這個做為一個sns的皮膚。

wave的設計還是有點像一個 郵件系統。有些東西不琢磨就不知道怎麼用。

但是漂亮無疑是很重要的。有了gwt一個 富用戶端的程式建構就可以很複雜了。

而且速度會很快。雖然現在的網絡是越來越快。但誰不希望再快點呢。

如果 把現在的 sns 再 套上一個 wave的皮膚。用gwt 完全實作 一個 全站的 ajax 應用。

應該會吸引更多人的使用。也比原先的 sns 設計使用上 友善很多。還可以做的更複雜。

1),日志,新聞,讨論等資訊可以直接在目前頁面彈出div 彈出視窗顯示。

2)圖檔照片的預覽 可以使用 幻燈效果。

3)可以無縫的 和 google的 map 搜尋結合。(有google map 的gwt lib)

4) 在一個 頁面可以做跟多的事情。就像是 3d 一樣。頁面有層次感。

檢視了下 wave 的代碼。還是非常的複雜的。而且下載下傳了并不能一次編譯通過。還有jar包的問題。

在包 org/waveprotocol/wave/client/widget 下是一些基本的元件

org.waveprotocol.wave.client.widget.button

org.waveprotocol.wave.client.widget.common

org.waveprotocol.wave.client.widget.generic

org.waveprotocol.wave.client.widget.menu

org.waveprotocol.wave.client.widget.popup

org.waveprotocol.wave.client.widget.progress

org.waveprotocol.wave.client.widget.toolbar

剛開始看popup 視窗。

// 桌面視窗

        desktoppopupchrome desktoppopupchrome = new desktoppopupchrome();

        // 顯示标題欄

        desktoppopupchrome.enabletitlebar();

        dropdownpopuppositioner dropdownpopuppositioner = new dropdownpopuppositioner();

        centerpopuppositioner centerpopuppositioner = new centerpopuppositioner();

        desktopuniversalpopup desktopuniversalpopup = new desktopuniversalpopup(

                rootpanel.get().getelement(), centerpopuppositioner,

                desktoppopupchrome, false);

        // 顯示

        desktopuniversalpopup.show();

        // 設定标題

        desktopuniversalpopup.gettitlebar().settitletext("1234");

        // 添加彈出視窗内容

        desktopuniversalpopup.add(new html("普通html元件"));

        // 設定大小

        desktopuniversalpopup.setpixelsize(200, 200);

如果繼續下去應該可以将這些元件都研究透徹。

2,如果用gwt 了在用spring hibernate 就顯得有些複雜了。

其實可以用簡單的架構 guice3 其中 guice3 還對 jpa 進行了事物的封裝。

持久層 更簡單速度快。

public class guicelistener extends guiceservletcontextlistener {

public injector getinjector() {

return guice.createinjector(

        new jpapersistmodule("jpa_unit"), new servletmodule() {

            protected void configureservlets() {

bind(basedao.class).to(jpabasedao.class).in(

        singleton.class);

bind(userinfoservice.class)

        .to(userinfoserviceimp.class).in(

                singleton.class);

                }

            });

}

@transactional 标記下就可以實作事物,也不用考慮開關閉 連接配接的問題了。

guice 比起 spring 更加的輕量速度 也快點。記憶體也要節省。

3,作web的 sns 不比做 管理系統 ,做應用。隻要實作業務邏輯就行了。ssh 做項目 ,做管理系統

實踐證明是非常的不錯的。 至于做 sns 沒有說不行。隻是想 提出一個不同的設想。

一個不同的解決方案。

當然這個隻是一個初級的設想離整個 sns的完成還差很遠呢。。

如果有興趣的可以繼續關注。

最後提供 剛研究的 wave 的代碼(不是wave的全部,隻是挑揀出可以運作的部分,可以到waveprotocol項目去下載下傳全部代碼)。

guice的代碼 暫時還沒有添加進來。