`
geniusleft
  • 浏览: 62284 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Thinking Loud! - 发布一个基于 FX 3.5 的社区系统原型

阅读更多

这些天赋闲在家,从周一到现在,花了三天时间,实现了一个社区系统原型,我把它叫做“Thinking Loud!”,放到了 codeplex 上,这也算是完成了一个承诺。jjx,你看我并没有骗你吧 :)

tl2

(首页截图1)

tl3

(首页截图2)

tl4

(讨论组截图)

tl5

(话题讨论截图)

整理一些要说的话,自问自答。

1. 开发代号为什么要叫“Thinking Loud!”

想到就说喽,因为“LoudThinking”这个名头已经被David Heinemeier Hansson这家伙占有了,唉。另外,您不觉得“Thinking Loud!”的含义很酷吗?

2. “Thinking Loud!”都用到了哪些技术?

“Thinking Loud!”是基于开发代号为“Orcas”的Visual Studio 9.0 beta 1开发的:

  • 使用SQLServer 2005 Express 作为数据存储后端。
  • 使用DLINQ作为数据存取层。
  • 使用ASP.NET AJAX + Windows Communication Foundation进行B/S数据通讯。
  • 尽可能地使用ASP.NET 2.0系统模型以及C# 3.0的新特性。

3. “Thinking Loud!”会有哪些功能?

“Thinking Loud!”是作为一个社区系统而不是论坛程序来设计的,虽然大部分功能其实和论坛差不多,但也有些微新的设想,大体上讲:

  • 用讨论组(group)代替版块(forum),谁都可以创建讨论组,讨论组有生命周期,但显然不是谁都可以创建版块,版块的概念偏重了。
  • 用联系人(contact)和书签(bookmark)代替收藏夹(favorite),这看起来更web 2.0更动态一些,重要的是定位更纯粹更有利于扩展应用。
  • 不再使用分页(paging),想想google reader是怎么做的吧。
  • 细化到话题(Topic)一级的rss订阅。
  • 支持影音功能。
  • Mashup,REST这么时髦的概念也不能少。

总的设计思路是,需要的功能可以有,但一定要简单,细节一定要到位,要高度易于扩展以满足有额外需求的用户。

4. “Thinking Loud!”的设计从哪些站点得到了启发?

我想我从互联网上汲取了很多创意,但就“Thinking Loud!”来讲,主要的设计目标是往以下站点拥有的某些或全部功能靠拢:

5. “Thinking Loud!”有没有提供对silverlight的支持?

坦率的说,对silverlight的支持是我最上心的,也包括对Mobile的支持。我最初的想法是实现4套功能相同的页面,就像页面主题(theme)一样,desktop_basic, desktop_silverlight, mobile_basic, mobile_silverlight,利用UrlRewriting机制和浏览器的UserAgent判断用户端浏览器是否支持silverlight以重写页面到被支持的最佳版本,但时间有限,我最迟能开发到这周末,下周开始就不沾电脑了,于是这个构想就放弃了。

6. 说说这几天的开发进度情况吧。

开始就讲了,我写这个原型花了3天时间:

  • 周一主要是熟悉上手这些新产品新技术,Visual Studio 9.0 beta 1我是刚开始用不久,顺便地也酝酿沉淀原型设计的思路。
  • 周二把程序框架写了出来,大致确定怎么去实现一个功能了,是feature-driven的,而不是test-driven。
  • 周三基本上能用了,注册用户,登录,创建讨论组,创建话题,回复话题。

很抱歉我没有提供什么单元测试之类的相关资源,时间太紧,不得从容,就只好quick and dirty了 :(

7. 最后展望一下“Thinking Loud!”的未来吧。

“Thinking Loud!”的代码是开源的,我把它放到codeplex上,但已无力维护。按我的设想,目前的ajax实现仅仅是过渡,因为ajax的性能很糟,维护成本又很高,如果得闲,一定要以silverlight + IronPython/IronRuby实现为主的。

“Thinking Loud!”的将来是什么样子其实我也很想知道,我想它会始终朝着成为一个功能最纯粹,技术最炫,理念最先进的社区系统这个目标前进吧,欢迎感兴趣的朋友贡献自己的力量,请一定要告知我。

相关资源:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics