留一只眼睛看Continuation
2008-04-12 14:24
162 查看
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
首先考虑一个应用场景:CSDN正在进行的“中国开发者2005大调查”(有奖品拿的,欢迎参加)。这个调查总共要填大概是8张表单,填写的过程中间还有一定的逻辑判断(例如:可能因为表单1中的某个选项而导致表单4不必填写)。这个流程实现的难度,以及实现完成之后业务逻辑的散乱程度,不难想象。我并不打算说我已经找到了解决这一问题的办法,只是把最近一周以来看到、想到的一些东西列在这里,作为一个参考的入口。
考虑另一种编写web应用的思路:一个用例被描述为一个自包含的程序模块,该模块的返回值是用例的最终结果页面。在生成此返回值的时候,需要使用来自用户的输入,此时便生成一个接受输入的表单页面,并将流程挂起等待。等用户输入完成之后,继续往下生成结果页面。如果需要多表单输入,以此类推。这样的一个程序,参见Servlet with Scheme: One Input Form。
(之所以想到这个,是因为前一阵一直在看SICP,捎带手试用了一下DrScheme提供的web server。)
这种方式被称为Continuation。ajoo同志有一篇文章介绍它:从Continuation概念说到它在开发中的应用。在Ruby参考手册中也有一章专门介绍它。同样,Python社群也有介绍它的文章。Sam Ruby有一篇题为“Continuations for curmudgeons”的blog,私以为是讲说得比较清楚的,并且用的基本都是熟悉的语言。但这个标题和第一段有点令人伤心:莫非连我都得被纳入“老家伙”一类了么?
不过,我仍然希望把学院派的概念与实际应用结合起来。IBM developerWorks有一篇题为“用Continuation开发复杂的Web应用程序”的文章,恰好是讲这个问题的。不过,这篇文章用的例子是Cocoon,而Cocoon实现Continuation的方式是JavaScript。另一份文档Scheme in The Real World: A Case Study则更合我的口味。这篇文档介绍了一个在J2EE环境下的、基于Scheme的web框架SISCWeb,这是我打算切入进去的一个项目。另一个基于Continuation的web框架是Seaside,一个Smalltalk作品,我不打算为了它再去学一门新的语言。基于Java的另一个实现是RIFE。
(值得留意的是RIFE的作者Geert Bevin在Sam Ruby那个blog下面的留言:“There are a number of situations where continuations make your life easier, however there are even more situations where they don’t feel natural in a web application. The solution continuations solve best is one where you have a multi-step ‘island of functionality’ that does one particular thing on its own and that shouldn’t be committed to the backend before the final step is finished. These are typically a wizard, a game, a multi-page admin intervention, a survey, ...”)
最后,介绍另一个关于此主题的精彩入口:Continuation-based web programming。而且,我还很乐意借用这篇blog的开篇词来作为本文的结尾:
People reading this blog might be forgiven for thinking that I don't do software development for a living, so here's some technical stuff to even up the balance.
相关文章推荐
- 留一只眼睛看Continuation
- 留一只眼睛看Continuation
- PhotoShop鼠绘出一只写实风格的眼睛教程
- 印度一妇女病房内遭蚂蚁袭击 被啃掉一只眼睛
- 一只眼睛的鹿
- opencv 仿射变换 根据眼睛坐标进行人脸对齐 计算变换后对应坐标
- Android TextInputEditText设置 android:inputType="textPassword"去掉眼睛
- 一只鸟如何打乱一个人一天的节奏
- java实现一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- 如何识别一只猫 和 一只兔子?
- 辣眼睛!晒晒职业生涯中见过的奇葩辞职理由
- 隔云端|72|眼睛里,生出美丽
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 3: invalid continuation byte
- [置顶] 几行代码实现ofo首页小黄人眼睛加速感应转动
- 基于HTML5陀螺仪实现ofo首页眼睛移动效果
- 一只萌新的linux体验4
- 头脑风暴:一只小兔子有100根胡萝卜,它要走50米才能回家
- 前阿里高管“下海”创业,做了一只全球卖断货的“水杯”
- 邂逅一只不拴链子的哈士奇