multithreading - 最终 Web 开发框架的功能要求?

标签 multithreading language-agnostic cross-browser web-frameworks

随着可用的 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/

相关文章:

language-agnostic - 脚手架的意义何在?

javascript - oncontextmenu 是跨浏览器的吗?

c# - List<T>().Count 线程安全吗?

android - 选择在 android 中查看不同语言的文本?

language-agnostic - 以编程方式控制商用 DVD 播放器的策略

android - 如何识别有助于重现 Android 网络浏览器网络渲染错误的因素?

javascript - 跨浏览器平台独立http图片上传库(mac/linux/windows/ipad)

java - 什么是 C# "Logical Call Context"的 Java 等效项

java - 多线程中如何获取锁以及在哪个对象上获取锁?

java - Thread.start() 方法从不调用 run()