11

在我尝试过的每个 MVC 框架(Rails、Merb、Waves、Spring 和 Struts)中,请求(和响应)的概念都与请求的 HTTP 概念相关联。也就是说,即使有一个作为 Request 超类的 AbstractRequest,AbstractRequest 也有诸如标头、请求方法(GET、POST 等)以及与 HTTP 相关的所有其他内容。

我想通过 SMS、Twitter、电子邮件或我可以为其制作适配器的任何其他媒体来支持请求-响应循环。有没有特别好的框架?

例如,我想到的唯一其他选择是创建一个 Twitter 轮询器,该轮询器在单独的线程中运行并将消息转换为本地 HTTP 请求,然后将响应发送回。

如果有一个很好的多请求媒体框架,路由会是什么样子?在 Rails 中,HTTP 路由看起来像这样:

map.connect 'some/path/with/:parameter_1/:paramter_2', :controller => 'foo', :action => 'bar'

Twitter 或 SMS 路由看起来如何?正则表达式匹配关键字和参数?

4

4 回答 4

1

我一个都没见过。问题是请求也与主机相关联,响应与请求相关联。

因此,如果您通过电子邮件收到请求,并且控制器说要渲染视图“aboutus”,则您需要 MVC 框架知道如何:

  • 首先获取请求 - MVC 框架几乎需要成为主机(IIS 不会收到有关新电子邮件的通知,那么您的电子邮件轮询代码是如何被触发的?)
  • 允许灵活的路由匹配 - 通过路径/url 匹配并不适用于所有人,因此需要特定于请求的控制器路由
  • 使用 aboutus电子邮件视图而不是名为“aboutus”的 SMS 或 HTTP 视图
  • 通过电子邮件将回复发送给正确的收件人

Web MVC 框架不会削减它 - 你需要一个 MVC“主机”,它可以通过 Web、短信、电子邮件等处理激活。

于 2008-09-22T16:15:41.270 回答
1

Java Servlet 规范旨在使 Servlet 保持协议中立,并以特定协议的方式进行扩展 - HttpServlet 是特定于协议的 Servlet 扩展。我一直认为 Sun 或其他第三方框架提供商会提出其他特定于协议的扩展,例如 FtpServlet 或 MailServlet,或者在本例中为 SmsServlet 和 TwitterServlet。

相反,人们要么完全绕过了 Servlet 框架,要么在 HTTP 之上构建了他们的协议。

Of course, if you want to implement a protocol-specific extension for your required protocols, you would have to develop the whole stack - request object, response object, a mechanism of identifying sessions (for example using the MSISDN in an SMS instead of cookies), a templating and rendering framework (equivalent of JSP) - and then build an MVC framework on top of it.

于 2008-10-10T15:54:57.447 回答
0

您似乎主要使用 Java 和/或 Ruby,所以请原谅我这个答案基于 Perl :-)。

我非常喜欢 Catalyst MVC 框架 ( http://www.catalystframework.org/ )。它通过引擎将请求的实际映射(一般意义上的)委托给代码。诚然,目前所有的引擎类都是基于 HTTP 的,但我一直在尝试编写一个不基于 HTTP 的引擎类(或者可能与 Twitter 之类的东西相关联,但与 HTTP 交互分离) Twitter 使用)。至少,我相信这是可以做到的,即使我还没有开始尝试。

于 2008-09-22T23:21:02.043 回答
0

您可以在您的网站上实现一个基于 REST 的适配器,它会根据输入参数替换模板并重定向。

来自api .yourhost.com的所有请求都将由基于 REST 的适配器处理。

该适配器将允许以编程方式调用您的网站,并以可解析的格式获得结果。

实际上这意味着:它用一个自己的模板引擎替换模板,在这个引擎上发生了这样的事情:

  • 而不是分配的模板,而是调用通用 xml/json 模板,它只输出一个包含所有模板变量的 xml

然后你可以制作你的 Twitter Poller、SMS Gateway 甚至从 Javascript 调用它。

于 2008-09-30T11:31:49.940 回答