在这篇文章中,开发人员描述了创建开源Web操作系统和语言的过程,以及它的用途。
也许你想知道什么是“网络操作系统”?为了解释这一点,我们必须看看传统操作系统的主要功能。操作系统的主要任务是提供统一的访问底层硬件的方法,目的是简化应用程序的创建。因此,操作系统中的“内核”成为开发人员可以使用的API,以透明地访问机器的底层硬件。这通常被称为“HAL”,意味着“硬件抽象层”。
一个操作系统还包含其他功能-但主要目标是简化为最终应用程序开发人员创建应用程序,从应用程序开发角度抽象出“无聊的东西”,并使其更易于使用。
考虑到上述情况,“网络操作系统”可以说已经被定义,其定义如下:“Web操作系统的主要目标是让创建WEB应用程序变得更容易。”因此,Web操作系统和Web应用程序框架之间的界限可以说变得模糊了,并且这两者通常可以(几乎)用作彼此的同义词。
我创建了一个Web操作系统。它的名字是PhosphorusFive,它是开源的。实际上,它包含在一个简单的开放源代码ZIP文件中,允许您在不到5分钟的时间内运行它,例如VisualStudio或MonoDevelop。这是因为,可以说,它只是一堆库,结合到一个运行在ASP.NET或Mono之上的框架中。因此,不要让“操作系统”这个词吓倒你。您可以看到一段1分钟长的视频,演示下面的一些功能。
PhosphorusFive的主要设计目标如下:
使它至少比创建网络应用程序要容易10倍。允许动态安装和卸载应用程序和模块,而不会干扰其正常操作。将安全设置为“商品”,以便系统“默认安全”,从尽可能多的安全问题中卸载开发人员。
为了更容易地创建Web应用程序,我必须解决开发人员在创建丰富的Web应用程序时遇到的所有常见问题。这些问题包括Ajax窗口小部件和控件,例如TabView,树视图控件,通过Ajax请求上传文件等等,等等。这些PhosphorusFive的部分封装在一个名为“Micro”的模块中。Micro也是一个CSS框架,它允许开发人员响应地创建自己的Web应用程序,以便它们可以在所有设备上工作。为了实现这种可定制化,我还必须在CSS框架的核心中提供“钩子”,使最终开发人员能够创建自己的“主题”或“皮肤”。所以Micro可以说是PhosphorusFiveGnome或者KDE对Linux来说是什么。或者,如果您是Windows用户,则可以将Micro与Windows的“公共控件”或DOS上的“Windows部件”进行比较。
另外,主GUI模块-“桌面”模块还提供了许多帮助功能,例如允许用户使用GUI帮助程序组件登录和注销。它还提供了帮助函数来安装和卸载模块和应用程序以及其他类型的服务。身份验证和授权也由底层系统简单地“照顾”,遵循关于密码的所有最佳实践以及其他安全问题。
我还必须确保,通过在自己的(下一个)应用程序和/或模块中利用自己的组件和模块并使其变得简单,“增量式”工作变得简单,并逐渐构建越来越复杂的构造。利用第三方模块和应用程序,就像在C#中使用“库程序集”一样。这恰好与我们上述目标列表中的第二点重合。
我不得不做的第二件事,听起来可能稍微有点不直观,就是创建我自己的编程语言。就我所知,目前没有编程语言,它允许动态地执行代码,在这样的程度上,模块的安装和卸载可以通过简单地将文件x复制到服务器来完成,而不会干扰你的服务器正常运行。我创建的编程语言叫做“Hyperlambda”,它是PhosphorusFive的核心。
Hyperlambda必须非常容易学习,因为我意识到让开发人员学习一种新的编程语言,就像要求BMW车主切换到沃尔沃一样。Hyperlambda因此不含OO构建体,并且本质上是%功能的。因此它的名字,意味着“Hyper”(网络)和“Lambda”(函数对象)。Hyperlambda也只包含四个简单的控制结构或语法元素,所以它很大程度上是自我描述-至少对于任何曾经见过例如YAML或JSON的人来说。
Hyperlambda是C#之上的一个简单抽象,这得益于一个称为ActiveEvents的巧妙设计模式,它允许您轻松地在C#中调用“钩子”。所以,实际上,语言实际上更多是一种文件格式,描述了一个关系型“节点”结构,允许您声明一个节点,作为这种活动事件的参数。在C#中创建自己的活动事件,并将它们用作自己的“语言扩展”,就像使用ActiveEvent属性声明您的方法一样简单。Hyperlambda的语法与YAML或JSON非常相似。以下是如何创建模态窗口的示例。这声明了一个“lambda对象”,或者一个“您可以使用PhosphorusFive的核心“eval”函数进行评估。
/**Createsamodalwindow.*/create-widgetsmicro.widgets.modal:my-modalwidgetsh3innerValue:ThisisaheaderpinnerValue:Thisisaparagraphdivclass:rightwidgetsbuttoninnerValue:Closeonclick//Closesmodalwindow.delete-widget:my-modal
事实上,任何有经验的Web开发人员都可能已经很容易理解上述Hyperlambda中的“节点”与它最终产生的HTML/DOM之间的关系。以下是上述Hyperlambda如何通过例如“Hypereval”运行的截图。Hypereval是来自PhosphorusFive的预装模块之一,它允许您在“立即”模式下评估Hyperlambda。
然后,我所要做的就是证明它是有效的,除了为开发者提供工具链外,他们还可以利用这些工具链来实际消费磷五。以下是我最初选择