Web框架API

3

我不是网页开发者,对于现有的Web应用程序框架并不了解。

然而,最近我开始接触Wt。这是一个用C++编写的Web框架(这也是我开始接触它的原因),但最让我印象深刻的是它所基于的思想。

与我听说过的任何Web框架(如CppCMS、Yii、Django、Pylons、Zope、Drupals、Java Servlets、Struts等)的API都不同:新的Application对象会为每个用户会话创建,并保持活动状态直到会话过期(只有在此时Application对象才会被销毁)。这个Application对象就像一个桌面窗口:您可以在其中放置Widget(例如表单、链接、标签等);当用户单击链接时(当HTTP服务器收到新的GET/POST请求时),将调用与用户会话紧密绑定的对象上的函数(以一种良好的Signal/Slot方式),该函数可以删除/添加/更改Widget,从而更改用户将看到的页面。

正如我所说,我对Web框架并不十分熟练,我几乎只开发桌面应用程序;也许出于这个原因,我认为Wt背后的这种“范式”很棒。

我想知道这个框架API相对于其他框架的优缺点,以及是否有其他基于相同概念的框架(也可以是其他语言)。

3个回答

3
Wt是一个非常适合其所面向的应用范围的强大框架。Wt非常适合以下情况:
- 网络应用密切耦合到会话中,即 - 仅允许已登录用户(除着陆页面外)访问 - 显示大量依赖于用户的内容(因此不适用于维基) - 大量依赖于状态 - 需要具有许多控件/按钮和用户输入的网络应用程序。
例如,我计划编写一个浏览器MMORPG游戏。页面都将与用户相关联,并且将有许多按钮。 Wt非常适合这种情况。我过去是Ruby on Rails开发人员,在这种应用程序中切换到Wt是一个伟大的时刻。使用传统框架设计表单非常麻烦,因为它们试图强制实施纯REST。
Wt还非常适合处理某些进程的控制界面。例如,允许您的客户配置他们的广告系列的界面,等等。
当然,使用Wt并不完美,关于控制和分离方面还有一定问题,但在您只需要“经典”功能(按钮、编辑器等)时,它允许 极快速的开发。
因此,如果您想将桌面应用程序放在Web上(这是一个很好的想法,消除了在客户机上部署和更新的需要),则Wt是一个很好的选择。
此外,如果您要与现有的C++代码库进行交互,那么Wt有一个优势。

0

我认为这通常是个坏主意。

Web应用程序与GUI应用程序非常不同,有很多原因:

99%的Web内容都是关于内容而不是迭代的。

你上网是为了获取或分享内容,而不是进行实时交互,比如绘制图片、使用电子表格或其他任何事情。Web是内容驱动的,而不是“事件驱动”的交互式应用程序。

这对于如何创建大部分Web应用程序有很大影响-你将信息带给用户,而不是与他互动。

服务器和客户端编程非常不同

有一些Web GUI应用程序,如电子邮件、聊天客户端,但要表现良好,它们需要在高质量的JavaScript中编写客户端,并且使用用于内容检索的高质量服务器端后端AJAX。

像Wt这样隐藏这种分离或(其他已知框架)会导致糟糕的软件,并且通常会在长期内带来更多问题而不是解决方案。

因为应该非常清楚地区分服务器端和客户端工作,因为有些需要实时响应,而有些则不需要。

当你试图在一个等待中解决所有这些问题时,请注意,有客户端-服务器解决方案用于GUI(例如X-Server),但与Web不同,它们是为此而设计的,更像IPC而不是客户端-服务器解决方案。

大多数情况下,Web是无状态的。

或者更正确地说,状态通常保留了相当少量的数据。

创建即时会话对象是个好主意,直到你需要...长期保存状态扩展,那么这种模型就变得不那么好了,当然这不是Wt强制的模型,但它是适合某些概念的一般概念,而其他一些则不适合。

底线

如果你想设计像Web应用程序一样好的GUI,请开始学习JavaScript,并使用适合GUI事件驱动设计的良好GUI JavaScript框架。然后将它们与一些交互式RPC模型(如Json-RPC、XML-RPC和其他AJAX工具)结合使用一些服务器端API。

这是为高度交互式应用程序正确处理事情的方式。

如果您的应用程序更注重内容,则大多数服务器端Web框架都可以很好地完成工作-集中于服务器端及其适合该工作的出色工具。

一站式解决方案?它只是不起作用...

声明:我是CppCMS的开发者,我认为Wt走了错误的道路。


1
虽然你的一些观点是正确的,但你缺乏对不同类型应用的全面看法。请看我的回答。 - Offirmo
我认为你对Wt的评价“通常是一个坏主意”是不公平的。它非常适合某些类型的Web应用程序。 - HighCommander4

-1

ASP.NET类似,其目标是使Web开发看起来像桌面应用程序开发。


2
我不是那个点踩者,但Asp.Net的方法与Wt的方法非常不同,而且当它被直接采用时往往表现不佳。这并不是Asp.Net的强项 :-) - Artyom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接