随着可用的 Web 开发框架的种类繁多,似乎总是有“尝试新事物”的永恒动力。因此,我们中的一些人发现自己正在用一种框架交换另一种框架,但对最终结果永远不会完全满意。当然,总会有一些特定的 Web 框架能够完美地发挥作用。但是,有许多人决定使用 C++、Java 或 C# 来构建桌面应用程序等。对于 Web 开发应用程序而言,情况并非如此。 Joel Spolsky 在 link text 中谈到了这一点。 .
假设我要构建这样一个框架:功能需求是什么?这里的目标是列出具体功能期望(当然是为了 stackoverflow 发布而简洁定义的)。将根据得票数选出最佳答案。
为了让大家开始,以下是部分要求列表。请注意,这些项目故意保留得有些抽象,目的是让人们可以从中得出更具体的项目:
OOP 一致性:服务器端和客户端模块之间的无缝数据交换和 native 对象表示:也就是说,给定客户端的函数:
clientFoo( )
和服务器端的一个函数:serverFoo()
应该能够传递任何类型T
的对象obj
> 无需任何编码:define clientFoo() { T obj = createObject() serverFoo(obj) } OR define serverFoo() { T obj = createObject() clientFoo(obj) }
这增加了原生对象表示在客户端和服务器端必须相同的要求,包括所有组合、类间耦合和封装语义。基本上,给定的类或给定的实例是否驻留在客户端或服务器端应该完全无关。
功能一致性:无缝功能和线程执行:人们应该能够在客户端/服务器端创建一个函数并将其传递到边界执行。这包括对多线程的统一支持(应该在客户端和服务器端一致地工作)。
多应用程序 session 互操作性:这里的一个完美示例是应用程序间“剪切和粘贴”(如上面指出的文章中所述)。我并不是在谈论将浏览器中的文本简单地复制到另一个浏览器实例(或选项卡)。如果想将 MySocialApp 中的联系人对象粘贴到 YetAnotherSocialApp 该怎么办?这种应用程序间的数据交换很重要。
一致的跨浏览器兼容 UI:创建 AJAX“对话框”、进度指示器、选项卡等都应该可以使用与框架其余部分无缝连接的 API 来实现正如上面讨论的客户端/服务器集成。哦,是的,它必须在所有浏览器上都以相同的方式工作(开发人员完全看不到浏览器的区别)。
最佳答案
就我个人而言,我认为下一个伟大的 Web 开发框架本质上将是“函数式”的,即它将使用函数式语言,并且所有 View 、 Controller 等都将是函数式的等价物。我们已经通过 Linq 朝着这个方向前进。
参见 Paul Graham 的击败平均水平,他在其中描述了他如何通过使用 Lisp 构建 Web 应用程序来超越竞争对手:http://www.paulgraham.com/avg.html
关于multithreading - 最终 Web 开发框架的功能要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759820/