2

随着可用的 Web 开发框架种类繁多,似乎总是有一种“尝试新事物”的永久动机。因此,我们中的一些人发现自己用一个框架换另一个框架,从来没有对最终结果完全满意。当然,总会有一个特定的 Web 框架可以完美服务的利基市场。但是,有很多人已经决定使用 C++、Java 或 C# 来构建桌面应用程序。对于 Web 开发应用程序,情况并非如此。Joel Spolsky 在链接文本中提到了这一点。

假设我要构建这样一个框架:功能需求是什么?这里的目标是列出具体的功能期望(当然,为了stackoverflow 发布而简洁地定义)。将根据其票数选择最佳答案。

只是为了让每个人都开始,以下是部分要求列表。请注意,这些项目是故意留下一些抽象的,目的是人们可以从中得出更具体的项目:

  • OOP 一致性:服务器端和客户端模块之间的无缝数据交换和本机对象表示:也就是说,给定客户端的 clientFoo()一个函数:和服务器端的一个函数:一个serverFoo()应该能够传递一个对象无需任何编组obj的任何类型:T

    define clientFoo() {
        T obj = createObject()
        serverFoo(obj)
    }
    
    OR
    
    define serverFoo() {
        T obj = createObject()
        clientFoo(obj)
    }
    

这增加了本地对象表示在客户端和服务器端必须相同的要求,包括所有组合、类间耦合和封装语义。基本上,给定的类或给定的实例是驻留在客户端还是服务器端应该是完全无关的。

  • 功能一致性:无缝的功能和线程执行:应该能够在客户端/服务器端创建一个函数并将其传递到边界以执行。这包括对多线程的统一支持(在客户端和服务器端都应该一致地工作)。

    • 多应用程序会话互操作性:这里一个完美的例子是应用程序间的“剪切和粘贴”(如上面指出的文章中所述)。我不是在谈论将浏览器中的文本简单地复制到另一个浏览器实例(或选项卡)。如果想将 MySocialApp 中的联系人对象粘贴到 YetAnotherSocialApp 怎么办?这种应用程序间的数据交换很重要。

    • 一致的跨浏览器兼容 UI:创建 AJAX“对话框”、进度指示器、选项卡等都应该使用与框架的其余部分无缝连接的 API 来实现,就像上面讨论的客户端/服务器集成一样。哦,是的,它必须在所有浏览器上都一样(开发人员完全看不到浏览器的区别)。

4

3 回答 3

3

就个人而言,我认为下一个伟大的 Web 开发框架本质上将是“功能性的”,即它将使用一种功能性语言,并且所有的视图、控制器等都将是功能等价物。我们已经使用 Linq 朝这个方向发展。

请参阅Paul Graham的 Beating the Averages,其中描述了他如何通过在 Lisp 中构建 Web 应用程序来超越竞争对手:http: //www.paulgraham.com/avg.html

于 2009-11-18T23:32:01.873 回答
2

你错过了重要的部分。

  • 将显示逻辑与代码分离。
  • 将数据(发布的内容)与您的代码库分离。
  • 到处跑的能力
  • 维护框架工作的积极程度。

所以你需要你的输出模板,它是 xml 或 html 等等。
一个简单的模型视图控制器结构很方便
一个很好的数据库抽象层,它允许你模板化你的 SQL,并停止 sql 注入。
一个轻量级的足迹。
在许多不同的网络平台上运行的能力。(最好是非专有的)例如:Apache (PHP)
可在许多服务器上扩展:(会话维护等)
易于扩展。
受到社区的欢迎。

跨浏览器兼容性很大程度上取决于您选择的 css、html 和 ajax 库……这与您的 Web 开发框架完全不同。你最好不要重新发明轮子。选择一个javascript库是可取的。(例如jQuery)

一种在应用程序中维护内容并仍然允许将代码存储在存储库中并在开发/测试/和生产版本上更改/推出的方法。内容经常在框架中混杂在一起,很难维持开发和继续发布内容。内容和代码的分离非常重要。

于 2009-11-19T00:56:07.160 回答
0
  • 完整的视图/逻辑分离:应该不可能在视图文件中编写任何编程逻辑。 这是一个很好的论据,说明为什么这是一个好主意。
于 2009-11-18T23:25:42.647 回答