在我尝试过的每个MVC框架中(Rails,Merb,Waves,Spring和Struts),请求(和响应)的概念与请求的HTTP概念相关联。也就是说,即使有一个AbstractRequest是Request的超类,AbstractRequest也有标题,请求方法(GET,POST等)以及与HTTP相关的所有其他内容。
我想支持SMS,Twitter,电子邮件或任何其他媒体的请求 - 响应周期,我可以为其制作适配器。是否有一个特别好的框架?
我想到的唯一另一个选择是创建一个Twitter轮询器,它在一个单独的线程中运行并将消息转换为本地HTTP请求,然后将响应发送回来。
如果是多个请求媒体的良好框架,那么路由会是什么样的?在Rails中,HTTP路由看起来像:
map.connect 'some/path/with/:parameter_1/:paramter_2', :controller => 'foo', :action => 'bar'
Twitter或短信路线怎么样?用于匹配关键字和参数的正则表达式?
答案 0 :(得分:1)
我还没见过一个。问题是请求也与主机绑定,响应与请求相关联。
因此,如果您通过电子邮件收到请求,并且控制器说要呈现“aboutus”视图,那么您需要MVC框架知道如何:
Web MVC框架不会削减它 - 你需要一个可以通过网络,短信,电子邮件等处理激活的MVC“主机”。
答案 1 :(得分:1)
Java Servlet规范是为Servlet设计的协议中立,并以协议特定的方式扩展 - HttpServlet是特定于协议的Servlet扩展。我一直想象Sun或其他第三方框架提供商会提出其他特定于协议的扩展,如FtpServlet或MailServlet,或者在本例中为SmsServlet和TwitterServlet。
相反,人们要么完全绕过Servlet框架,要么在HTTP之上构建协议。
当然,如果要为所需协议实现特定于协议的扩展,则必须开发整个堆栈 - 请求对象,响应对象,识别会话的机制(例如,使用SMS中的MSISDN)而不是cookie),一个模板和渲染框架(相当于JSP) - 然后在它上面构建一个MVC框架。
答案 2 :(得分:0)
你似乎主要使用Java和/或Ruby,所以请原谅我这个答案是基于Perl的: - )。
我非常喜欢Catalyst MVC框架(http://www.catalystframework.org/)。它通过引擎将请求(通常,一般意义上)的实际映射委托给代码。当然,所有引擎类目前都基于HTTP,但我已经玩弄了尝试编写不基于HTTP的引擎类(或者可能与Twitter类似,但与HTTP交互分离)的想法。 Twitter使用)。至少,即使我还没有尝试过,我也相信它可以做到。
答案 3 :(得分:0)
您可以在您的网站上实施REST-based适配器,它会根据输入参数替换模板和重定向。
所有进入 api .yourhost.com的请求都将由基于REST的适配器处理。
此适配器允许以编程方式调用您的网站,并以可解析的格式显示结果。
实际上这意味着:它用自己的模板引擎替换模板,在这种情况下会发生这种情况:
然后你可以制作你的Twitter Poller,短信网关,甚至可以通过Javascript调用它。