天天看点

一个基于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的代码 暂时还没有添加进来。