今天的Web页面是许多交互组件的结果 - 如级联样式表,XML代码,ad
hoc数据库查询和JavaScript函数。对于除了最基本的网站之外的所有网站,跟踪这些不同元素如何相互作用,相互引用,来回传递数据可能是一项耗时的工作。
在计算机协会计划语言原理研讨会上发表的论文中,Douglas Ross软件技术职业发展教授Adam Chlipala描述了一种名为Ur / Web的新编程语言,它允许开发人员将Web应用程序编写为自我包含的程序。语言的编译器 - 将高级指令转换为机器可执行代码的程序 - 然后自动生成相应的XML代码和样式表规范,并将JavaScript和数据库代码嵌入到正确的位置。
除了使Web应用程序更易于编写之外,Ur / Web还使它们更安全。“假设您希望在网页上设置日历小部件,并且您将使用提供日历小部件的库,并且在同一页面上还有一个广告框,该广告框基于广告网络提供的代码,“Chlipala说。“你不想要的是广告网络能够改变日历的工作方式或者日历代码的作者能够干扰投放广告。”Ur / Web自动禁止那种未经授权的访问。页面元素。
打字,确定范围
Ur / Web能够提供安全保护并协调不同的Web技术,这源于它与大多数成熟的编程语言(如C ++或Java)共享的两个属性。一个是它是“强类型的”。这意味着程序员在Ur / Web中定义的任何新变量都被约束为特定的数据类型。类似地,新函数的任何规范都必须包括函数所作用的数据类型以及它返回的数据类型。
在计算要返回的值时,该函数可能需要创建新变量。(例如,返回数据库中平均值的函数首先需要计算它们的总和。)但是这些变量对于程序的其余部分是不可访问的。这是第二个属性,称为“变量范围”,因为它限制了函数中定义的变量的范围 - 可访问性的广度。
Chlipala说:“你可能想要将一个内部的库作为私有状态写入记录用户名和密码的数据库表。” “您不希望应用程序的任何其他部分能够只读取和覆盖密码。大多数Web框架不支持该样式。他们假设程序的每个部分都可以完全访问数据库。“
打字也有助于安全。许多Web开发框架以这样的方式生成数据库查询:表面上登录到网站的人可以在用户名字段中键入代码,实际上会覆盖数据库中的数据。使用Ur / Web,用户名将构成他们自己的数据类型,其处理方式与数据库查询的处理方式大不相同。
满足期望
键入也是实现Web技术协调的原因。假设一些JavaScript代码应该对从数据库获取的数据起作用,并且结果应该显示在由某些XML代码确定的位置的Web页面上。如果Ur / Web程序员编写了一个数据库查询,该查询提取了JavaScript不期望的类型的数据,或者如果JavaScript生成了XML页面不期望的类型的输出,则编译器将注册差异并标记包含错误的代码。
通常,未明确键入的代码仍具有隐式一致性规则。例如,如果您在SQL数据库语言中编写一个询问一堆文本字段的平均数值的查询,数据库服务器将告诉您它无法处理您的请求。为了使Ur / Web能够协调Web技术之间的数据流,Chlipala必须为包含这些规则的SQL,XML和级联样式表(CSS)创建新数据类型的库。
虽然Ur / Web编译器确实在其当前版本中生成XML,JavaScript和SQL代码,但它不会自动生成样式表。但是,Chlipala说,“编译器可以做的一件事就是分析你的完整程序并说,'这是一个可能提到的所有CSS类的详尽列表,这里是每个类可能的上下文的描述used,告诉你哪些属性可能值得设置。因此,例如,某些特定类可能永远不会在表属性具有任何含义的位置使用,因此您不必费心设置它们。郑州不育不孕医院:zztjyy.com郑州不孕不育医院排名:zzfkyy120.com
转载于:https://blog.51cto.com/14258629/2371075