Ma Kai 在 Websh与Apache 一文中留言提问:“Websh 和 Rivet 有什么区别?”
我自己的理解是:
-
两者都可以认为是提供了一个基于Tcl的Web应用程序框架
-
两者都可以用于Apache服务器
-
两者都提供了一些为Web程序服务的组件(API):参数传递,会话管理等
但是:
-
Rivet的定位就是一个apache服务器的模块。根据其文档,似乎不能独立于apache使用。
-
Websh则除了配合apache使用,也可以单独作为Tcl的一个模块使用。
-
Websh因此可以用来编写非Web程序。其跟HTTP这个层面的解耦更多。
然而:
-
Websh似乎早已停止开发。其提供的Web开发相关的组件比较基本。
-
Rivet则相对仍然活跃,其提供的Web开发相关的组件相对更完善一些。
个人喜欢Websh多一些,是觉得它虽然是多年以前的东西,但其设计思想其实挺好的。其中不少思想不仅不过时,甚至在今天开来都还有颇多借鉴之处。
其中一个关键思想是:Web即程序,两无分别。这是我个人总结的。这点,Websh基本做到了。
另一个我喜欢的部分是:路由分发。这在今天的Web开发中是常见的概念,但在普通的程序开发中却不经常提到。但鉴于程序的逻辑往往是复杂的,根据输入参数的不同而行为不同。而Websh的`web::command`命令恰恰符合这一思想。
先随便写写,回头再根据需要来修正。