从数据生成应用 背景技术 [0001] 创建可执行的计算机程序总体上涉及生成算法,验证算法的正确性,并且将算法实现为编程语言。这个过程往往需要很多领域的专业知识,包括按照目标编程语言进行编码。例如,在诸如MICROSOFT VISUAL STUDIO的集成开发环境中,设计人员可以创建用于应用的用户界面表单。通常,应用数据从具有元数据的数据库被获取,并且元数据被用于为数据库内的不同类型的数据生成表单。 [0002] 诸如MICROSOFT EXCEL的电子表格软件允许用户将数据输入到单元中而不指定数据类型,并且在一些情况下推断用于输入数据的数据类型以自动改变单元的格式。例如,单元中的一系列六个连续数字通常被自动格式化为使用默认日期格式的日期。默认日期格式可以通过用户从可用的日期格式列表中选择而被改变为不同的日期格式,或者格式化的单元可以通过用户选择不同的数据类型(诸如货币,而不是单元内的数字的日期)而被改变。 但是,开发者环境可能需要将数据从电子表格导入到关系数据库中,关系数据库提供创建用于应用的用户界面表单所需要的元数据。 [0003] 诸如MICROSOFT POWER POINT等演示软件已经允许用户使用可修改的模板来生成幻灯片,或者在一些情况下,通过手动插入组件和数据来从空白幻灯片文档创建幻灯片。但是,由于演示软件通常专注于数据的静态呈现,因此通常不会考虑提供动态数据或用户交互机会来影响数据。 发明内容 [0004] 本公开内容的示例提供了用于从数据自动生成应用的系统和方法。应用使用在开发者环境内接收的源数据而被自动生成,诸如在设计界面上。数据类型从数据本身的分析被推断出,并且控件针对推断的数据类型而被自动生成,以提供可修改的应用文档,从而使得用户可以修改应用的视觉元素、布局、和甚至数据访问而无需编写任何代码。应用文档是可编辑和可修改的,从而允许用户通过继续操纵可视化控件和元素来继续构建和展示或隐藏应用的定制和应用功能。由于应用被自动生成,包括基于推断的数据类型的控件,因此它们在生成和运行时可能会涉及更少的错误。另外,由于应用被自动生成,包括用于修改布局和功能的表单,因此应用也可以针对运行时效率而被优化。此外,因为应用被自动生成的,所以诸如可修改数据访问的应用行为可以利用系统的较少固有知识以及通常的编码而被生成。 [0005] 本公开内容的各方面提供了一种开发者环境,从而使得任何用户不管其是否缺乏开发经验都可以利用来创建应用。与在使用MICROSOFT OFFICE或类似程序时采用的技能类似的一般的工作场所计算技能被转化为开发环境。因为应用从数据被自动生成,并且可以使用二维平面表格中的数据或关系数据库外部的数据,所以它们进一步提高了开发者或用户在开发应用时的效率。另外,将开发环境转换为非开发者用户使得能够为任何用户提供应用开发,从而提高了应用开发的速度。更快的应用开发可以为用户节省时间,并且最终减少处理器周期和机器资源。 [0006] 例如,用户可以从标识的数据源开始并且提供数据集以在周围设计应用,从而使得本公开内容的各方面基于源数据设计或布局在选择的数据集周围创建应用,以向用户提供在自动生成的应用中查看、添加、删除和排序数据集中的数据的能力。使用通常已经在使用演示软件来创建幻灯片演示文稿时开发的技巧,用户可以在视觉上修改应用的布局以及应用内容的呈现方式。本公开内容的各方面基于对组件的用户选择和放置来自动生成应用行为的表达,从而提供用户可以继续定制以与数据集交互的可修改的应用文档。 [0007] 提供本“发明内容”是为了以简化的形式介绍将在以下“具体实施方式”中被进一步描述的对概念的选择。本“发明内容”并非旨在确定所要求保护的主题的关键特征或基本特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。 附图说明 [0008] 图1是示出用于生成应用的计算设备的示例性框图。 [0009] 图2是示出用于从数据生成应用的开发者环境的示例性框图。 [0010] 图3是示出计算设备导入数据并且使用导入的数据来生成应用的操作的示例性流程图。 [0011] 图4是示出计算设备推断数据类型并且为导入的数据生成控件的操作的示例性流程图。 [0012] 图5是示出用于将推断的数据类型映射到控件类型的数据控件表的示例性表格。 [0013] 图6是示出交互式设计表面的示例性示图。 [0014] 图7是示出用于标识应用设计的数据源的交互式设计表面的示例性示图。 [0015] 图8A和图8B是示出用于标识应用设计的数据集的交互式设计表面的示例性示图。 [0016] 图9A、图9B、图9C、图9D、图9E和图9F是示出用于提供可修改的应用文档的交互式设计表面的示例性示图。 [0017] 图10是示出实现开发者环境的计算设备的操作环境的示例性框图。 [0018] 图11是示出用于使用模板来生成应用的云计算环境的示例性框图。 [0019] 相应的附图标记贯穿附图指示相应的部分。 具体实施方式 [0020] 参考附图,本公开内容的示例使得能够从数据创建应用。使用代码生成应用通常需要编程知识、数据功能和兼容性等。本公开内容的各方面提供了使用源数据自身来来自动生成应用以推断数据类型并且基于推断的数据类型自动生成控件和布局以及相关联的逻辑,从而提供用于用户定制的可修改的应用文档。 [0021] 另外,本文中描述的示例使得能够使用选择的数据作为应用设计的起点来以高效和有效的方式生成和/或修改应用。通过如本公开内容中所描述的那样生成和/或修改应用,一些示例通过策略性地管理计算、处理、存储器和/或其他资源来减少处理负载和/或增加处理速度。标识和推断来自选择的数据集的数据的类型(用于自动生成具有用于推断的数据类型的控件的应用)的效果提高了应用以及托管应用的设备的性能。另外,一些示例可以通过简化至少一些操作(诸如通过自动执行至少一些操作,基于选择或导入的数据的推断的数据类型来自动生成应用控件)来节省存储器,减少网络带宽使用,改进操作系统资源分配,和/或改善计算设备之间的通信。 [0022] 再次参考图1,示例性框图示出了用于生成应用的计算设备。在图1的示例中,与用户104相关联的计算设备102表示用于应用设计的系统。计算设备表示执行用于实现如本文中描述的操作和功能的指令(例如,作为应用程序、操作系统功能或两者)的任何设备。计算设备可以包括移动计算设备或任何其他便携式设备。在一些示例中,移动计算设备包括移动电话、膝上型计算机、平板计算机、计算板、上网本、游戏设备和/或便携式媒体播放器。计算设备还可以包括不太便携的设备,诸如台式个人计算机、信息亭、桌面设备、工业控制设备、无线充电站和电动汽车充电站。另外,计算设备可以表示一组处理单元或其他计算设备。 [0023] 在一些示例中,计算设备具有至少一个处理器106、存储器区域108和至少一个用户界面。处理器包括任何数量的处理单元,并且被编程为执行用于实现本公开内容的各方面的计算机可执行指令。指令可以由计算设备内的处理器或多个处理器执行,或者由计算设备外部的处理器执行。在一些示例中,处理器被编程为执行诸如图(例如,图3和图4)中所示的指令等指令。 [0024] 在一些示例中,处理器表示用于执行本文中描述的操作的模拟技术的实现。例如,操作可以由模拟计算设备和/或数字计算设备执行。 [0025] 计算设备还具有一个或多个计算机可读介质,诸如存储器区域。存储器区域包括与计算设备相关联或由计算设备可访问的任何数量的介质。存储器区域可以在计算设备内部(如图1所示),在计算设备外部(未示出),或两者(未示出)。在一些示例中,存储器区域包括被连线到模拟计算设备中的只读存储器和/或存储器。 [0026] 除了其他数据之外,存储器区域存储一个或多个应用。应用在由处理器执行时操作以在计算设备上执行功能。示例性应用包括开发者环境110,开发者环境110可以表示用于设计其他可执行应用的应用。应用可以与对应的应用或服务(诸如经由网络(未示出)可访问的网络服务)通信。例如,应用可以表示与在云中执行的服务器端服务对应的下载的客户端应用。在一些示例中,生成的应用可以被配置为在运行时期间与云中的数据源和其他计算资源通信,或者可以在客户端服务与云服务之间共享和/或聚合数据。数据源112可以表示由计算设备102可访问的任何类型的数据源,无论是在另一计算设备处,在云中,在网络存储位置处,还是任何其他合适的数据存储位置。在一些示例中,存储器区域可以存储数据源112或数据源112的子集,其可以表示在存储器区域108处本地存储的数据。在其他示例中,存储器区域108可以存储与在数据源112处远离计算设备102而被存储的数据相关联的数据访问点、或本地和远程数据的任何组合。 [0027] 存储器区域还存储一个或多个计算机可执行组件。示例性组件包括用户接口组件。例如,用户接口组件114在由计算设备102的处理器106执行时使得处理器106执行操作,包括在与开发者环境110的用户交互期间接收用户选择。 [0028] 在一些示例中,用户接口组件包括用于向用户显示数据并且从用户接收数据的图形卡。用户接口组件还可以包括用于操作图形卡的计算机可执行指令(例如,驱动程序)。此外,用户接口组件可以包括显示器(例如,触摸屏显示器或自然用户界面)和/或用于操作显示器的计算机可执行指令(例如,驱动程序)。用户接口组件还可以包括以下中的一个或多个以向用户提供数据或从用户接收数据:扬声器、声卡、相机、麦克风、振动电机、一个或多个加速度计、BLUETOOTH品牌通信模块、全球定位系统(GPS)硬件和光感受光传感器。例如,用户可以通过以特定方式移动计算设备来输入命令或操纵数据。在另一示例中,用户可以通过提供由用户接口组件可检测的姿势(诸如触摸或轻敲触摸屏显示器或自然用户界面)来输入命令或操纵数据。 [0029] 开发者环境110为应用设计和生成提供设计工具和设计环境。在一些示例中,开发者环境110包括设计表面116、组件库118、布局库120、主题库122、连接列表124和策略的集合126。设计表面116可以是开发者环境110的交互式画布或交互式设计表面。在一些示例中,设计表面116是被显示在交互式计算设备上的交互式图形用户界面的一部分。例如,设计表面116可以是被通信地耦合到手势检测机构(诸如触摸屏的手势检测组件)的交互式表面,从而使得检测到的手势能够用于传送与开发者环境或开发者环境的元件的交互。 [0030] 组件库118可以包括一个或多个应用组件或控件,其可以在应用设计中被选择或使用。在一些示例中,组件库118可以具有模板化组件,其可以经由与设计表面116的用户交互使用数据来选择和定制。示例组件可以包括但不限于文本控件、图库(gallery)控件、视觉布局控件、动画控件、导航控件、标签等。作为示例,组件库118包括切换开关,切换开关是提供布尔(boolean)逻辑的指示或曝光的图形元素,通常作为是/否或真/假指示。在这个示例中,使用切换开关,通过选择开关的一侧或另一侧,或者通过将指示器从一侧移动到另一侧来选择两个可能值中的一个值,其中开关的两侧与两个不同的可能值相关联。如本文中使用的,组件可以是指控件、对象、实体或可以在应用或程序中使用的任何组件,无论是在设计期间还是在运行时。 [0031] 布局库120可以包括与应用控件的视觉放置以及应用控件内的数据的视觉放置相关联的一个或多个应用布局或视觉布局。布局库120可以具有模板化的视觉布局,其可以经由与设计表面116的用户交互用使用数据而被选择或定制。例如,来自组件库118的一种类型的组件可以是列表组件,其可以与来自布局库120的若干不同的视觉布局相关联。在一些示例中,在为选择的数据生成列表控件时,可以使用默认列表布局,布局库120以编辑模式在设计表面116处提供不同的可选择的列表布局用于用户选择数据在列表控件中的不同视觉布局。 [0032] 主题库122可以包括一个或多个应用主题、或者除了布局之外的视觉组件,诸如配色方案、字体选择、字体大小、视觉效果等。例如,主题库122可以为应用设计提供不同视觉主题的列表,其可以在自动生成的应用的定制期间经由设计表面116可选择。 [0033] 连接列表124标识数据源位置,诸如数据源112,其中数据可以被标识为用于使用导入的数据来导入到开发者环境110中以用于应用设计。在一些示例中,开发者环境110的设计逻辑可以标识数据源112并且将标识的数据源位置提供为连接列表124。在其他示例中,用户104可以提供用于访问和连接到数据源112处的一个或多个数据源位置的证书,数据源112可以成为连接列表124的一部分用于将来使用。 [0034] 开发者环境110可以包括连接器128,在开发者环境与数据源之间创建连接提供者的连接服务。例如,连接器可以在开发者环境与社交媒体站点或客户关系管理系统之间创建连接提供者,从而使得社交媒体站点或客户关系管理系统变成连接列表124的可选数据源。在一些示例中,连接器128可以使用同意流程或授权流程获取认证数据并且连接到连接来创建连接和连接提供者。在其他示例中,连接可以特定于云中的租户,由用户建立,或者由组织建立并且对用户不透明,从而提供连接到数据源的证书。由连接器128创建的连接提供者可以将来自数据源的数据转换成二维表格,用于由开发者环境使用以将来自二维表格的数据转换为由用户可修改和可定制的自动生成的应用。 [0035] 在一个实施例中,数据源112可以由开发者环境110基于与用户104相关联的用户证书发现。例如,用户104可以使用与开发者环境110可访问的用户简档相关联的用户证书登录到开发者环境110。在这个示例中,用户简档可以存储用户104先前在与开发者环境110交互时使用的数据源位置和相关联的证书。在其他示例中,开发者环境110可以基于用户证书来检测与用户104相关联的数据源位置,并且提示用户104经由设计表面116来提供对检测到的数据源位置的访问。在其他示例中,开发者环境110可以与企业网络相关联,并且与企业网络对应的一个或多个数据源位置可以被提供作为可用于连接列表124中的选择的一些数据源位置。在另一实施例中,数据源112可以由发现服务提供给开发者环境110,并且开发者环境可以在设计表面116处将数据源112暴露为连接列表124。 [0036] 开发者环境110标识数据源,从数据源标识用于导入的数据集,并且部分基于策略的集合126来推断导入的数据集的数据类型。策略的集合126可以包括但不限于用于分析数据、推断数据类型、标识用于并入到生成的应用中的数据的子集、选择布局和/或与从数据自动生成应用相关联的任何其他操作的规则、参数和约束。策略的集合126中的至少一些策略包括与与用户相关联的历史数据源相关联的规则和参数、与数据值类型相关联的数据类型、权限、数据敏感性、数据限制、应用如何使用数据、应用捕获的数据类型或任何其他合适的参数。 [0037] 策略的集合126中的至少一些策略包括用于从选择的数据集标识数据的相关的子集以用于并入到生成的应用中的约束的集合。约束的该集合可以包括显示约束、性能约束和遥测约束。显示约束可以与生成的应用内的显示和/或布局相关联,诸如竖直显示屏幕基板面(real estate)。性能约束可以包括对可以在生成的应用中引入的实体或表达的预期数目的约束、对应用控件的复杂度的度量的约束、对数据的子集之间的数据绑定的度量或数目的约束、或任何其他合适的性能约束。例如,遥测约束可以包括与其他用户相关联的已知知识或者来自开发者环境110内的数据或开发者环境110的其他实例的先前开发的应用。 作为示例,遥测约束可以是关于在类似的开发情况下用户偏好列或列类型的特定组合的学习的知识。 [0038] 在一些示例中,开发者环境的设计逻辑使用约束的该集合连同推断的数据类型和/或输入数据集的元数据来生成检查数据源是否可接受最终用户输入的应用逻辑。不同的检查可以通过自动生成的应用的生成的应用逻辑来进行,包括但不限于数据捕获字段是否被设计为需要值,值是否可以被正确地转换为推断的数据类型,以及数据字段是否包含基于参数或被包括在约束的该集合内的其他规则而在可接受范围内的值。例如,数据捕获字段可以被设计为需要为了应用逻辑检查允许输入数据的提交的值。在其他示例中,到绑定到数值的数据输入字段的文本数据输入可以在应用逻辑检查时返回不正确的结果。在又一示例中,数据字段可以具有定义可接受范围的参数,诸如将值的可接受范围定义为在特定时间段内的数据字段。 [0039] 例如,生成的应用逻辑可以向最终用户提供反馈以提示用户在提交给数据源之前校正数据输入。在一些示例中,如果没有进行提示的校正,则应用逻辑还可以被配置为阻止到数据源的数据提交。在提交给数据源之后,数据源可以检测提交的数据的问题,这些问题可以被传送给应用逻辑。然后应用逻辑可以向最终用户提供关于该问题的反馈以及可能的修正建议。反馈可以采取很多形式,例如诸如视觉、音频或触觉警报、或者经由电子消息传递、即时消息传递、弹出式通知等提供的其他合适的通知。 [0040] 在其他示例中,设计逻辑使用约束的该集合连同推断的数据类型和/或输入数据集的元数据来确定要为自动生成的应用选择的初始布局。这种布局选择可以基于:数据类型;数据数量,例如诸如列中的数据集的总宽度;将会对数据做什么;或类似的启发。另外,一些元数据可以与输入数据集一起被包括,其指示期望包括输入数据的一个或多个列,或者另外提供附加数据用于由设计逻辑在确定布局选择时使用。 [0041] 用户104指向数据源,选择数据集,并且开发者环境110构建用户然后可以修改的应用文档。换言之,使用由用户选择的数据,开发者环境110从选择的数据自动生成可定制的应用模板。用户104然后可以共享应用或发布应用,并且可以进一步使用从数据生成的应用文档来定制应用。 [0042] 图2是示出用于从数据生成应用的开发者环境的示例性框图。开发者环境200是图 1中的开发者环境110的一个实现的说明性示例。开发者环境200包括设计表面202和设计逻辑204。 [0043] 设计表面202可以是用于接收源数据、提供可修改的应用文档以及接收与源数据和可修改的应用文档的交互的交互式画布。例如,设计表面202可以是经由用户界面显示的并且被配置为接收用户交互的开发者环境200的一部分。设计表面202可以包括可以是开发者环境200的应用资源的设计工具206。例如,设计工具206可以包括图1的组件库118、布局库120和主题库122。 [0044] 设计逻辑204可以包括用于使用所接收的源数据、源数据的子集的数据类型来自动生成应用以及为推断的数据类型生成控件作为自动生成的应用的一部分使得生成的应用能够基于数据本身来自动设计的多个算法、规则和参数。例如,设计逻辑204可以包括但不限于数据连接机构208、数据推断机构210、控件生成器212、布局生成器214、主题管理器 216和数据策略机构218。 [0045] 在示例性操作中,设计表面202可以经由数据连接机构208接收连接列表220。连接列表220可以提供一个或多个标识的数据源用于应用设计的数据的选择。例如,标识的数据源222是一个可能的数据源的说明性示例,诸如云存储位置。设计表面202提供连接列表220作为交互式列表,其可以暴露存储在标识的数据源222处的可选择的数据或数据集。设计表面202接收数据集224的选择并且将数据集224导入到开发者环境200中。 [0046] 数据推断机构210分析数据集224以标识数据的一个或多个子集并且推断数据的每个标识的子集的数据类型。作为说明性示例,数据推断机构210可以从数据集224推断数据类型A 226、数据类型B 228和数据类型C 230。在其他示例中,可以推断多于三种数据类型,或者可以推断少于三种数据类型。数据集224是说明性示例,并且不旨在对可以被包含在数据集内的数据的子集的数目或者可以从单个数据集推断的不同数据类型的数目提供任何限制。 [0047] 在一个实施例中,数据推断机构210分析来自数据集224的数据本身,解析数据集 224的值以推断不同类型的数据(如果适用的话),并且推断数据的每个标识的子集的特定数据类型。例如,数据集224可以是电子表格文档,并且数据推断机构210可以分析和解析电子表格的给定列中的每个单元以确定给定列内的所有单元具有两个值中的一个。在这个示例中,数据推断机构210可以推断给定列的数据类型是布尔逻辑。在另一示例中,数据推断机构210可以标识单元的具体值,从而使得给定列内的单元具有是或否的值,并且从该类型的分析推断布尔数据类型。在又一示例中,数据推断机构210可以解析电子表格的另一列以确定该另一列的单元全部包含数值。数据推断机构210可以标识数值的模式,诸如通常在日期或时间戳中找到的序列,并且推断另一列中的数据的日历日期。这些只是数据推断机构 210解析数据本身以推断数据集224内的数据或数据的子集的数据类型的很多可能示例中的几个。 [0048] 控件生成器212使用来自数据推断机构210的推断的数据类型来为推断的数据类型生成控件类型。在一些示例中,控件生成器212可以使用数据控件表232来标识用于推断的数据类型的控件类型。例如,数据控件表232可以是将数据类型映射到适合于数据类型的一个或多个控件类型的表格。在其他示例中,控件生成器212可以部分基于来自用户简档 234的用户数据(诸如对特定数据类型的控件类型的过去的用户选择)或部分基于遥测数据 236来生成控件类型。例如,遥测数据236可以提供经常与推断的数据类型一起被使用的默认控件类型。 [0049] 布局生成器214使用由控件生成器212生成的控件来提供生成的控件和数据集224的视觉布局。设计表面202提供应用文档238,应用文档238从数据集224、来自控件生成器 212的生成控件242以及来自布局生成器214的布局244来在视觉上将数据240暴露为应用文档238。应用文档238是由设计逻辑204使用数据集224自动生成的可修改应用。如本文中使用的,自动地指代在没有用户或管理员干预的情况下发生的过程。换言之,在设计表面202处接收数据选择,并且由设计逻辑204使用所接收的数据来生成应用文档238,而无需其他外部干预。 [0050] 应用文档238被自动生成以包括表单246。表单246提供用于修改应用文档238的参数和视觉引导。例如,表单246可以包括浏览248、细节250和编辑252。浏览248是提供对数据集224的视觉搜索和查看的应用文档238的表单、页面或应用。细节250是提供对数据集224的子数据或细节的视觉查看的应用文档238的表单或页面,诸如下钻到记录中以暴露该记录的不同方面。作为示例,数据集可以包括多个记录,这些记录可以使用浏览248在高层级被滚动或扫描。在这个示例中,可以使用细节250来查看单个记录的细节。编辑252提供用于修改应用文档238内的数据240、控件242、布局244和/或主题254的表单或页面。主题254由主题管理器216选择。在这些示例,主题254可以是默认主题或选择的主题。 [0051] 遥测数据236可以包括从分布式开发者环境和使用数据生成的先前应用的分析而得出的机器学习信息。例如,遥测数据236可以包括关于以下各项的信息:推断哪些数据类型,推断是被纠正还是被确认,针对什么类型的数据生成什么类型的控件,针对什么类型的数据使用什么类型的布局等。用户简档234可以包括对应于与开发者环境200的用户交互的历史信息以及诸如用户证书256等其他用户信息。历史信息可以包括用户先前已经与谁共享生成的应用、用户先前已经从哪里选择了数据或数据的一部分、以及与用户相关的其他历史应用设计和开发信息。在一些示例中,用户意图可以部分基于与开发者环境的过去的用户交互或与选择的数据对应的过去的用户选择、对自动生成的应用文档的用户修改或两者来确定。用户意图可以通过关于经由通过与用户简档相关联的应用分析而被收集的过去的用户选择或交互的数据而被推断。在其他示例中,用户意图可以基于遥测而被确定,诸如针对与一些频率一起被使用或者由其他用户根据其他数据类型选择的给定值或值集合的数据类型推断、经由用户交互来修改或确认的数据类型的生成的控件、和/或在当前应用设计中使用的其他参数、选择和数据。 [0052] 数据策略机构218实施附接到源数据(诸如数据集224)的策略以及任何其他策略(诸如用户策略、企业策略等)。数据约束机构258使用很多方法来确定来自选择的数据集的哪些数据列受到初始应用生成或应用文档生成的影响。在一些示例中,并非所有的列都经受控件生成器212。数据约束机构258采用来自约束的集合的一个或多个约束(例如,诸如来自图1中的策略的集合126的约束)来为应用生成标识列的相关的集合。例如,可以采用约束的集合来寻找列的相关的集合,诸如:列中的数据集的总大小或宽度;表明哪些列可以被认为是必需的数据集上的元数据;对可以是可显示的内容的约束,诸如非隐藏列和可以与最终用户相关的列;在生成的应用中的显示约束,例如竖直基板面;性能约束,诸如要在生成的应用中引入的实体和表达的预期数目;每个相关数据列所绑定到的卡的某个复杂程度; 或者遥测约束,诸如类似场景中的用户偏好列或列类型的特定组合的知识。 [0053] 在这些示例中,控件生成器212可以使用来自数据推断机构210的推断的数据类型以及由数据约束机构258确定的字段的相关集合来生成推断的数据类型的控件类型。 [0054] 图3是示出计算设备从数据生成应用的操作的示例性流程图。图1或图2中描述的一个或多个组件执行下面描述的示例性操作。 [0055] 该过程开始于在操作302处从选择的数据源导入选择的数据集。选择的数据集可以通过从在设计表面处提供的连接列表的数据源的用户选择并且从用户选择的数据源的数据集的进一步选择来标识以生成应用。 [0056] 该过程在操作304处分析导入的数据以标识数据的一个或多个子集。作为示例,数据集可以是具有多个列的电子表格,并且该过程可以解析多个列并且分析多个列内的值以标识数据的不同的子集。例如,在电子表格的示例中,可以将单个列视为数据的单个子集。 在另一示例中,在导入的数据集是表格的集合的情况下,可以将单个表格视为数据的单个子集。 [0057] 该过程然后在操作306处推断数据的第一子集的第一数据类型。第一数据类型的推断由诸如图2中的数据推断机构210等组件分析导入的数据集的数据以标识数据的子集(如果有的话)并且进一步标识数据或数据的子集的值并且基于数据值本身来推断数据类型执行。 [0058] 该过程在操作308处为推断的第一数据类型生成第一控件类型。第一控件类型由诸如图2中的控件生成器212等组件标识推断的第一数据类型的默认控件类型、或者将推断的第一数据类型映射到一个或多个可能的控件类型、或者另外确定推断的第一数据类型的合适的控件类型来生成。在一些示例中,该过程至少部分基于用户简档数据或遥测数据来生成第一控件类型,用户简档数据或遥测数据可以通知对控件类型和相关联的数据类型、或者针对特定数据类型的频繁使用的控件类型的过去的用户选择。 [0059] 该过程在操作310处确定在导入的数据集中是否存在数据的另一子集。响应于确定不存在数据的另一子集,该过程在操作312处使用第一控件类型和导入的数据集来生成布局,此后该过程终止。 [0060] 响应于确定在导入的数据集中存在数据的另一子集,该过程在操作314处从该数据集推断第二数据类型,并且在操作316处为推断的第二数据类型生成第二控件类型。作为示例,推断的第一数据类型可以是字符串数据类型,并且生成的第一控件类型可以是文本框控件,而推断的第二数据类型可以是日期数据类型,并且生成的第二控件类型可以是日历控件。为推断的数据类型生成控件类型将该数据类型的关联数据绑定到自动生成的应用中的控件,从而使得当提供应用文档时,与第一数据类型相关联的数据经由第一控件类型的控件在视觉上被暴露。 [0061] 然后,该过程在操作318处确定导入的数据集中是否存在数据的另一子集。如果该过程确定不存在要为其推断数据类型并且生成控件的数据的另一子集,则该过程在操作 320处使用生成的控件类型和导入的数据集来生成布局,此后该过程终止。如果该过程确定在导入的数据集中存在数据的另一子集,则该过程可以在操作322处迭代地推断数据的随后子集的数据类型,并且在操作324处为推断的下一数据类型生成下一控件类型,并且返回到操作318以确定在移到操作320之前是否保留任何数据的子集并且使用生成的控件类型和所导入的数据集来生成布局。 [0062] 虽然讨论了推断的第一和第二数据类型,但是通过生成的第一和第二控件类型,可以推断任何数目的数据类型,并且可以使用导入的数据集来生成任何数目的控件类型。 此外,基于相关联的推断的数据类型,生成的第一控件类型可以不同于生成的第二控件类型。 [0063] 图4是示出计算设备推断数据类型并且为导入的数据生成控件的操作的示例性流程图。例如,图4中呈现的示例性操作可以由图1或图2中描述的一个或多个组件执行。 [0064] 该过程开始于在操作402处从数据源接收数据的集合。在一些示例中,数据的该集合可以是任何二维平面表,诸如电子表格。在说明性实施例中,用户可以从诸如云存储位置等数据源中选择存储的电子表格,并且应用可以基于由诸如图2中的设计逻辑204等设计逻辑对电子表格内的数据的分析使用该选择的电子表格来被自动生成和设计。换言之,用户可以接收自动生成的应用,该自动生成的应用是可修改的并且通过选择电子表格作为应用所需要的数据集来提供与电子表格的数据的交互。 [0065] 该过程在操作404处分析来自数据的该集合的数据的第一子集。例如,通过解析数据本身来标识数据的子集或不同类型的数据,可以通过对导入的数据集的设计逻辑分析来标识数据的一个或多个子集。该过程在操作406处确定数据的第一子集是否包括是/否值。 响应于确定数据的第一子集包括是/否值,该过程在操作408处推断布尔数据类型。 [0066] 如果该过程确定数据的第一子集不包括是/否值,则该过程在操作410处确定数据的第一子集是否包括给定单元内的三个或更多个不同值。如果该过程确定数据的第一子集确实包括三个或更多个不同值,则该过程在操作412处推断列表数据类型。如果该过程确定数据的第一子集不包括三个或更多个不同值,则该过程在操作414处确定数据的第一子集是否包括数值。如果该过程确定数据的第一子集确实包括数值,则基于数据的第一子集的实际数值,该过程在操作416处推断日期数据类型。在这个说明性示例中,对数据的分析超出了标识字母数字字符的范围,从而分析数据本身以基于实际数据来推断数据类型。在数值的示例中,除了用户简档和/或遥测数据之外,日期数据类型的推断可以基于数字的标识、数字的格式、数字的序列、所使用的实际数字。 [0067] 如果该过程确定数据的第一子集不包括数值,则该过程在操作418处继续分析数据的第一子集以推断数据的第一子集的第一数据类型。任何数目的不同值可以在所接收的数据的集合中被标识,超出本文中为了说明的目的而设想的示例。例如,值可以包括图像、通用记录定位符(URL)、全球定位系统坐标或可以被分析用于推断数据类型的任何其他合适的数据。 [0068] 该过程在操作420处为推断的数据类型生成控件,其与生成的布局一起使用以从所接收的数据集自动生成应用文档。 [0069] 图5是示出用于将推断的数据类型映射到控件类型的数据控件表的示例性表格。 数据控件表500可以是图2中的数据控件表232的一个实施例的说明性示例。在这些示例中,数据控件表500提供数据类型与一个或多个控件类型之间的映射,这些类型可以由控件生成器使用以标识推断的数据类型的默认控件或学习的控件类型。 [0070] 为了说明的目的,数据控件表500提供示例数据类型、默认控件类型和其他控件类型。默认控件类型可以是预先配置为用于数据类型的默认控件类型选择的控件类型、基于遥测数据而被选择作为数据类型的学习的匹配控件的控件类型、基于用户历史和/或机器学习而被选择为数据类型的用户偏好控件类型的控件类型、或者默认控件类型的任何其他合适的确定。 [0071] 在这个示例中,日期数据类型可以映射到日历控件类型和标签控件类型。日历控件类型可以是默认控件类型,而标签控件类型可以是用于日期数据类型的另一兼容的控件类型,从而使得可以接收用户修改以将日历控件类型更改为标识的日期数据类型的标签控件类型,在一些示例中。推断的数据类型“地址”可以与地图控件类型和图片控件类型兼容,从而使得控件生成器的默认选择可以是生成地址数据类型的地图控件,而地址数据类型的图像捕获(例如,诸如经由光学字符标识(OCR))也可以被映射到图片或图像控件类型。 [0072] 字符串控件类型可以在一些示例中映射到文本框控件,并且在其他示例中可以映射到图库控件类型。图像数据类型可以具有图像控件的默认控件类型,但是也可以与文本框控件兼容,例如诸如与OCR数据结合的图像捕获。在这个示例中,布尔数据可以映射到切换开关,而列表数据类型映射到下拉菜单或图库。 [0073] 数据控件表500中示出的数据类型、控件类型和映射可能性被提供作为可以提供数据类型与控件类型之间的关联的一种类型的表格的说明性示例。在图5中提供的示例对于可以由本公开内容的各方面推断的数据类型或者对于可以由本公开内容的各方面生成的控件类型不施加任何限制。 [0074] 图6是示出交互式设计表面(诸如图2中的设计表面202)的示例性示图。例如,设计表面600可以是显示开发者环境的图形用户界面的说明性示例。 [0075] 设计表面600可以包括可以是用于进入应用设计者的数据应用模式的可选择的组件的数据组件602。数据组件602可以是设计工具的示例,诸如图2中的设计工具206。例如,数据组件602的选择可以提供诸如数据源112等数据源的交互式连接列表。 [0076] 图7描绘了示出用于从数据生成应用的数据源的用户选择的示例性示图。设计表面700示出了基于对已知连接的用户选择702(被描绘为“我的连接”)来显示先前连接到开发者环境或开发者环境已知的数据源的连接列表的设计表面。开发者环境可以基于用户证书、过去的用户连接、所发现的连接或任何其他合适的手段来知道数据源。 [0077] 图8A和图8B描绘了示出经由交互式设计表面的用于应用设计的数据集的用户选择的示例性示图。设计表面800示出了暴露选择的数据源的数据集804的数据源802的选择。 数据集804可以提供可选择的数据集的列表,例如诸如单个文件。数据集806的用户选择可以提供设计表面800以显示可选择的表格或来自数据集806的数据的其他子集,其可以被选择作为用于导入和应用生成的数据。在这个说明性示例中,表格列表810提供用于选择要导入的数据集的交互式视觉列表。这里,资产数据集812被选择,并且可以用于自动生成应用。 [0078] 图9A、图9B、图9C、图9D、图9E和图9F描绘了示出用于从选择的数据的集合提供可修改的应用文档的交互式设计表面的示例性示图。设计表面900在整个图9A至图9F中被描绘为提供不同视图并且展示用于从数据的自动生成的应用文档的修改的不同功能。在一些示例中,修改或编辑功能可以作为本地更新或远程更新而发生。在一些情况下通过利用本地编译规则,根据本地更新来更新客户端上的文档表示,在托管生成的应用的客户端上记录、分析和处理本地更新。可能涉及文档服务器的更复杂的操作或应用的特定更改的远程更新涉及将设计更改发送到开发者环境。 [0079] 作为示例,远程更新可以包括编辑布局,其涉及记录用户选择的客户端设备,其继而调用存储生成的应用文档的文档服务器以去除当前布局并且应用选择的新的布局。一旦这些调用完成,文档表示形式的维护应用状态的文档服务器调用DocumentServices、CreateCompleteScreenLayout方法,该方法更新文档服务器上的应用的文档表示。 [0080] 经由用户修改对应用文档的远程更新可以被递增地编译,其中改变后的应用分组的增量被发送到客户端设备。这可以通过客户端发送应用文件的本地状态的服务器散列并且然后从文档服务器接收递增更新以实时更新用户应用的预览版本来启用。 [0081] 例如,本地更新可以包括主题切换。主题切换可以通过本地更新客户端设备本身的应用代码来实现,但是客户端仍然可以通知文档服务器维护正确的服务器表示以及检索编译的规则。客户端记录用户动作,使用编译的规则生成JavaScript或其他合适的代码,应用然后可以执行该代码以产生期望的结果。这也使得监听应用文档的其他客户端能够接收在活动客户端上进行的更新。 [0082] 参考图9A,浏览表单902、细节表单904和编辑表单906是图2中的表单246的说明性示例,其可以作为使用数据集224而生成的应用文档238的一部分来自动生成。设计逻辑204可以使用来自策略的集合126的一个或多个算法来将导入的数据集224映射到可用的目标布局的集合中的一个。设计逻辑可以在确定用于选择应用文档的布局时标识和/或推断数据类型、数据约束和布局约束。在一些示例中,输入数据集的元数据也可以被视为布局选择确定的一部分。 [0083] 在这个示例中,浏览表单902被选择以提供导入数据的视图、数据的视觉布局和应用的任何选择的主题。数据窗口908从导入的数据中在视觉上暴露控件类型和相应的值。 [0084] 现在参考图9B,布局窗口910在视觉上暴露应用内的控件的布局和控件内的数据。 布局窗口910可以提供可选择的布局选项以允许用户定制或改变数据如何布置在控件内的视觉外观,或者以其他方式定制应用内的控件的视觉外观或位置。在这个示例中,列表2912可以是列表控件的当前选择的布局,从而提供列表控件类型内的数据布置。在自动生成的应用文档的用户定制期间,用户可以选择替代布局选项来改变具有应用的列表控件的数据布置。例如,使用诸如浏览、细节和编辑等表单以及诸如数据窗口、布局窗口和主题窗口等关联窗口,可以促进生成的应用文档的用户定制。以这种方式,用户可以定制应用以获取期望的视觉外观,管理如何在应用内访问数据或使用哪些控件等,从而根据需要提供用于未来定制的可修改的应用文档。 [0085] 现在参考图9C,描绘了细节表单904的选择,其可以暴露记录细节914。例如,记录细节914显示到导入的数据的记录中的下钻如何在视觉上呈现在生成的应用中。在这个示例中,数据窗口908提供与数据捕获字段相关联地使用的卡的视觉暴露。 [0086] 如本文中使用的,卡是指具有预定义结构的复合控件。在从输入数据集中获取的值的多个方面正在被跟踪并且被视觉呈现这个意义上来说,卡是复合的。这些方面包括但不限于:值是否被期望用于通过连接来包括或用于验证目的的数据集;值是否具有数字边界以及这些边界是什么;文本值是否具有长度限制,以及这些限制是什么;与输入数据集交互的生成的应用中的较大操作是否产生了与特定值有关的错误,以及这些错误是什么;等等。作为示例,一个或多个卡可以是用于数据输入捕获的预先配置的用户界面元素,例如诸如文本字段输入框。作为另一示例,卡可以被认为是来自数据集的一行中的一列的某种类型的值的视觉表示。卡特定于数据类型,并且与应用的自动生成的控件绑定。例如,卡将消耗并且产生与其绑定的基础数据集的数据。 [0087] 一些示例性卡可以包括但不限于墨到字符识别卡、听写卡、音频卡、语音识别卡、条形码扫描仪卡、快速响应(QR)码扫描仪卡、图像卡、数字卡或任何其他卡合适的复合控制。例如,图像卡将在视觉上显示图像和其他图形数据。数字卡将在视觉上示出数字信息,例如作为格式化数字或作为强制某些数字边界的滑动条。 [0088] 现在参考图9D,描绘了对编辑表单906的选择,其可以以可修改或编辑模式来暴露记录细节914。在这个示例中,数据窗口908响应于对编辑表单906的选择来进行调节以显示记录细节914的可编辑字段。 [0089] 现在参考图9E,在数据窗口908的编辑模式内,可以选择与卡相关的可编辑字段的选择,从而暴露卡类型916。例如,卡类型916可以提供适合于数据字段的一种或多种卡类型的交互式视觉列表。在这个示例中,可以选择卡918,其可以是OCR卡类型。在这个示例中,卡 918的选择修改用于数据捕获字段920的卡类型,从而使得在运行时(在图9F中描绘),可以在数据捕获字段920中捕获手写签名并且在下面的相关联的数据字段中提供所识别的文本。 [0090] 图9A至9F仅描绘了由用户经由与设计表面900的交互来修改和定制从数据自动生成的应用文档的众多示例的小样本。 [0091] 附加示例 [0092] 在一些示例中,可以通过添加附加页面或屏幕来进一步修改从数据生成的应用,类似于用户如何与演示软件进行交互以向幻灯片放映添加幻灯片。在这个示例中,设计表面可以具有包括“插入页面”工具的设计工具带,其在选择时类似于选择插入幻灯片,向页面之间的选择位置、或者在生成的应用的页面之后/之前添加新页面。此外,可以将布局选择和其他视觉组件拖放到可修改的应用文档上,类似于演示软件中的幻灯片放映屏幕,从而将用户可能已经从与演示软件的先前交互中获取的技能用于应用开发技能中而无需使用代码或其他开发者的专业知识。 [0093] 在其他示例中,数据源可以包括但不限于社交媒体源、客户关系管理(CRM)系统、数据库、软件即服务(SAS)源、云存储源或任何其他合适的数据源。数据集可以包括但不限于工作表、表格、客户关系管理(CRM)表格、数据库记录或任何其他合适的数据集。 [0094] 生成的控件的用户意图以及布局、甚至主题也可以基于遥测或机器学习来推断。 在示例场景中,用户的默认布局可以基于对过去的用户行为的机器学习,或者基于新用户的遥测。 [0095] 另外,本公开内容考虑了自动生成的应用文档的其他形式或页面。例如,尽管示出了三种形式,但是另一种形式可以是从数据自动生成的应用的仪表板形式或仪表板页面。 仪表板形式可以提供可以在浏览屏幕中查看或浏览的数据的概要视图,或者可以整体提供生成的应用围绕其设计的数据的另一视觉概要。例如,另一视觉概要可以是状态或图表,例如,以提供应用内的数据的概览。 [0096] 作为本文中描述的其他示例的替代或补充,示例包括以下的任何组合: [0097] -其中推断的第一数据类型和推断的第二数据类型中的至少一项基于用户简档数据而被推断; [0098] -其中推断的第一数据类型和推断的第二数据类型中的至少一项基于遥测数据而被推断; [0099] -接收对针对第二数据类型的第三控件类型的选择,第三控件类型不同于第二控件类型; [0100] -重新生成包括第一控件类型和第三控件类型的布局; [0101] -使用生成的布局来生成应用文档,应用文档包括至少三种形式; [0102] -其中至少三种形式包括浏览表单、细节表单和编辑表单; [0103] -其中推断的第一数据类型和推断的第二数据类型中的至少一项是基于来自数据源的数据的第一集合内的源数据类型而被推断; [0104] -其中数据源是电子表格,并且其中推断的第一数据类型基于电子表格的第一列中的一个或多个值而被推断; [0105] -其中推断的第一数据类型和推断的第二数据类型中的至少一项基于由数据源的连接提供方提供的元数据而被推断; [0106] -标识一个或多个数据源并且将一个或多个标识的数据源作为连接列表提供给设计表面的数据连接机构; [0107] -主题管理器,向设计界面提供主题列表并且向生成的应用文档应用主题列表中的选择的主题; [0108] -数据控件表,提供一种或多种数据类型与一种或多种控件类型之间的映射; [0109] -其中所接收的数据集是电子表格; [0110] -其中所接收的数据集是多个表格; [0111] -其中生成的应用文档是模板,并且其中模板是可修改的; [0112] -数据推断机构确定数据的第一子集是否包括是/否值; [0113] -响应于确定数据的第一子集包括是/否值,推断布尔数据类型; [0114] -数据推断机构确定数据的第一子集是否包括三个或更多个值; [0115] -响应于确定数据的第一子集包括三个或更多个值,以推断列表数据类型; [0116] -数据推断机构确定数据的第一子集是否包括数值; [0117] -数据推断机构确定数据的第一子集是否包括数值。 [0118] 在一些示例中,在图3和图4中所示的操作可以被实现为编码在计算机可读介质上、在被编程或设计为执行操作的硬件中或两者的软件指令。例如,本公开内容的各方面可以被实现为芯片上的系统或包括多个互连的导电元件的其他电路。 [0119] 尽管已经在各种示例及其相关联的操作方面描述了本公开内容的各方面,但是本领域技术人员将会理解,来自任何什么的不同示例的操作的组合也在本公开内容的各方面的范围内。 [0120] 虽然本公开内容的各方面没有追踪个人可标识信息,但是已经参考从用户监测和/或收集的数据描述了示例。在一些示例中,可以向数据的汇集的用户提供通知(例如,经由对话框或偏好设置),并且给予用户对给予或拒绝同意监测和/或收集的机会。同意可以采用选择同意或退出同意的形式。 [0121] 示例性操作环境 [0122] 图10示出了其上可以实现图1的示例的适合的计算和网络环境1000的示例。计算系统环境1000仅是合适的计算环境的示例,并且并非旨在对本公开内容的使用范围或功能提出任何限制。计算环境1000也不应当被解释为具有与示例性操作环境1000中示出的任何一个组件或组件的组合相关的任何依赖性或要求。 [0123] 本公开内容与很多其他通用或专用计算系统环境或配置一起操作。可以适合于与本公开内容一起使用的公知的计算系统、环境和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境等。 [0124] 本公开内容可以在由计算机执行的诸如程序模块等计算机可执行指令的一般上下文中被描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本公开内容也可以在分布式计算环境中被实践,在分布式计算环境中,任务由通过通信网络被链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备和/或计算机存储设备的本地和/或远程计算机存储介质中。如本文中使用的,计算机存储设备是指硬件设备。 [0125] 参考图10,用于实现本公开内容的各个方面的示例性系统可以包括计算机1010形式的通用计算设备。计算机1010的组件可以包括但不限于处理单元1020、系统存储器1030以及将包括系统存储器的各种系统组件耦合到处理单元1020的系统总线1021。系统总线 1021可以是使用各种总线架构中的任何一种的几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线和本地总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线(也被称为夹层总线)。 [0126] 计算机1010通常包括各种计算机可读介质。计算机可读介质可以是可以由计算机 1010访问的任何可用介质,并且包括易失性和非易失性介质以及可移除和不可移除介质。 作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器1031和1032是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者可以用于存储所需信息并且可以由计算机1010访问的任何其他介质。然而,计算机存储介质不包括传播信号。相反,计算机存储介质排除传播信号。任何这样的计算机存储介质可以是计算机1010的一部分。 [0127] 通信介质通常以诸如载波或其他传输机制等调制数据信号来实施计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指具有以使得能够在信号中对信息编码的方式设置或改变它的特性中的一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、RF、红外线和其他无线介质的无线介质。 [0128] 系统存储器1030包括诸如只读存储器(ROM)1031和随机存取存储器(RAM)1032等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统1033(BIOS)(包含诸如在启动期间帮助在计算机1010内的元件之间传输信息的基本例程)通常被存储在ROM 1031中。RAM 1032通常包含由处理单元1020立即可访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图10示出了操作系统1034、诸如开发者环境1035等应用程序、其他程序模块1036和程序数据1037。 [0129] 计算机1010还可以包括其他可移除/不可移除、易失性/非易失性计算机存储介质。仅举例来说,图10示出了从不可移除、非易失性磁介质读取或向其写入的硬盘驱动器 1041、提供从可移除非易失性存储器1052的读取或向其的写入的通用串行总线(USB)端口 1051、以及从诸如CD ROM或其他光学介质等可移除、非易失性光盘1056读取或向其写入的光盘驱动器1055。可以在示例性操作环境中被使用的其他可移除/不可移除、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器1041通常通过诸如接口1040等不可移除存储器接口被连接到系统总线1021,并且USB端口1051和光盘驱动器1055通常通过诸如接口1050等可移除存储器接口被连接到系统总线1021。 [0130] 如上所述并且在图10中示出的驱动器及其相关联的计算机存储介质为计算机 1010提供对计算机可读指令、数据结构、程序模块和其他数据的存储。在图10中,例如,硬盘驱动器1041被示出为存储操作系统1044、开发者环境1045、其他程序模块1046和程序数据 1047。注意,这些组件可以与操作系统1034、开发者环境1035、其他程序模块1036和程序数据1037相同或不同。操作系统1044、开发者环境1045、其他程序模块1046和程序数据1047在本文中被赋予不同的数字以至少说明它们是不同的副本。用户可以通过诸如平板计算机或电子数字化仪1064、麦克风1063、键盘1062和指点设备1061(通常被称为鼠标、轨迹球或触摸板)等输入设备向计算机1010中输入命令和信息。未在图10中示出的其他输入设备可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过被耦合到系统总线的用户输入接口1060被连接到处理单元1020,但是也可以通过其他接口和总线结构(诸如并行端口、游戏端口或通用串行总线(USB))被连接。显示器1091或其他类型的显示设备也经由诸如视频接口1090等接口被连接到系统总线1021。显示器1091还可以与触摸屏面板等集成。注意,显示器和/或触摸屏面板可以被物理地耦合到计算设备所并入的壳体,诸如在平板型个人计算机中。另外,诸如计算机1010等计算机还可以包括可以通过输出外围接口1094被等连接的其他外围输出设备,诸如扬声器1095和打印机1096。 [0131] 计算机1010可以使用到一个或多个远程计算机(诸如远程计算机1080)的逻辑连接来在网络环境中操作。远程计算机1080可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括上面相对于计算机1010而被描述的元件中的很多或全部元件,尽管在图10中仅示出了存储器存储设备1081。图10中描绘的逻辑连接包括一个或多个局域网(LAN)1071和一个或多个广域网(WAN)1073,但是也可以包括其他网络。这样的网络环境在办公室、企业范围的计算机网络、内联网和互联网中很常见。 [0132] 当在LAN网络环境中被使用时,计算机1010通过网络接口或适配器1070被连接到LAN 1071。当在WAN网络环境中被使用时,计算机1010通常包括调制解调器1072或用于通过诸如互联网等WAN 1073建立通信的其他装置。可以是内部的或外部的调制解调器1072可以经由用户输入接口1060或其他适当的机构被连接到系统总线1021。诸如包括接口和天线的无线联网组件可以通过诸如接入点或对等计算机等合适设备被耦合到WAN或LAN。在网络环境中,相对于计算机1010或其部分描绘的程序模块可以被存储在远程存储器存储设备中。 作为示例而非限制,图10将远程应用程序1085示出为驻留在存储器设备1081上。可以理解,所示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他装置。 [0133] 关于图11,示例性框图示出了用于应用开发的云计算环境。架构1100示出了适合于在实现本公开内容的各方面时被使用的示例性云计算基础设施。架构1100不应当被解释为具有与其中所示的任何单个组件或组件的组合相关的任何依赖性或要求。此外,可以采用任何数目的节点、虚拟机、数据中心、角色实例或其组合来实现在本公开内容的实施例的范围内的期望的功能。 [0134] 图11的分布式计算环境包括公共网络1102、私有网络1104和专用网络1106。例如,公共网络1102可以是公共云。私有网络1104可以是私有企业网络或私有云,而专用网络 1106可以是第三方网络或专用云。在这个示例中,私有网络1104可以托管客户数据中心 1110,并且专用网络1106可以托管互联网服务提供方1112。混合云1108可以包括公用网络 1102、私有网络1104和专用网络1106的任何组合。例如,专用网络1106可以是可选的,其中混合云1108由公共网络1102和私有网络1104组成。 [0135] 根据结构控制器1118,公共网络1102可以包括被配置为托管和支持包括分布式应用的任务的各种操作的数据中心。将理解和认识到,图11所示的数据中心1114和数据中心 1116仅仅是用于容纳一个或多个分布式应用的一个合适实现的示例,并且并非旨在对本公开内容的实施例的使用范围或功能提出任何限制。数据中心1114和数据中心1116也不应当被解释为具有与任何单个资源、资源的组合、服务器的组合(例如,服务器1120,服务器1122和服务器1124)、节点的组合(例如,节点1132和1134)、或用于访问资源、服务器和/或节点的一组API相关的任何依赖性或要求。 [0136] 数据中心1114示出了包括诸如服务器1120、服务器1122和服务器1124等多个服务器的数据中心。结构控制器1118负责自动管理服务器并且在数据中心1114内分配任务和其他资源。举例来说,结构控制器1118可以依赖于服务模型(例如,由拥有分布式应用的客户设计的)以提供关于如何、何地和何时配置服务器1122以及如何、何地和何时在其上放置应用1126和应用1128的指导。在一个实施例中,分布式应用的一个或多个角色实例可以被放置在数据中心1114的一个或多个服务器上,其中一个或多个角色实例可以表示参与分布式应用的软件、组件程序或角色实例的部分。在另一实施例中,一个或多个角色实例可以表示分布式应用可访问的存储的数据。 [0137] 数据中心1116示出了包括诸如节点1132和节点1134等多个节点的数据中心。例如,一个或多个虚拟机可以在数据中心1116的节点(诸如节点1134的虚拟机1136)上运行。 虽然图11描绘了数据中心1116的单个节点上的单个虚拟节点,但是根据本公开内容的说明性实施例,可以在数据中心的任何数目的节点上实现任何数目的虚拟节点。通常,基于对分布式应用的需求(例如,处理负载量),虚拟机1136被分配给分布式应用或服务应用的角色实例。如本文中使用的,短语“虚拟机”不表示是限制性的,并且可以是指由处理单元执行以便为分配给其的角色实例的功能构成基础的任何软件、应用、操作系统或程序。此外,虚拟机1136可以包括用于正确地支持分配的角色实例的数据中心1116内的处理容量、存储位置和其他资产。 [0138] 在操作中,虚拟机在数据中心的第一节点和第二节点上动态地分配资源,并且端点(例如,角色实例)被动态地放置在虚拟机上以满足当前处理负载。在一个实例中,结构控制器1130负责自动管理在数据中心1116的节点上运行的虚拟机并且负责将角色实例和其他资源(例如,软件组件)放置在数据中心1116内。作为示例,结构控制器1130可以依赖于服务模型(例如,由拥有服务应用的客户设计的)来提供关于如何、何处和何时配置诸如虚拟机1136等虚拟机以及如何、何处和何时在其上放置角色实例的指导。 [0139] 如上所述,可以在数据中心的一个或多个节点内动态建立和配置虚拟机。如本文中所示,节点1132和节点1134可以是任何形式的计算设备,诸如例如个人计算机、台式计算机、膝上型计算机、移动设备、消费电子设备、服务器、图1的计算设备100等。在一个实例中,节点托管和支持虚拟机的操作,同时托管用于支持数据中心1116的其他租户的其他虚拟机,诸如内部服务1138和托管的服务1140。通常,角色实例可以包括不同客户拥有的不同服务应用的端点。 [0140] 通常,每个节点包括或被链接到某种形式的计算单元(例如,中央处理单元、微处理器等)以支持在其上运行的组件的操作。如本文中使用的,短语“计算单元”通常是指具有处理能力和存储存储器的专用计算设备,其支持作为在其上的软件、应用和计算机程序的执行的基础的操作软件。在一个实例中,计算单元被配置为具有与节点集成或被可操作地耦合到节点以使得每个设备能够执行各种过程和操作的有形的硬件元件或机器。在另一示例中,计算单元可以包含被耦合到由每个节点容纳的计算机可读介质(例如,计算机存储介质和通信介质)的处理器(未示出)。 [0141] 驻留在节点上的角色实例支持服务应用的操作,并且可以经由应用编程接口(API)被互连。在一个实例中,这些互连中的一个或多个互连可以经由诸如公共网络1102等网络云而被建立。网络云用于互连诸如角色实例等资源,其可以跨各种物理主机(诸如节点 1132和1134)而被可分散地放置。另外,网络云促进通过连接在数据中心1116中运行的服务应用的角色实例的信道的通信。作为示例,网络云可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这样的网络环境在办公室、企业范围的计算机网络、内联网和因特网中很常见。相应地,网络在本文中不再进一步描述。 [0142] 在本文中示出和描述的示例以及未在本文中具体描述但是在本公开内容的各方面的范围内的示例构成用于使用数据来自动生成应用的示例性装置。例如,图1和图2所示的元件诸如在被编码以执行图3和图4所示的操作时构成用于接收对数据源的选择,并且从数据源导入选择的数据集的示例性装置、用于从选择的数据集推断数据类型的示例性装置、用于为推断的数据类型生成控件类型的示例性装置、用于在从数据自动生成应用时使用生成的控件和选择的数据集来生成布局的示例性装置。 [0143] 除非另有说明,否则本文中示出和描述的公开内容的示例中的操作的执行或执行顺序不是必需的。也就是说,除非另有说明,否则操作可以按照任何顺序执行,并且本公开内容的示例可以包括比本文中公开的更多或更少的操作。例如,预期在另一操作之前、同时或之后执行或进行特定操作在本公开内容的各方面的范围内。 [0144] 当介绍本公开内容的各方面的要素或其示例时,冠词“一个(a)”、“一个(an)”、“该(the)”和“所述(said)”旨在表示存在一个或多个要素。术语“包括(comprising)”、“包括(including)”和“具有(having)”旨在是包括性的,并且表示除了列出的要素之外可以存在附加要素。术语“示例性”旨在表示“……的一个示例”。短语“以下中的一个或多个:A、B和C”是指“A中的至少一个和/或B中的至少一个和/或C中的至少一个”。 [0145] 已经详细描述了本公开内容的各方面,很清楚,在不脱离如所附权利要求中限定的本公开内容的各方面的范围的情况下,可以进行修改和变化。由于在不脱离本公开内容的各方面的范围的情况下可以对上述构造、产品和方法进行各种改变,所以旨在于被包含在以上描述中并且在附图中示出的所有内容应当被解释为是说明性的而不是在限制的意义上来解释。 [0146] 虽然本公开内容容易受到各种修改和替代构造的影响,但是它的某些示出的示例在附图中被示出并且已经在上面被详细描述。然而,应当理解的是,并非旨在于将本公开内容限制于所公开的具体形式,而是相反,本发明覆盖落入本公开内容的精神和范围内的所有修改、替代构造和等同物。