这些天赋闲在家,从周一到现在,花了三天时间,实现了一个社区系统原型,我把它叫做“Thinking Loud!”,放到了 codeplex 上,这也算是完成了一个承诺。jjx,你看我并没有骗你吧 :)
(首页截图1)
(首页截图2)
(讨论组截图)
(话题讨论截图)
整理一些要说的话,自问自答。
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!”来讲,主要的设计目标是往以下站点拥有的某些或全部功能靠拢:
- Facebook,它转型致力于成为应用平台的野心是我很佩服的。
- google reader,它的AJAX应用非常的...顺手贴心。
- v2ex,livid对这个站点的细节设计非常用心。
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!”的将来是什么样子其实我也很想知道,我想它会始终朝着成为一个功能最纯粹,技术最炫,理念最先进的社区系统这个目标前进吧,欢迎感兴趣的朋友贡献自己的力量,请一定要告知我。
相关资源:
- Thinking Loud! 20070606_drop 源码下载