CN108885547A - 基于有状态桌面应用的分布式应用 - Google Patents
基于有状态桌面应用的分布式应用 Download PDFInfo
- Publication number
- CN108885547A CN108885547A CN201780022911.6A CN201780022911A CN108885547A CN 108885547 A CN108885547 A CN 108885547A CN 201780022911 A CN201780022911 A CN 201780022911A CN 108885547 A CN108885547 A CN 108885547A
- Authority
- CN
- China
- Prior art keywords
- browser
- executable code
- request
- browser executable
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
一种架构软件模型,其中应用的浏览器可执行代码和非浏览器可执行代码被分发。浏览器可执行代码(诸如标记语言和脚本)由可能在客户端机器上的浏览器执行,而非浏览器可执行代码(诸如作为示例的C#代码)在服务器上或由服务执行。这样的代码通常被包括在单个桌面应用内,其中互操作性组件在其间操作。浏览器可执行代码能够使用请求响应协议与非浏览器可执行代码通信。为了促进与非浏览器可执行代码的通信,在包括请求转换器和响应转换器的环境中提供非浏览器可执行代码。该环境包括接口,该接口遵循浏览器可执行代码所遵循的请求/响应协议。
Description
背景技术
与web交互的典型桌面应用包括浏览器可执行代码和非浏览器可执行代码。浏览器可执行代码的典型示例是标记语言,诸如超文本标记语言(HTML)。样式代码(stylingcode)也可以由浏览器执行,诸如层叠样式表(CSS)。在存在适当的支持运行时的情况下,浏览器还可以执行基于脚本的语言,诸如Javascript和Typescript。浏览器可执行代码通常操作更多面向用户界面的功能。
非浏览器可执行代码是浏览器本身不能执行的代码。这样的代码包括从诸如C、C++或C#等传统编程语言编译的代码,其由操作系统在不使用浏览器的情况下执行。通常,操作系统提供允许浏览器可执行代码和非浏览器可执行代码的互操作性组件。非浏览器可执行代码通常操作更多底层的非面向用户界面的功能。
本文中要求保护的主题不限于解决任何缺点或仅在诸如上述那些环境中操作的实施例。更确切地,本背景仅被提供用于说明可以实践本文中描述的一些实施例的一种示例性技术领域。
发明内容
本文中描述的至少一些实施例涉及一种架构软件模型,其中应用的浏览器可执行代码和非浏览器可执行代码被分发。浏览器可执行代码(诸如标记语言和脚本)由可能在客户端机器上的浏览器执行,而非浏览器可执行代码(诸如作为示例的C#代码)在服务器上或由服务执行。这样的代码通常被包括在单个桌面应用内,其中互操作性组件在其间操作。
根据本文中描述的原理,浏览器可执行代码能够使用请求响应协议与非浏览器可执行代码通信(即使非浏览器可执行代码本身不能直接处理这样的请求),或者生成相应的响应,或者可能甚至完全遵循任何请求/响应类型协议。请求/响应协议对于跨因特网进行通信而言是常见的。
为了促进与非浏览器可执行代码的通信,在包括请求转换器和响应转换器的环境中提供非浏览器可执行代码。该环境包括接口,该接口遵循浏览器可执行代码所遵循的请求/响应协议。
请求转换器经由接口从浏览器可执行代码取得传入请求,将传入请求中的至少一些传入请求中的每个传入请求转换为由非浏览器可执行代码识别的格式,将转换后的请求提供给非浏览器可执行代码。为了缩放,请求转换器还可以确保转换后的请求被路由到非浏览器可执行代码的适当实例。
响应转换器从非浏览器可执行代码中取得传出的非请求/响应协议交互,并且将交互中的至少一部分转换为响应,以经由接口提供回到浏览器可执行代码。同样,为了缩放,响应转换器还可以确保转换后的响应被路由到浏览器可执行代码的适当实例。响应可以是包括对象的复杂响应,对象包括供浏览器执行的一个或多个可执行指令,诸如修改用户界面、或者将用户界面组件与适当的数据输入源或数据输出目标连接。
该模型允许应用作者以相同的方式编写浏览器可执行代码和/或非浏览器可执行代码,而不管该代码将在桌面应用中还是在分布式应用中被实现。此外,由于浏览器可执行代码和非浏览器可执行代码,该模型允许对当前存在的桌面应用的自动或简化分发。
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图说明
为了描述可以获取本发明的上述和其他优点和特征的方式,将通过参考在附图中示出的本发明的具体实施例来呈现上面简要描述的本发明的更具体的描述。应当理解,这些附图仅描绘了本发明的典型实施例,并且因此不应当被认为是对其范围的限制,本发明将通过使用附图利用附加的特征和细节来被描述和解释,在附图中:
图1示意性地示出了包括使用互操作性组件彼此通信的浏览器可执行代码和非浏览器可执行代码并且其中可以在运行时的帮助下运行浏览器可执行代码的脚本的桌面应用;
图2示出了本文中描述的原理可以在其中操作并且可以操作本文中描述的浏览器或者本文中描述的服务器或服务的计算系统;
图3示出了应用可以在其中运行并且其中浏览器可执行代码在浏览器上运行并且非浏览器可执行代码远程运行的分布式环境300;
图4示出了用于创建桌面应用的方法的流程图;
图5示出了根据本文中描述的原理的用于创建分布式应用的方法的流程图;以及
图6示出了用于使用桌面应用作为输入来自动发起创建分布式应用的方法的流程图,该方法可以使用图5的方法来被继续。
具体实施方式
本文中描述的至少一些实施例涉及一种架构软件模型,其中应用的浏览器可执行代码和非浏览器可执行代码被分发。浏览器可执行代码(诸如标记语言和脚本)由可能在客户端机器上的浏览器执行,而非浏览器可执行代码(诸如作为示例的C#代码)在服务器上或由服务执行。这样的代码通常被包括在单个桌面应用内,其中互操作性组件在其间操作。
根据本文中描述的原理,浏览器可执行代码能够使用请求响应协议与非浏览器可执行代码通信(即使非浏览器可执行代码本身不能直接处理这样的请求),或者生成相应的响应,或者可能甚至完全遵循任何请求/响应类型协议。请求/响应协议对于跨因特网进行通信而言是常见的。
为了促进与非浏览器可执行代码的通信,在包括请求转换器和响应转换器的环境中提供非浏览器可执行代码。该环境包括接口,该接口遵循浏览器可执行代码所遵循的请求/响应协议。
请求转换器经由接口从浏览器可执行代码取得传入请求,将传入请求中的至少一些传入请求中的每个传入请求转换为由非浏览器可执行代码识别的格式,将转换后的请求提供给非浏览器可执行代码。为了缩放,请求转换器还可以确保转换后的请求被路由到非浏览器可执行代码的适当实例。
响应转换器从非浏览器可执行代码中取得传出的非请求/响应协议交互,并且将交互中的至少一部分转换为响应,以经由接口提供回到浏览器可执行代码。同样,为了缩放,响应转换器还可以确保转换后的响应被路由到浏览器可执行代码的适当实例。响应可以是包括对象的复杂响应,对象包括供浏览器执行的一个或多个可执行指令,诸如修改用户界面、或者将用户界面组件与适当的数据输入源或数据输出目标连接。
该模型允许应用作者以相同的方式编写浏览器可执行代码和/或非浏览器可执行代码,而不管该代码将在桌面应用中还是在分布式应用中被实现。此外,由于浏览器可执行代码和非浏览器可执行代码,该模型允许对当前现存的桌面应用的自动或简化分发。
如图1所示,桌面应用在桌面环境100中被执行。桌面应用通常包括由浏览器可执行的软件101(下文中称为“浏览器可执行代码”或“浏览器软件”)和浏览器不可执行的软件102(下文中称为“非浏览器可执行代码”或“非浏览器软件”)。图1示出了示例性的现有技术的桌面环境100。
浏览器可执行软件101的示例可以包括超文本标记语言(HTML)、Javascript(JS)或Typescript(TS)。运行时110通常帮助浏览器执行Javascript和Typescript。非浏览器可执行软件102的示例包括例如C#。桌面环境100还包括可以由桌面应用用来保存状态的存储器112。在一个示例中,浏览器可执行软件101被用于呈现用户界面,而非浏览器软件是使用存储库112保存状态的有状态应用。
互操作性组件111促进浏览器可执行软件101与非浏览器可执行软件之间的通信。促进C#软件与浏览器可执行软件之间的通信的互操作性组件111的示例是WINDOWS运行时。但是,其他操作系统也具有用于允许浏览器可执行软件与非浏览器可执行软件通信的互操作性组件。
根据本文中描述的一些实施例,利用该非浏览器可执行软件102而实施的有状态应用是变换链。这样,本文中描述的原理可以使用变换链或图(这些术语在本文中可互换地使用)来操作。变换链是一组互连节点,每个节点可以表示数据源或数据目标。
节点之间存在链接,每个链接表示变换。对于任何给定链接,相关联的变换接收位于该链接的输入端的一个或多个数据源的值的副本,并且生成在位于该链接的输出端的一个或多个数据目标处提供的所得到的值。对于任何给定变换,当其输入端处的一个或多个数据源处的值发生变化时,变换被自动重新评估,从而可能导致变换的输出端处的一个或多个数据目标的值发生变化。节点和链接的作用当然可以反转,其中节点表示数据流,并且链接表示变换。
在一个实施例中,无论变换链有多复杂,变换可以由表达等式、规则、约束、模拟、或者可以接收一个或多个值作为输入并且提供所得到的一个或多个值作为输出的任何其他变换类型的声明性语句来构造。当通过链接不同的变换链以遵循链之间的依赖关系来构建程序时,变换链可以被增强。变换链的部分也可以被委托给其他设备和/或用户。变换图的节点可以封装被包括在给定数据集/数据表内的特定数据(例如,被包括在数据表的数据字段内的数据),该数据可以在所生成的应用中被可视化,如本文中描述的。
由于本文中描述的原理在计算系统和变换链的上下文中操作,因此关于图2的计算系统将首先被描述为用于本文中描述的原理的支持技术。此后,将关于图2至6来描述与浏览器和非浏览器可执行代码的分发有关的进一步细节。
计算系统现在越来越多地采用各种形式。例如,计算系统可以是手持设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统、数据中心、或甚至通常不被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜、手表、手环等)。在本说明书和权利要求书中,术语“计算系统”被广义地定义为包括具有至少一个物理和有形处理器以及能够在其上具有可以由处理器执行的计算机可执行指令的物理和有形存储器的任何设备或系统(或其组合)。存储器可以采用任何形式,并且可以取决于计算系统的性质和形式。计算系统可以被分布在网络环境上,并且可以包括多个组成计算系统。
如图2所示,在其最基本配置中,计算系统100通常包括至少一个硬件处理单元202和存储器204。存储器204可以是物理系统存储器,其可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”在本文中还可以用于指代非易失性大容量存储装置,诸如物理存储介质。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。
计算系统200上还具有通常被称为“可执行组件”的多个结构。例如,计算系统200的存储器204被示出为包括可执行组件206。术语“可执行组件”是一种结构的名称,该结构被本领域普通技术人员在计算领域中很好地理解为可以是软件、硬件或其组合的结构。例如,当以软件实现时,本领域普通技术人员将理解,可执行组件的结构可以包括可以在计算系统上执行的软件对象、例程、方法,无论计算系统的堆中是否存在这样的可执行组件,或者无论可执行组件是否存在于计算机可读存储介质上。
在这种情况下,本领域普通技术人员将认识到,可执行组件的结构存在于计算机可读介质上,使得当由计算系统的一个或多个处理器(例如,由处理器线程)解释时,引起计算系统执行功能。这样的结构可以是由处理器直接计算机可读的(如果可执行组件是二进制的,则是这种情况)。备选地,该结构可以被构造为可解释和/或被编译(无论是在单个阶段还是在多个阶段)以便生成由处理器直接可解释的这样的二进制文件。当使用术语“可执行组件”时,对可执行组件的示例结构的这样的理解完全在计算领域的普通技术人员的理解之内。
本领域普通技术人员还将术语“可执行组件”很好地理解为包括专门或几乎专门以硬件实现的结构,诸如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路内。因此,术语“可执行组件”是针对计算领域的普通技术人员很好地理解的结构的术语,无论是以软件、硬件还是组合实现。在本说明书中,也可以使用术语“组件”、“服务”、“引擎”、“模块”、“虚拟机”、“调度器”、“管理器”、“模块”、“编译器”等。如在本说明书中和在这种情况下使用的,这些术语(无论是否使用修饰条款表达)也旨在与术语“可执行组件”同义,并且因此也具有被计算领域的普通技术人员很好地理解的结构。
在以下描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作是以软件实现的,则(执行动作的相关联的计算系统的)一个或多个处理器响应于已经执行构成可执行组件的计算机可执行指令来指导计算系统的操作。例如,这样的计算机可执行指令可以在形成计算机程序产品的一个或多个计算机可读介质上被实施。这样的操作的一个示例涉及对数据的操纵。
计算机可执行指令(和所操纵的数据)可以被存储在计算系统200的存储器204中。计算系统200还可以包含允许计算系统200通过例如网络210与其他计算系统通信的通信信道208。
虽然并非所有计算系统都需要用户界面,但在一些实施例中,计算系统200包括用于与用户交互的用户界面212。用户界面212可以包括输出机构212A以及输入机构212B。本文中描述的原理不限于精确的输出机构212A或输入机构212B,因为这将取决于设备的性质。然而,输出机构212A可以包括例如扬声器、显示器、投影仪、触觉输出、阀门、致动器、全息图、虚拟现实等。输入机构212B的示例可以包括例如麦克风、触摸屏、全息图、虚拟现实控件、相机、键盘、加速度计、杆、脚踏板、按钮、旋钮、其他指示器输入的鼠标、任何类型的传感器等。
本文中描述的实施例可以包括或利用包括计算机硬件(诸如例如,一个或多个处理器和系统存储器)的专用或通用计算系统,如下面更详细地讨论的。本文中描述的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是能够由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁存储设备、或者可以被用于以计算机可执行指令或数据结构的形式存储期望的程序代码并且能够由通用或专用计算系统访问的任何其他物理和有形存储介质。
“网络”被定义为支持电子数据在计算系统和/或模块和/或其他电子设备之间的传输的一个或多个数据链路。当通过网络或另一通信连接(硬连线、无线或者硬连线或无线的组合)向计算系统传输或提供信息时,计算系统将连接适当地视为传输介质。传输介质可以包括能够被用于以计算机可执行指令或数据结构的形式携带期望的程序代码装置并且能够由通用或专用计算系统访问的网络和/或数据链路。上述的组合也应当被包括在计算机可读介质的范围内。
此外,在到达各种计算系统组件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输介质被自动传送到存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以被缓存在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终传送到计算系统RAM和/或计算系统处的较不易失性存储介质。因此,应当理解,存储介质可以被包括在也(甚至主要)利用传输介质的计算系统组件中。
计算机可执行指令包括例如当在处理器处被执行时引起通用计算系统、专用计算系统或专用处理设备执行特定功能或功能组的指令和数据。备选地或附加地,计算机可执行指令可以将计算系统配置为执行某个功能或功能组。计算机可执行指令可以是例如二进制文件或者甚至在处理器直接执行之前经历一些转换(诸如编译)的指令,诸如中间格式指令,诸如汇编语言或甚至源代码。
虽然已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于以上描述的特征或动作。更确切地,所描述的特征和动作被公开作为实现权利要求的示例形式。
本领域技术人员将认识到,本发明可以在具有很多类型的计算系统配置的网络计算环境中被实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(诸如眼镜)等。本发明也可以在分布式系统环境中被实践,其中通过网络链接(通过硬连线数据链路、无线数据链路或者通过硬连线和无线数据链路的组合)的本地和远程计算系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
本领域技术人员还将理解,本发明可以在云计算环境中被实践。云计算环境可以是分布式的,尽管这不是必需的。在分布式的情况下,云计算环境可以在组织内进行国际分布和/或具有跨多个组织所拥有的组件。在本说明书和以下权利要求书中,“云计算”被定义为用于支持对可配置计算资源(例如,网络、服务器、存储、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在模型被适当部署时可以从这样的模型获取的其他众多优点中的任何优点。
例如,云计算当前在市场中使用,以便提供对可配置计算资源的共享池的普遍且方便的按需访问。此外,可配置计算资源的共享池可以经由虚拟化来被快速供应,并且以低管理工作量或服务提供商交互来被发布,并且然后被相应地缩放。
云计算模型可以由各种特征组成,诸如按需自助服务、广泛网络访问、资源池、快速弹性、测量服务等。云计算模型还可以以各种服务模型的形式出现,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。云计算模型还可以使用不同的部署模型来被部署,诸如私有云、社区云、公共云、混合云等。在本说明书和权利要求书中,“云计算环境”是其中采用云计算的环境。
图3示出了其中可以运行应用的环境300。应用包括两个分布式部分,包括浏览器可执行代码101和非浏览器可执行代码102。然而,软件101和102现在是分布式的,而非如图1的情况在桌面环境100中具有两个软件101和102。浏览器可执行软件101经由浏览器101可执行地保持在客户端301上执行——类似于图1的情况。客户端301的示例是图1的计算系统201。然而,与图1不同,非浏览器可执行代码102现在从客户端301远程运行。例如,非浏览器可执行软件102被示出为在服务器302或服务302内操作。作为示例,服务302可以与云计算环境一起操作。
图3的浏览器可执行代码101可以与图1的浏览器可执行软件101基本相似(如果不相同)。同样,图3的非浏览器可执行代码102可以与图2的非浏览器可执行软件102基本相似(如果不相同)。因此,可以在对应用本身进行最小(如果有的话)重写的情况下来如图3所示部署应用的分布式版本(构成软件101和102的组合)。
应用的该分布式版本甚至可以使用桌面应用作为输入、从中提取软件101和102、并且自动构造将在下面进一步描述的图3中所示的剩余组件来被构造。此外,应用作者或编码人员可以编写应用而不考虑它是否将被部署在桌面环境中(其中浏览器可执行代码和非浏览器可执行代码可以自由地通信)或者它们是否将被远程部署(在这种情况下,它们先前尚不能够自由地通信——但可以根据本文中描述的原理进行通信)。
浏览器可执行代码101可以在浏览器311内被执行,正如图1中那样。浏览器在计算系统的显示器上渲染用户界面元素。例如,如果客户端301是诸如关于图1描述的计算系统100,则浏览器可以在输出机制112A上渲染用户界面元素,并且可以检测由用户关于输入机构112B而发出的关于用户界面控件的输入。从用户的角度来看,图3的体验因此可以与如图1的情况那样直接与本地执行的桌面应用进行接口的体验非常相似。
服务302开放应用程序接口324。客户端浏览器311的相应通信器312可以使用应用程序接口324发出请求(如箭头331所示)。假定协议是请求/响应协议,则服务302将使用由客户端浏览器311的通信器312识别的应用程序接口构造适当的响应。作为示例,由通信器312和服务302识别的应用程序接口可以是REST API(诸如HTTP请求/响应模式)。但是,协议可以是允许进程间通信的任何协议。
为了生成适当的响应,请求转换器321首先取得传入请求并且将其转换为符合由非浏览器可执行软件102识别的API的适当的相应的请求。为了确保会话被启用,请求转换器321还确保该请求被传递给非浏览器可执行软件102的适当实例。非浏览器可执行软件维护状态,并且从而取得该请求、处理它以可能改变非浏览器可执行软件102的实例的状态、并且然后返回适当的响应。
以前,非浏览器可执行软件102和浏览器可执行软件101之间的通信可能非常复杂。然而,现在通信被简化为请求/响应协议。为了适应具有这样的有限模式的复杂通信,复杂响应转换器322利用一系列指令生成复杂响应。这样的指令可以在响应内包括的对象中被传达,其中该对象由浏览器可执行软件101可解释的。作为示例,指令可以在JSON对象内被串行化。
这样的指令可以包括利用仅客户端301知道的一些信息来回调到服务的指令。备选地或附加地,指令可以包括在特定事件发生时改变用户界面的指令。例如,如果用户添加了图库控件,并且指定将由存在于客户端301上的相机的输出来填充图库的图像,则该指令可以用于:如果相机被用于拍照,则浏览器可执行代码将来自该相机的输出后期绑定到图库控件的当前空白区域中。实质上,指令可以预期可能发生的有限数目的预定事件中的一个,并且然后在那些事件发生的情况下指示浏览器可执行代码应该怎么做。
因此,本文中描述的原理提供了一种有效机制,以允许现存桌面应用被分布在客户端与云之间,其中非浏览器可执行代码在云上被执行。此外,这样的应用可以是有状态的,因为非浏览器可执行代码在云中维护状态。此外,经由服务内的控制器处的检查来启用会话,以确保与非浏览器可执行软件的正确实例进行通信。因此,正确的状态和应用与正确的用户相匹配,使得这个概念能够跨可能非常多的不同桌面应用和很多的不同用户而缩放。最后,可以在对每个请求的响应中传达复杂指令,以允许客户端发出进一步请求,或者执行由非浏览器可执行软件指示的其他动作。
如前所述,本文中描述的原理允许编写浏览器可执行代码和非浏览器可执行代码,而不考虑其是否将被包括在集成桌面应用内或不管代码是否将被分布在浏览器与远程服务之间。图4因此示出了用于创建桌面应用的方法400的流程图。图5示出了用于创建分布式应用的方法500的流程图。方法400和500每个开始于相同的动作:访问由浏览器可执行的浏览器可执行代码的实例(动作401)和访问浏览器不可执行的非浏览器可执行代码的实例(动作402)。
根据方法400,通过向桌面应用提供(动作411)浏览器可执行代码的实例和非浏览器可执行代码的实例并且向桌面应用提供允许浏览器可执行代码的第二实例和非浏览器可执行代码的第二实例进行通信的互操作性组件(412)来制定桌面应用。因此,桌面应用被创建。
根据方法500,通过在使用请求响应协议进行通信的浏览器内运行浏览器可执行代码(动作511)来制定分布式应用。非浏览器可执行代码的实例在开放识别浏览器的请求响应协议的接口的组件内被远程运行(动作512)。因此,该接口被用于从浏览器可执行代码接收请求,并且在由非浏览器可执行代码处理之后提供对浏览器可执行代码的相应响应。此外,向远程运行的组件提供请求转换器和响应转换器(动作513)。
此外,如前所述,分布式应用可以从桌面应用被自动创建。图6示出了用于使用桌面应用作为输入来自动发起创建分布式应用的方法600的流程图。首先,访问桌面应用(动作610)。然后,从桌面应用中提取浏览器可执行代码(动作601),并且从桌面应用中提取非浏览器可执行代码(动作602)。这可以通过识别格式(例如,HTML、javascript、C#等)并且基于文件的类型来标识代码是浏览器可执行代码还是非浏览器可执行代码来被自动执行。因为动作601和602可以分别表示在动作501和502中如何访问代码的示例,并且因为方法500可以被自动执行,所以可以从桌面应用自动构造分布式应用。
尽管用结构特征和/或方法动作特定的语言描述了本主题,但应当理解,所附权利要求书中定义的主题不必限于所描述的特征或上述动作、或者上述动作的顺序。更确切地,所描述的特征和动作被公开作为实现权利要求的示例形式。
在不脱离本发明的精神或基本特性的情况下,可以以其他特定形式来实施本发明。所描述的实施例在所有方面将仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化都将被包含在其范围内。
Claims (9)
1.一种计算系统,包括:
一个或多个处理器;
一种或多种计算机可读介质,其上具有计算机可执行指令,所述计算机可执行指令被构造为使得在由所述一个或多个处理器执行时,所述计算系统被引起执行用于发起桌面应用的分发的方法,以使得所述桌面应用的浏览器可执行代码由浏览器可执行并且非浏览器可执行代码由与所述浏览器通信的服务执行,所述方法包括:
访问桌面应用的动作,所述桌面应用包括由浏览器可执行的浏览器可执行代码和浏览器不可执行的非浏览器可执行代码;
分离所述浏览器可执行代码和所述非浏览器可执行代码的动作;
在使用请求响应协议进行通信的浏览器内运行所述浏览器可执行代码的动作;
在组件内运行所述非浏览器可执行代码的动作,所述组件开放识别所述请求响应协议的接口,并且被用于从所述浏览器可执行代码接收请求以及在由所述非浏览器可执行代码处理之后提供对所述浏览器可执行代码的相应响应;
提供请求转换器的动作,所述请求转换器经由所述接口从所述浏览器可执行代码取得传入请求,将所述传入请求中的至少一些传入请求中的每个传入请求转换为由所述非浏览器可执行代码识别的格式,并且向所述非浏览器可执行代码提供转换后的请求;
提供响应转换器的动作,所述响应转换器从所述非浏览器可执行代码中取得传出的非请求/响应协议交互,并且将所述交互中的至少一部分转换为响应,以经由所述接口提供回到所述浏览器可执行代码。
2.根据权利要求1所述的计算系统,所述响应包括对象,所述对象包括供所述浏览器可执行代码执行的一个或多个指令,所述一个或多个指令包括供所述浏览器可执行代码向所述接口发回具有更多信息的请求的回调指令。
3.根据权利要求1所述的计算系统,所述响应包括对象,所述对象包括供所述浏览器可执行代码执行的一个或多个指令,所述一个或多个指令包括供所述浏览器可执行代码在发生一个或多个条件时向所述接口发回请求的回调指令。
4.根据权利要求1所述的计算系统,所述响应包括对象,所述对象包括供所述浏览器可执行代码执行的一个或多个指令,所述一个或多个指令包括用于在发生一个或多个条件时改变由所述浏览器渲染的用户界面的指令,所述用户界面的所述改变包括用户界面组件与数据源的耦合使得所述用户界面组件渲染来自所述数据源的数据,所述用户界面的所述改变包括用户界面控制组件与数据目标的耦合使得所述用户界面控件组件的用户操作引起数据流向数据目标。
5.根据权利要求1所述的计算系统,所述接口服务于所述非浏览器可执行代码的多个实例和与浏览器可执行代码的多个会话,所述请求转换器还引起每个转换后的请求被转发到所述非浏览器可执行代码的匹配实例。
6.根据权利要求1所述的计算系统,所识别的所述接口是进程间通信协议。
7.根据权利要求1所述的计算系统,所述非浏览器可执行代码是有状态应用,所述有状态应用包括变换链,所述变换链包括一组互连节点,所述一组互连节点中的每个节点表示数据源和/或数据目标并且在所述节点之间的每个链接表示一个或多个数据流。
8.根据权利要求1所述的计算系统,所述非浏览器可执行代码是有状态应用,所述有状态应用包括变换链,所述变换链包括一组互连节点,所述一组互连节点中的每个节点表示数据流并且在所述节点之间的每个链接表示数据源和/或数据目标。
9.一种用于发起桌面应用的分发的方法,以使得所述桌面应用的浏览器可执行代码由浏览器可执行并且非浏览器可执行代码由与所述浏览器通信的服务执行,所述方法包括:
访问桌面应用,所述桌面应用包括由浏览器可执行的浏览器可执行代码和浏览器不可执行的非浏览器可执行代码;
分离所述浏览器可执行代码和所述非浏览器可执行代码;
在使用请求响应协议进行通信的浏览器内运行所述浏览器可执行代码;
在组件内运行所述非浏览器可执行代码,所述组件开放识别所述请求响应协议的接口,并且被用于从所述浏览器可执行代码接收请求以及在由所述非浏览器可执行代码处理之后提供对所述浏览器可执行代码的相应响应;
提供请求转换器,所述请求转换器经由所述接口从所述浏览器可执行代码取得传入请求,将所述传入请求中的至少一些传入请求中的每个传入请求转换为由所述非浏览器可执行代码识别的格式,并且向所述非浏览器可执行代码提供转换后的请求;
提供响应转换器,所述响应转换器从所述非浏览器可执行代码中取得传出的非请求/响应协议交互,并且将所述交互中的至少一部分转换为响应,以经由所述接口提供回到所述浏览器可执行代码。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662329101P | 2016-04-28 | 2016-04-28 | |
US62/329,101 | 2016-04-28 | ||
US15/283,164 | 2016-09-30 | ||
US15/283,164 US10802844B2 (en) | 2016-04-28 | 2016-09-30 | Distributed application based off of stateful desktop application |
PCT/US2017/029515 WO2017189649A1 (en) | 2016-04-28 | 2017-04-26 | Distributed application based off of stateful desktop application |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108885547A true CN108885547A (zh) | 2018-11-23 |
Family
ID=60158957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780022911.6A Pending CN108885547A (zh) | 2016-04-28 | 2017-04-26 | 基于有状态桌面应用的分布式应用 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10802844B2 (zh) |
EP (1) | EP3449362A1 (zh) |
CN (1) | CN108885547A (zh) |
WO (1) | WO2017189649A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230335244A1 (en) * | 2022-04-18 | 2023-10-19 | Preventice Solutions, Inc. | Real-time ecg report generation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488143A (zh) * | 2008-01-16 | 2009-07-22 | 重庆安软信息科技有限公司 | 一种新型的web应用和本地应用的交互模式 |
CN101833455A (zh) * | 2010-05-13 | 2010-09-15 | 北京大学 | 把传统软件转化为富客户端软件的代码拆分方法 |
CN101855618A (zh) * | 2007-10-10 | 2010-10-06 | 甲骨文美国公司 | 用于在应用执行期间改变执行环境的方法和系统 |
CN102541629A (zh) * | 2010-09-14 | 2012-07-04 | 微软公司 | 附加元件性能顾问 |
CN102647456A (zh) * | 2012-03-23 | 2012-08-22 | 普华基础软件股份有限公司 | 构建桌面云的方法及系统 |
CN104283909A (zh) * | 2013-07-03 | 2015-01-14 | 中国长城计算机深圳股份有限公司 | 一种兼容桌面应用的云计算方法及装置 |
CN104995601A (zh) * | 2013-03-15 | 2015-10-21 | 谷歌公司 | 切换到本机网页应用程序及从本机网页应用程序切换离开 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893077A (en) | 1995-08-23 | 1999-04-06 | Microsoft Corporation | Method and apparatus for generating and collecting a billing event object within an on-line network |
US6009543A (en) * | 1996-03-01 | 1999-12-28 | Massachusetts Institute Of Technology | Secure software system and related techniques |
US6356946B1 (en) | 1998-09-02 | 2002-03-12 | Sybase Inc. | System and method for serializing Java objects in a tubular data stream |
US7209929B2 (en) | 2003-04-17 | 2007-04-24 | Salesforce.Com, Inc. | Java object cache server for databases |
US7296022B2 (en) | 2003-07-14 | 2007-11-13 | Microsoft Corporation | Method and system for accessing a network database as a web service |
US7409693B2 (en) | 2003-10-30 | 2008-08-05 | International Business Machines Corporation | Method and system for providing version control of parameters in a command-based API using Java serialization |
US20070263650A1 (en) | 2006-05-09 | 2007-11-15 | Srivatsa Sivan Subramania | Method for prioritizing web service requests |
US9311082B2 (en) | 2006-12-29 | 2016-04-12 | Sap Se | System and method for processing graph objects |
US8763008B2 (en) | 2008-09-30 | 2014-06-24 | Ebay Inc. | System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture |
US9229980B2 (en) | 2010-02-23 | 2016-01-05 | Yahoo! Inc. | Composition model for cloud-hosted serving applications |
US20110289140A1 (en) | 2010-05-20 | 2011-11-24 | Salesforce.Com, Inc. | Methods and systems for providing a user interface in a multi-tenant database environment |
CN102446221A (zh) | 2011-12-22 | 2012-05-09 | 南京联创科技集团股份有限公司 | Bs结构软件中的动态树型结构目录检索方法 |
US9223599B1 (en) | 2012-03-30 | 2015-12-29 | Zynga Inc. | Client-side server for client-side scripting languages |
CN102810069A (zh) | 2012-07-16 | 2012-12-05 | 深圳市融创天下科技股份有限公司 | 一种java对象的请求和响应方法、装置、系统和终端 |
AU2013308121A1 (en) * | 2012-08-15 | 2015-02-26 | Calgary Scientific Inc. | Methods and systems for collaborative browsing |
EP2996049A1 (en) * | 2014-09-12 | 2016-03-16 | Kubity | System, method and computer program product for injecting directly into a web browser commands and/or contents created on local desktop applications of a computer device, and vice-versa |
-
2016
- 2016-09-30 US US15/283,164 patent/US10802844B2/en active Active
-
2017
- 2017-04-26 WO PCT/US2017/029515 patent/WO2017189649A1/en active Application Filing
- 2017-04-26 EP EP17733613.8A patent/EP3449362A1/en not_active Ceased
- 2017-04-26 CN CN201780022911.6A patent/CN108885547A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101855618A (zh) * | 2007-10-10 | 2010-10-06 | 甲骨文美国公司 | 用于在应用执行期间改变执行环境的方法和系统 |
CN101488143A (zh) * | 2008-01-16 | 2009-07-22 | 重庆安软信息科技有限公司 | 一种新型的web应用和本地应用的交互模式 |
CN101833455A (zh) * | 2010-05-13 | 2010-09-15 | 北京大学 | 把传统软件转化为富客户端软件的代码拆分方法 |
CN102541629A (zh) * | 2010-09-14 | 2012-07-04 | 微软公司 | 附加元件性能顾问 |
CN102647456A (zh) * | 2012-03-23 | 2012-08-22 | 普华基础软件股份有限公司 | 构建桌面云的方法及系统 |
CN104995601A (zh) * | 2013-03-15 | 2015-10-21 | 谷歌公司 | 切换到本机网页应用程序及从本机网页应用程序切换离开 |
CN104283909A (zh) * | 2013-07-03 | 2015-01-14 | 中国长城计算机深圳股份有限公司 | 一种兼容桌面应用的云计算方法及装置 |
Non-Patent Citations (3)
Title |
---|
BENJAMIN LIVSHITS: "code splitting for network-boundweb 2.0applications", 《PROCEEDINGS OF THE 16TH ACMSIGSOFT INTERNATIONAL SYMPOSIUM ON FOUNDATIONS OF SOFTWARE ENGINEERING》 * |
NABOR C.MENDONCA: "Architectural Options for Cloud Migration", 《COMPUTER》 * |
匿名: "WinJS一Wikipedia", 《HTTPS://EN.WIKIPEDIA.ORG/W/INDEX.PHP?TITLE=WINJS&OLDID=691086765》 * |
Also Published As
Publication number | Publication date |
---|---|
US20170315823A1 (en) | 2017-11-02 |
US10802844B2 (en) | 2020-10-13 |
WO2017189649A1 (en) | 2017-11-02 |
EP3449362A1 (en) | 2019-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210389943A1 (en) | Resource processing using an intermediary for context-based customization of interaction deliverables | |
Petcu et al. | Portable cloud applications—from theory to practice | |
Mathôt et al. | OpenSesame: An open-source, graphical experiment builder for the social sciences | |
del Pilar Salas-Zárate et al. | Analyzing best practices on Web development frameworks: The lift approach | |
Mitrović et al. | Radigost: Interoperable web-based multi-agent platform | |
Hope et al. | Simplifying the interaction between cognitive models and task environments with the JSON Network Interface | |
US10769521B1 (en) | Processing loops in computational graphs | |
JP5822414B2 (ja) | ソーシャルネットワークインターフェイスを使用した汎用シミュレーションシステム | |
CN108885547A (zh) | 基于有状态桌面应用的分布式应用 | |
CN109074253A (zh) | 用于声明性文档创作的共享令牌发出 | |
Spieldenner et al. | FiVES: an aspect-oriented approach for shared virtual environments in the web | |
Chelliah et al. | Architectural Patterns: Uncover essential patterns in the most indispensable realm of enterprise architecture | |
Hellmann | DataSnap: Enabling domain experts and introductory programmers to process big data in a block-based programming language | |
Long et al. | Getting started with Roo | |
Reenskaug | The common sense of object oriented programming | |
Monroe et al. | Disperse: Enabling web-based visualization in multi-screen and multi-user environments | |
Bitterman | Mastering IPython 4.0 | |
Granlund et al. | RFC: A user-friendly system for managing and automating network changes in a secure zone model | |
Tabor et al. | Don't Panic: Mobile Developer's Guide to The Galaxy | |
Chima | Automation of activity learning for children | |
Levar | Web-based platform for dataflow processing | |
de Oliveira | MyIPB Mobile-REST services aggregator for mobile application centered on student | |
Lee et al. | I-typed dmml: A novel dsl for direct manipulation interaction with virtual objects | |
Tran | Componentized Visualization Components with Micro-Frontends | |
Pordeli | The Modern Web and Autonomous Frameworks through Extensibility Products |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |