利用异构开发工具的协作软件开发的制作方法

文档序号:21279734发布日期:2020-06-26 23:31阅读:272来源:国知局
利用异构开发工具的协作软件开发的制作方法



背景技术:

计算机和计算系统已经影响了现代生活的几乎每个方面。例如,在工作、娱乐、保健、交通等中通常涉及计算机。

计算机通过执行可执行指令集(即代码)来操作。这些指令由开发者在开发环境中创建以便创建应用。在许多情况下,开发者为了改进计算机的操作并移除代码中存在的任何缺陷(bug)将生成代码的许多不同版本。一旦指令被编译、解译和/或构建,底层的计算机系统就执行指令以提供应用的功能性。

已经创建了不同的工具来辅助开发者编写、编辑、测试和调试应用的可执行指令。这些工具中的一些包括程序代码文本编辑器、源代码编辑器、调试器、以及集成的开发环境(ide)(仅举几例)。生成和调试代码的过程可以通过其他开发者的参与来改进。例如,通过在一个团队里一起工作,团队成员能够共同地协作以审查和改进项目。

本文中所要求保护的主题不限于解决任何缺点或仅仅在诸如以上描述的那些环境中操作的实施例。相反,提供此背景以说明本文中描述的一些实施例可以被实践于其中的仅仅一个示例技术领域。



技术实现要素:

本文中描述的实施例中的至少一些实施例涉及建立协作会话使得一组开发工具可以变得能够由多个协作者实时访问。例如,其中所有者计算机系统和参与者计算机系统都是成员的协作会话被建立。在该协作会话内,协作者(例如,所有者计算机系统和参与者计算机系统)被提供对被本地存储在所有者计算机系统上的多文件工作空间的访问。

这里,一组开发工具被标识。这些工具由所有者计算机系统托管(即,工具驻留在所有者计算机系统上并且由所有者计算机系统管理)。另外,这些工具被配置为在被包括在多文件工作空间内的文件上操作。在工具被标识之后,参与者计算机系统然后被给予对工具的访问,使得参与者计算机系统可以在使用这些工具的同时在多文件工作空间上执行操作。稍后,请求被从参与者计算机系统接收。该请求被定向到多文件工作空间内的特定文件并且使用开发工具中的一个开发工具来生成。以这种方式,协作会话使得参与者计算机系统能够使用所有者计算机系统的开发工具来在所有者计算机系统的多文件工作空间上执行操作。

因此,如以上所指示的,本实施例提供稍后将更详细地讨论的许多显著优点。然而,作为简要的介绍,这些实施例改进多文件工作空间如何被编辑,因为与必须单独地下载工作空间相反,多个实体能够在相同工作空间上工作。另外,这些实体能够继续使用优选的开发工具。以这种方式,实施例不仅改进编辑过程,而且它们还改进计算机系统的底层功能性。

本发明内容不旨在确定所要求保护的主题的关键或必要特征,也不旨在用作确定所要求保护的主题的范围的辅助。相反,本发明内容被提供从而以简化的形式介绍一系列概念。下面在具体实施方式中更充分地描述这些概念。

附图说明

为了描述以上所述的优点和特征以及其他优点和特征可以被获得的方式,各种实施例的更具体的描述将通过参考附图来呈现。在理解这些附图仅仅描绘样例实施例并且因此不被认为限制的情况下,实施例将利用通过对附图的使用的附加的特异性和细节来描述和解释,在附图中:

图1图示了计算机系统的总体视图。

图2提供了协作会话可以如何被发起的示例描绘。

图3图示了协作者可以具有的各种形式和特性。

图4图示了可以用于促进协作会话的示例架构。

图5示出了集成组件如何能够配置客户端应用的用户界面使得其包括协作选项。

图6a图示了客户端应用如何能够访问参与者计算机系统上的本地文件。

图6b图示了客户端应用的通信如何可以被拦截并重新路由。

图7展示了所有者计算机系统如何能够处理由参与者计算机系统提交的请求。

图8展示了多文件工作空间如何可以变得能够由参与者计算机系统访问。

图9展示了所有者计算机系统的工具如何可以变得能够由参与者计算机系统访问。

图10展示了所有者计算机系统如何能够获取新工具。

图11图示了用于提供其中多个协作者能够在多文件工作空间上共同工作的协作会话的示例方法。

具体实施方式

所公开的实施例能够提供其中一组开发工具变得能够由正在参与会话的每个协作者实时访问的协作会话。例如,其中所有者计算机系统和参与者计算机系统都是成员的协作会话被建立。在该协作会话内,协作者(例如,所有者计算机系统和参与者计算机系统)被提供对被本地存储在所有者计算机系统上的多文件工作空间的访问。

这里,一组开发工具被标识。这些工具由所有者计算机系统托管并且被配置为在被包括在多文件工作空间内的文件上操作。在工具被标识之后,参与者计算机系统然后被给予对工具的访问,使得参与者计算机系统可以在使用这些工具的同时在多文件工作空间上执行操作。稍后,请求被从参与者计算机系统接收。该请求被定向到多文件工作空间内的特定文件并且使用开发工具中的一个开发工具来生成。以这种方式,协作会话使得参与者计算机系统能够使用所有者计算机系统的开发工具来在所有者计算机系统的多文件工作空间上执行操作。

所公开的实施例的优点在于:它们允许“所有者协作者”(或简称为“所有者”)甚至当外部协作者(在后文中也被称为“参与者协作者”或简称为“(多个)参与者”)与所有者连接在“协作会话”中时保持在他/她的多文件工作空间的控制中。这里,术语“所有者”可以指代“人类所有者”或“所有者计算机系统”。类似地,术语“参与者”可以指代“人类参与者”或“参与者计算机系统”。相比之下,“所有者计算机系统”和“参与者计算机系统”仅仅指代计算机系统并且不包括人类操作者。附加地,“协作者”指代已经连接了协作会话的任何实体(例如,所有者或参与者),而“协作者”指代协作会话中的实体中的一些或全部(例如,所有者和全部的参与者)。

如还在本文中所使用的,“多文件工作空间”是通过与彼此交互而共同地操作的多个文件的组合(assembly)。作为示例,代码开发项目可以包括源代码的多个文件,其在被执行时一起操作以执行复杂的功能。因此,代码开发项目可以被认为是多文件工作空间。多文件工作空间的其他示例包括但不限于,文本文件和/或文字处理文件(例如,其中文件经由内容表或某个其他链接单元而被链接),或者其中多个数据源被一起连接的任何其他内容。多文件工作空间的又一非限制性示例是被配置为从多个实体接收编辑和/或markdown的基于wiki的工作空间。因此,从本公开,将认识到,实施例能够关于任何种类的多文件工作空间进行操作。为简洁起见,并且仅通过示例的方式,本公开的剩余部分将关注包括源代码的多个文件的多文件工作空间。

这里,还值得注意的是,如本文中所使用的“协作会话”是所有者计算机系统与一个或多个参与者计算机系统连接以便在多文件工作空间上共同协作的事件。在该协作会话期间,参与者计算机系统被提供对被本地存储在所有者计算机系统上的多文件工作空间的访问。另外,提供该访问还包括:使多文件工作空间的上下文能够由参与者计算机系统访问。以这种方式,参与者不需要下载多文件工作空间。代替地,参与者计算机系统用作无头(headless)单元,因为与在参与者计算机系统中的每个上进行相反,编辑和其他操作可以在所有者计算机上被执行。

值得注意的是,协作会话可以出于各种各样的原因被发起。例如,在一些情况下,协作会话可以被建立使得参与者可以帮助所有者执行特定功能。例如,如果协作涉及调试,则所有者可能是负责生成代码的主要人员,而参与者可以是帮助所有者调试该代码的其他开发者。在学习环境中,所有者可以是学生,参与者可以是教师。在备选学习环境中,教授可以是所有者,他/她的学生可以是参与者。在这样的情景中,教授能够指导他/她的学生演示工作空间如何操作。在该上下文中,所有者能够保持在他/她的多文件工作空间上的管理控制。

又一示例情景包括其中面试官建立工作空间环境(例如,编码环境)的编码面试过程。这里,面试官是所有者,被面试者是参与者。在另一示例情景中,所有者不需要是系统的一端上的人类。相反,所有者计算机系统可以是不具有人类所有者的构建服务器。在这种情景中,如稍后将更详细地讨论的,正在使用参与者计算机系统的人类参与者能够出于在调试情景中协作的目的而连接远程代码库(即,“所有者”构建实例)。值得注意的是,在所有者是构建实例的情形中,所公开的实施例使得参与者中的一个(或可能多个)承担对多文件工作空间的控制。与此相关地,参与者还能够承担对多文件工作空间的特定改变的所有权。

已经刚刚描述了实施例可以被实践于其中的情形中的一些,本公开现在将介绍本文中提供的技术益处中的一些。例如,所公开的实施例可以被实现以克服与在多文件工作空间上共同地控制和协作相关联的许多技术难题和计算费用。为了说明,用于调试应用的常规方法常常涉及每个协作者安装工作空间的全局环境/上下文并且然后应用相同的数据(或步骤)以便再现导致发现缺陷的确切问题。这样的过程消耗大量时间、计算资源和人力。如本文中所使用的,“上下文”是指多文件工作空间的状态。

相比之下,所公开的实施例提供显著优点,因为它们使得多个计算机能够连接到单个计算机,其运行工作空间的环境逻辑(例如,服务)并且其维持工作空间的全局上下文,以由此允许协作者在多文件工作空间上共同协作(与具有在多个不同计算机上操作的多个不同工作空间相反)。这些操作导致协作的计算机系统的总效率的显著提高。

所公开的实施例的另一优点在于,因为仅在单个工作空间上进行操作,所以协作者的操作与彼此同步。例如,当多个协作者(例如,代码开发者)被一起连接在协作会话中时,每个协作者(实时)理解所有其他协作者的动作中的至少一些动作以及可能所有动作,因为每个协作者正在相同工作空间上工作。换言之,每个协作者的个体动作与其他协作者的动作“同步”。

刚刚已经描述了所公开的实施例中的一些的各种优点和高级属性,但是本公开现在将关注图1,其呈现了对示例计算机系统的介绍性讨论。在该讨论之后,本公开将关注图2至图10。特别地,这些图图示了各种架构并支持用于根据所公开的原理提供协作会话的图示。最后,本公开将关注图11,其呈现了示例方法,其中一个计算机系统的开发工具被使得能够由不同计算机系统使用。

示例计算机系统

如图1中所图示的,在其最基本配置中,计算机系统100包括各种不同的组件。例如,图1示出了计算机系统100包括至少一个硬件处理单元105(亦称“处理器”)、存储装置110、输入/输出(i/o)接口115、图形绘制引擎120以及各种通信信道125。

存储装置110可以是物理系统存储器,其可以是易失性的、非易失性的、或这两者的某种组合。因此,存储设备115可以被称为计算机可执行指令被存储在其上的“硬件存储设备”。术语“存储器”还可以在本文中用于指代非易失性大容量存储装置,诸如物理存储介质。如果计算机系统100是分布式的,那么处理、存储器、和/或存储能力也可以是分布的。如本文中所使用的,术语“可执行模块”、“可执行组件”、或甚至“组件”可以是指可以在计算机系统100上被执行的软件对象、例程或方法。本文中描述的不同组件、模块、引擎和服务可以被实现为在计算机系统100上执行的对象或处理器(例如,作为分离的线程)。

所公开的实施例可以包括或利用包括计算机硬件的专用或通用计算机,计算机硬件诸如例如一个或多个处理器(诸如硬件处理单元105)和系统存储器(诸如存储装置110),如下面更详细地讨论的。实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理介质和其他计算机可读介质。这样的计算机可读介质可以是能够由通用计算机系统或专用计算机系统访问的任何可用介质。以数据的形式存储计算机可执行指令的计算机可读介质是物理计算机存储介质。承载计算机可执行指令的计算机可读介质是是传输介质。因此,通过举例而非限制,当前实施例可以包括至少两种截然不同的种类的计算机可读介质:计算机存储介质和传输介质。

计算机存储介质是硬件/物理存储设备,诸如ram、rom、eeprom、cd-rom、基于ram的固态驱动器(ssd)、闪速存储器、相位变化存储器(pcm)、或其他类型的存储器、或其他光盘存储装置、磁盘存储装置或其他磁性存储设备、或者可以被用于存储计算机可执行指令、数据或数据结构的形式的期望程序代码工具并且可以由通用计算机或专用计算机访问的任何其他介质。

计算机系统100还可以(经由有线或无线连接)被连接到外部传感器(例如,数据采集设备)。另外,计算机系统100还可以通过一个或多个有线或无线网络130被连接到(多个)远程系统,该(多个)远程系统被配置为执行关于计算机系统100描述的任何处理。

图形绘制引擎120利用(多个)处理器105被配置为将一个或多个对象绘制在计算机系统100的显示器上。结果,用户能够查看计算机系统100的各种功能性的结果。

“网络”(如图1中示出的(多个)网络130)被定义为实现在计算机系统、模块和/或其他电子设备之间的电子数据的运输的一个或多个数据链路和/或数据交换机。当信息通过网络(硬接线的、无线的或硬接线和无线的组合)被传递或提供给计算机时,计算机将连接恰当地视为传输介质。如所图示的,计算机系统100包括用于与(多个)网络130通信的一个或多个通信信道125。传输介质包括可以用于以计算机可执行指令的形式或以数据结构的形式承载数据或期望程序代码工具的网络。另外,这些计算机可执行指令可以由通用计算机或专用计算机访问。以上的组合还应当被包含在计算机可读介质的范围内。

在到达各种计算机系统组件后,以计算机可执行指令或数据结构的形式的程序代码工具可以自动地从传输介质被传递到计算机存储介质(或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,网络接口卡或“nic”)内的ram中,并且然后最终被传递到计算机系统ram和/或被传递到计算机系统处的非易失性计算机存储介质。因此,应当理解,计算机存储介质可以被包含在也(或甚至主要)利用传输介质的计算机系统组件中。

计算机可执行(或计算机可解译)指令包括例如使通用计算机、专用计算机、或专用处理设备执行特定功能或功能组的指令。计算机可执行指令可以例如为二进制文件、诸如汇编语言的中间格式指令或甚至源代码。尽管本主题已经以对结构特征和/或方法动作特定的语言进行了描述,但是应理解,所附权利要求中限定的主题不必限于所描述的特征或以上描述的动作。相反,所描述的特征和动作被公开为实现权利要求的示例形式。

本领域技术人员将认识到,实施例可以在具有许多类型的计算机系统配置的网络计算环境中被实践,许多类型的计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程的消费电子设备、网络pc、微型计算机、大型计算机、移动电话、pda、平板电脑、寻呼机、路由器、交换机、基于云的机器和基础设施等。实施例还可以在分布式系统环境中被实践,在分布式系统环境中通过网络(通过硬接线数据链路、无线数据链路、或通过硬接线数据链路和无线数据链路的组合)链接的本地计算机系统和远程计算机系统均执行任务(例如,云计算、云服务等)。在分布式系统环境中,程序模块可以被定位在本地存储器存储设备和远程存储器存储设备两者中。

附加地或备选地,本文描述的功能性可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以被使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、程序特定或应用特定集成电路(asic)、程序特定标准产品(assp)、片上系统(soc)、复杂可编程逻辑器件(cpld)、中央处理单元(cpu)以及其他类型的可编程硬件。

如以上所讨论的,计算机系统能够提供各种各样的不同功能。根据本文中公开的原理,实施例能够提供多文件实时协作环境。因此,现在将关注图2至图10,这些附图呈现了本文的各种架构并且支持用于使一个计算机的开发工具可用于对另一计算机系统使用的图示。

协作会话

图2图示了其中所有者计算机系统205和参与者计算机系统210都是成员的协作会话200。尤其,所有者计算机系统205和参与者计算机系统210两者都可以包括关于图1的计算机系统100讨论的所有特征和功能性。因此,当引用“计算机系统”时,将理解,这样的系统可以包括计算机系统100的特征。

这里,将理解,在协作会话200中可以存在任何数量的参与者计算机系统。例如,图2示出了参与者“a”、参与者“b”和/或参与者“c”可以被包括在协作会话200中。结果,所有者计算机系统205可以是协作会话200中的第一成员,参与者“a”可以是协作会话200中的第二成员,参与者“b”可以是协作会话中的第三成员,以此类推,可能没有限制。因此,图2仅出于示例目的并且不应当被认为是限制性的。此外,本公开的剩余部分关注描绘仅单个参与者的协作会话;然而,应当理解,原理可以关于任何数量的参与者而被实践。

返回图2,所公开的实施例建立协作会话200,使得参与者计算机系统210能够获得对被存储在所有者计算机系统205上的多文件工作空间的访问。以这种方式,参与者计算机系统210可以操作在远程工作空间上,如同远程工作空间在本地一样。例如,人类参与者可以独立地查看、编辑并且以其他方式操作在远程工作空间上。通过创建这种类型的协作会话,所有协作者(例如,所有者和(多个)参与者)全部能够在单个多文件工作空间上协作。因此,所公开的实施例提供超过传统协作过程的许多效率。

这里,协作会话200可以按各种方式被发起。在一些实施例中,协作者(例如,所有者计算机系统205和参与者计算机系统210)能够通过局域网(lan)连接215与彼此通信。当这种类型的连接可用时,协作会话200可以通过经由lan连接215发送请求220被发起。以这种方式,协作者能够以点对点方式直接通信。

值得注意的是,在一些实例中,所有者计算机系统205可以期望参与者计算机系统210在进入协作会话200之前被认证。如此,实施例能够使用云225来提供认证服务。例如,一些实施例在云225中提供认证服务230。参与者计算机系统210可以使用该认证服务230来将其本身认证到所有者计算机系统205。在认证完成之后,协作会话200可以被发起,并且所有者计算机系统205和经认证的参与者计算机系统210可以共同工作在多文件工作空间上。

在其他实施例中,协作会话200通过经由在云225中操作的中继服务235发送请求220来发起。这里,该中继服务235能够连接在不同本机网络上的计算机。因此,实施例能够使用驻留在云225中的各种服务以便发起协作会话200。

其他实施例使用混合方法来发起协作会话200。例如,如果一些参与者计算机系统位于与所有者计算机系统205相同的lan上,那么请求220可以使用lan被发送到那些参与者计算机系统。另外,如果一些参与者计算机系统不使用与所有者计算机系统205相同的lan,那么请求220可以使用云225中的中继服务235来传送。因此,所公开的实施例能够使用各种方法来发起协作会话200。这里,值得注意的是,所公开的实施例能够智能地选择无论哪个过程对发起协作会话200最有效。相关的注意是,协作会话200能够继续使用相应的网络连接来维持协作者之间的通信。

结束协作会话200可以按各种方式来执行。在一些实施例中,协作会话200通过协作者中的一个协作者的动作结束。例如,协作者中的一个可以选择“结束协作”选项。

在另一实施例中,协作会话可以在超时时段到期后结束。例如,所有者可以已经配置了控制协作会话将保持活动多久的策略。在该时段到期后,参与者到协作会话的连接将被终止。另外,所有者可以设置指示与客户端(例如,ide)的关闭相关联的超时时段的策略。例如,所有者可以设置超时时段以使协作会话在客户端被关闭之后已经经过预定时间段之后终止。这样的特征是有益的,因为其向协作者提供足够的时间来保存任何改变或提供代码内的文档记载。

备选地,其他实施例被配置为当所有者计算机系统关闭和/或所有者登出所有者计算机系统时结束协作会话。在又一备选实施例中,协作会话可以继续甚至在所有者计算机系统已经关闭、睡眠或登出之后运行。作为示例,假设人类所有者决定执行快速重启或必须快速参加会议。这里,因为协作会话仍然是活动的(即使所有者计算机系统可能不是活动的),所以人类所有者将能够在她从她的活动返回时快速地恢复她的工作。由该实施例实现的优点在于如果任何配置选项被调整,那么那些调整可以被持续并且将在协作会话的剩余持续时间内就位。以这种方式,协作者将能够在他们离开的地方快速恢复工作,并且他们能够使用相同的配置选项继续操作。

其他实施例包括记录每个协作者的动作(例如,他们的编辑)的审计跟踪特征。以这种方式,在需求或期望产生时,这些实施例提供可以在稍后时间被审查并分析的审计轨迹。一旦协作会话基于以上讨论的原理结束,然后审计跟踪也可以结束。

类似于图2,图3图示了另一协作会话300。这里,将理解,协作会话300类似于图3的协作会话200。在图3中呈现的情景中,协作会话300包括所有者305和参与者计算机系统310。

特别地,图3示出了所有者305和参与者计算机系统310可以具有的各种特性中的一些。作为示例,所有者305可以不是具有人类操作者的计算机系统。相反,其可以是如图3中所示出的应用的构建实例。相关的注意是,所有者305可以是驻留在云中的无头构建实例。在这样的情景中,各种参与者能够在构建实例所基于的代码库上操作。

备选地,所有者305可以是正在使用第一类型的操作系统(例如,操作系统“a”)的计算机系统(如图3中所示出的)。在一些情形中,人类所有者将操作所有者305。此外,人类所有者能够通过使用驻留在所有者305上的客户端应用在多文件工作空间上执行工作。如本文中所使用的,“客户端应用”可以是使得所有者305能够在多文件工作空间上操作的任何类型的应用。在多文件工作空间是文本文件的汇集的情形中,客户端应用可以是文本编辑器、文字处理程序、或适合于在文本文件上操作的任何其他程序。在多文件工作空间是源代码文件的汇集的情形中,客户端应用可以是源代码编辑器、集成开发环境(ide)、或适合于在源代码上操作的任何其他程序。这里,将理解,这些客户端应用被提供对访问驻留在所有者305上的多文件工作空间的许可。尽管图3示出了所有者305能够操作ide形式(例如,ide“a”)的客户端应用,但是将理解,任何类型的客户端应用可以被使用,而不仅仅是ide。

现在转到参与者计算机系统310,参与者计算机系统310还可以是正在使用操作系统(例如,操作系统“b”)的计算机系统。这里,值得注意的是操作系统“b”可以不同于操作系统“a”。结果,所有者305和参与者计算机系统310不需要使用相同类型的操作系统以便被一起连接在协作会话300中以在多文件工作空间上工作。相关地,参与者计算机系统310不需要使用与所有者305相同类型的客户端应用(例如,ide“b”)。因此,根据本文中公开的原理,参与者能够使用他/她的优选操作系统和客户端应用,不管所有者(例如,所有者305)正在使用的操作系统和/或客户端应用的类型如何。因此,实施例是操作系统不可知论的和客户端应用不可知论的。

到目前为止,本公开已经呈现了协作会话可以被发起的一些方式和协作者的一些特性。鉴于该背景,现在将关注图4,其呈现了可以用于实现所公开的原理的益处的一些架构组件。

图4图示了其中所有者计算机系统405和参与者计算机系统410都是成员的协作会话400。这里,所有者计算机系统405是包括协作代理415的计算机系统。如所图示的,该协作代理415包括一组基本工具420(例如,工具a、工具b和工具c)。尽管图4将协作代理415标识为包括仅仅三个基本工具,但是将理解协作代理415可以包括任何数量的基本工具。关于基本工具420的附加细节将被暂时呈现。

所有者计算机系统405还包括客户端应用425。如早前所讨论的,客户端应用(例如,客户端应用425)可以是文本编辑器、文字处理编辑器、源代码编辑器、ide、或使得用户能够在多文件工作空间上操作的任何其他类型的应用。鉴于该理解,客户端应用425可以包括客户端工具430。类似于以上公开,尽管客户端应用425被示出为包括仅单个工具,但是将理解,客户端应用425可以具有任何数量的工具。相关地,所有者计算机系统405可以具有安装在其上的任何数量的客户端应用。作为示例,客户端应用425可以是具有访问多文件工作空间的许可的集成开发环境(ide)。另外,该ide可以管理/托管一组客户端开发工具。以这种方式,ide可以用于在多文件工作空间上工作。

这里,将理解,基本工具(例如,工具a、工具b或工具c)可以是跨不同类型的客户端应用中的许多或全部的一般常见的服务或其他类型的功能/工具。例如,在代码编辑的上下文中,基本工具420可以包括代码完成工具/服务、代码调试服务(例如,源代码错误检查工具)、代码突出显示服务、代码导航服务、代码彩色化服务(例如,其中不同颜色取决于语法术语所属的什么种类被应用到语法的语法突出显示)、代码重构服务(例如,在不改变其行为的情况下重构代码)、代码提示服务(例如,代码完成)、源代码搜索工具、源代码控制工具和/或灯泡服务(例如,提供对选项的扩展显式的图标服务)。

附加的服务和工具包括但不限于提供成员列表、参数信息、符号服务、源代码源到源编译(transpilation)(例如,改变源代码使得其以不同编码语言读取)、悬停特征、智能打字工具/能力、以及快速代码信息。相关地,客户端工具430可以是对特定客户端应用特定的并且在不同客户端应用之中一般常见的工具。作为示例,客户端工具420可以是对特定类型的ide特定的工具或服务。

根据本文中公开的原理,所有者计算机系统405能够使这些组开发工具(即,一组基本工具420和客户端工具430两者)能够由参与者计算机系统410访问。因为这些工具驻留在所有者计算机系统405上,所以这些工具具有对多文件工作空间的整个上下文的访问。通过使工具能够由参与者计算机系统410访问,人类参与者能够鉴于多文件工作空间的整个上下文来使用这些工具。以这种方式,协作者能够使用了解工作空间的整个上下文的一组工具来在多文件工作空间上工作。

返回图4,所有者计算机系统405还包括集成组件435和一组本地文件440。在一些实施例中,多文件工作空间被包括在所有者计算机系统405上的一组本地文件440内。

如早前讨论的,常常期望使得开发者的团队能够在项目上共同工作。根据本文讨论的原理,协作会话400可以被发起以便使得一个或多个参与者(例如,参与者计算机系统410)能够在被本地存储在所有者计算机系统405上(例如,可能在本地文件440中)的多文件工作空间上协作中连接所有者计算机系统405。

为了实现这些益处,所公开的实施例使集成组件435以轻量级方式附接或相反“钩(hook)”到客户端应用425。例如,集成组件435可以是钩到客户端应用425中以执行“重定向”、“重新路由”以及定制操作的插件或其他类型的客户端扩展。例如,集成组件435(其在所有者计算机系统405上)被配置为将附加的功能性添加到客户端应用425。值得注意的是,这些附加功能性至少涉及建立并维持协作会话400。

为了图示,图5示出了所有者计算机系统500,其类似于图4的所有者计算机系统405。在图5中,所有者计算机系统500包括客户端应用505和集成组件510。客户端应用505还被示出为包括用户界面515。在集成组件510将其自身钩到客户端应用505上之后,然后集成组件510能够扩展客户端应用505的能力。

例如,在一些实施例中,集成组件510将改变用户界面515使得其包括与协作会话相关的附加特征。为了说明,由于集成组件510将其自身附接到客户端应用505,因此一组新协作选项525已经被添加到用户界面515。该组新协作选项525包括选项1、选项2以及选项3。椭圆520展示了任何数量的选项可以被添加到用户界面515。该组协作选项525中的一些可以包括但不限于:(1)发起协作会话的选项,(2)终止协作会话的选项,和/或(3)获取关于特定参与者的信息的选项(例如,参与者的替身可以被显示,并且当替身被选择时,关于参与者的标识信息可以被显示)。

另一选项是“牵制(pin)”到参与者的位置的选项。如所讨论的,实施例使得参与者能够在被本地存储在所有者计算机系统上的多文件工作空间上工作。与该功能性一起被包括的是参与者独立地导航到所有者计算机系统当前未正在操作(或甚至在所有者计算机系统正在操作的位置中)的多文件工作空间内的区域的能力。此外,实施例还使得参与者能够独立地编辑文件。鉴于这些能力,所有者可以期望学习参与者当前正在他/她的多文件工作空间内何处导航/操作。

通过选择牵制到参与者的位置的选项(例如,选项可以是可选择按钮),实施例将所有者自动导航到工作空间内与参与者相同的位置。如果存在多个参与者,那么所有者可以最初被提示以选择特定参与者。作为示例,假设所有者正在编辑在图5中的用户界面515中所示的文件1。同时,参与者可以正在独立地编辑文件2。通过点击牵制到参与者的位置的选项,所有者可以被自动导航到文件2,并且特别地被自动导航到参与者正在编辑文件2的精确位置。因此,尽管实施例使得参与者能够独立地导航并编辑工作空间内的文件,但是实施例还使得所有者能够被自动定向到参与者正在工作的工作空间内的位置。在一些实施例中,该特征还被提供给参与者中的每个。因此,在这些实施例中,每个协作者能够效仿其他协作者的动作。

可以在一组新协作选项525之中被提供的另一选项是调整参与者的访问控制的选项。例如,所有者可以被提供有调整策略使得参与者被允许导航到或编辑仅仅某些文件的选项。又一选项与审计特征相关,其中参与者的动作被记录并且使其可用于由所有者查看。因此,集成组件510能够与客户端应用505交互以增强所有者在协作会话中对参与者的控制。

返回图4,现在将关注参与者计算机系统410。这里,参与者计算机系统410被示出为包括协作代理445、客户端应用450、集成组件455以及本地文件460。这里,协作代理445与协作代理415通信以向参与者计算机系统410提供对驻留在所有者计算机系统405上的多文件工作空间的访问。关于该交互的附加细节稍后将被呈现。此时,值得注意的是,客户端应用450还将用户界面提供给参与者,使得参与者能够查看多文件工作空间(并且因此在其上工作)。

类似于集成组件435,集成组件455还将其自身附接到客户端应用455。现在将参考图6a和图6b讨论该集成组件455的功能性。

图6a示出了包括一组本地文件605a(其类似于本地文件460)和客户端应用610a的参与者计算机系统600a。在这种情景中,参与者计算机系统600a没有集成组件。因此,当参与者计算机系统600a被如此配置时,客户端应用610a能够将请求615a提交到一组本地文件605a。以这种方式,客户端应用610a在被本地存储在参与者计算机系统600a上的文件上操作。

为了使得参与者计算机系统能够以操作系统不可知论的和客户端应用不可知论的方式在远程多文件工作空间上操作,参与者计算机系统使用协作代理和集成组件。这些特征被示出在图6b中。例如,图6b的参与者计算机系统600b包括协作代理605、一组本地文件610b、客户端应用615b、以及集成组件620。在将其自身附接到客户端应用615b之后,集成组件620能够拦截由客户端应用615b发出的请求625b。通常,这些请求625b将使用一组本地文件610b来实现。现在,代替使用来自该组本地文件610b的信息来实现请求625b,集成组件620拦截那些请求625b并将所拦截的请求625b路由到协作代理605。一旦请求625b被接收,协作代理605然后就将所拦截的请求625b路由到驻留在所有者计算机系统上的协作代理(例如,图4中的协作代理415)。

简单地转到图7,图7示出了所有者侧协作代理如何处理从参与者侧协作代理接收的请求。这里,协作会话700包括所有者计算机系统705和参与者计算机系统710。所有者计算机系统705包括协作代理720、一组基本工具725、一组客户端工具730以及一组本地文件735。椭圆740展示了所有者计算机系统705可以具有附加的特征。

在这种情景中,参与者侧协作代理能够接收如结合图6b所描述的所拦截的请求。该请求被示出为图7中的请求715。这里,参与者侧协作代理将请求715传送到协作代理720。在接收了请求715之后,协作代理720然后处理请求715。在一些实例中,处理请求715包括使该组基本工具725能够由参与者计算机系统710访问。相关地,处理请求715可以包括使该组客户端工具730能够由参与者计算机系统710访问。在其他实例中,处理请求715可以包括使该组本地文件735能够由参与者计算机系统710访问。以这种方式,驻留在所有者计算机系统705上的多文件工作空间可以被使得能够由参与者计算机系统710访问。在一些实例中,处理请求715包括对多文件工作空间中的文件进行编辑。编辑包括但不限于改变文件内的文本、添加新文件、删除现有文件、或任何其他文件编辑操作。

这里,值得注意的是,参与者计算机系统710未下载多文件工作空间。代替地,通过使用其协作代理、其集成组件、以及所有者侧协作代理,其被给予对工作空间的访问。以这种方式,参与者计算机系统710能够到达所有者计算机系统705的多文件工作空间并在该多文件工作空间上执行工作。在请求715由所有者计算机系统705处理之后,协作代理720然后将响应传送回到参与者计算机系统710。特别地,协作代理720将响应传送回到参与者侧协作代理。

返回图6b,协作代理605将然后接收由所有者计算机系统生成的任何响应。一旦响应被接收,然后一些实施例就将使响应经由集成组件620被传送回到客户端应用615b。然而,在其他实施例中,协作代理605能够将响应(例如,响应630)直接传送到客户端应用615b。以这种方式,参与者能够看到他/她的处理的请求的结果。

这里,示例将是有帮助的。假设所有者建立其中参与者是成员的协作会话。所有者已经要求参与者帮助他/她调试源代码。所有者通过调试第一文件来开始,而参与者通过调试第二文件来开始。值得注意的是,这些文件中的两者都被包括在多文件工作空间中,并且两者都被存储在所有者的计算机系统上。在该示例中,第二文件被显示在参与者的计算机系统上,即使文件的内容实际上仅仅被存储在所有者的计算机系统上。

另外,参与者能够独立地查看并编辑第二文件的内容,即使所有者当前正在第一文件上工作。以这种方式,多个协作者能够在单个多文件工作空间上共同工作。在一些实例中,所有者和参与者将在相同的文件上工作。当这样的情景存在时,所有者然后将能够(实时)看到由参与者做出的改变,并且参与者将能够(实时)看到由所有者做出的改变。因此,由协作者做出的改变是实时做出的,并且与彼此同步。鉴于该讨论,将理解,参与者被给出他/她正在本地工作空间上工作的错觉,然而实际上工作空间不是本地的。

通过遵循这些原理,所公开的实施例能够向参与者计算机系统提供对被存储在所有者计算机系统上的多文件工作空间的访问。此外,人类参与者能够查看该工作空间并编辑该工作空间。该查看和编辑可以独立于所有者可以正在多文件工作空间上执行的任何查看和编辑来执行。以这种方式,参与者不再需要复制工作空间的上下文以便在该工作空间上工作。另外,参与者能够使用他/她的优选客户端应用,即使该客户端应用不同于所有者的客户端应用。甚至进一步,参与者能够使用所有者的一组工具,这些工具了解多文件工作空间的整个上下文。

现在将关注图8,其提供用于使得参与者能够在多文件工作空间上协作的附加细节。这里,协作会话800包括所有者计算机系统805和参与者计算机系统810。所有者计算机系统805包括协作代理815、客户端应用820、集成组件825以及一组本地文件830。一组本地文件830包括多文件工作空间835。这里,该多文件工作空间835包括一组文件840、多文件工作空间835的上下文845、以及文件目录850。

当协作代理815根据刚刚描述的方式从参与者计算机系统810接收请求时,协作代理815能够处理请求并将响应855返回到参与者计算机系统810。如所示出的,该响应855可以包括文件数据860(即,与一组文件840有关的数据),上下文数据865(即,与上下文845有关的数据)或目录数据870(即,与文件目录850有关的数据)。在一些实例中,该数据是元数据,而在其他实例中,该数据使得参与者计算机系统810能够显示多文件工作空间并接收涉及多文件工作空间的编辑。以这种方式,向参与者计算机系统810提供对多文件工作空间的访问包括提供对工作空间的文件目录、上下文和文件的访问。从该信息,多文件工作空间835可以被显示在参与者计算机系统810上,并且参与者将能够在该多文件工作空间上操作。

从以上公开内容,将理解,所有者计算机系统805正在传送足够的信息(例如,元数据和其他信息)使得参与者计算机系统810能够了解什么被包括在多文件工作空间835内。此外,参与者计算机系统810能够接收足够的信息使得多文件工作空间835的可视化可以被绘制在参与者计算机系统810的用户界面上。以这种方式,参与者计算机系统810正在用作无头实体,因为大多数操作实际上正在所有者计算机系统805上被执行。

例如,参与者计算机系统810将查看和编辑请求提交到所有者计算机系统805。所有者计算机系统805然后处理那些请求并将结果返回到参与者计算机系统810。如此,参与者计算机系统810被提供了它正在本地工作空间上工作的错觉,但是实际上工作空间不是本地的,并且该工作空间上的操作正在由所有者计算机系统805执行。

图9示出了可以被执行的一些附加操作。这里,协作会话900包括所有者计算机系统905和参与者计算机系统910。所有者计算机系统905包括协作代理915。如所讨论的,该协作代理915能够维持一组基本工具920。所有者计算机系统905还包括客户端应用925,该客户端应用925能够维持一组客户端工具930。

根据本文中讨论的原理,实施例还能够使一组基本工具920和一组客户端工具930能够由参与者计算机系统910访问。例如,参与者计算机系统910能够使用驻留在所有者计算机系统905上的工具以便在所有者计算机系统905的多文件工作空间上执行操作。因此,参与者计算机系统910不仅能够查看并编辑所有者计算机系统905上的多文件工作空间,而且其还能够利用所有者计算机系统905上的工具。参与者计算机系统910能够接收包括基本工具数据940和/或客户端工具数据945的信息935。以这种方式,参与者计算机系统910能够利用所有者计算机系统905的开发工具。

在一些实例中,所有者计算机系统可以最初没有参与者计算机系统期望使用的特定工具。图10示出了实施例能够解决这样的情形。这里,协作会话1000包括所有者计算机系统1005和参与者计算机系统1010。参与者计算机系统1010能够在多文件工作空间上执行操作,因为其使用驻留在所有者计算机系统1005上的工具。只要工具由所有者计算机系统1005支持,然后人类参与者就能够使用他/她的优选工具来在多文件工作空间上操作。然而,在一些实例中,所有者计算机系统1005可以最初不支持参与者的优选工具。当这样的情形出现时,然后图10的过程可以被执行。

这里,参与者计算机系统1010将工具请求1015提交到所有者计算机系统1005。该工具请求1015可以指示特定工具当前未被包括在所有者计算机系统1005的一组开发工具(例如,一组基本工具或一组客户端工具)中。值得注意的是,该组开发工具还可以包括各种其他服务。因此,工具请求1015还可以指示参与者计算机系统1010正在请求所有者计算机系统1005获取该特定工具。

响应于工具请求1015,所有者计算机系统1005能够查询互联网、云储存库、服务器、或某个其他数据库以便找到该工具(例如,工具1020)。一旦找到,所有者计算机系统1005然后就能够下载1025该工具1020。在下载1025特定工具1020之后,然后所有者计算机系统1005能够使该特定工具在后续请求1030(例如,后续操作)期间能够由参与者计算机系统1010访问。以这种方式,所有者计算机系统1005使得参与者计算机系统1010能够在参与者计算机系统1010在多文件工作空间上执行操作的同时使用新获取的工具(其驻留在所有者计算机系统1005上)。

作为另一示例,所有者计算机系统1005能够使一组开发工具能够由参与者计算机系统1010访问。要做到这一点,在一些实例中,所有者计算机系统1005将确定参与者计算机系统1010正在试图使用的特定开发工具由所有者计算机系统1005支持。在由所有者计算机系统1005支持特定工具的条件下,然后所有者计算机系统1005将成功地处理特定开发工具正在被使用的请求。

(多个)示例方法

以下讨论现在涉及可以被执行的多个方法和方法动作。尽管方法动作可以按特定顺序讨论或在流程图中被图示为以特定顺序发生,但是不要求特定顺序,除非特别地说明,或者因为一个动作在该动作被执行之前依赖于另一个动作被完成才要求特定顺序。这些方法由计算机系统(例如,图1的计算机系统100)的一个或多个处理器实现。通过示例,计算机系统包括存储计算机可执行代码的一个或多个计算机可读硬件存储介质。计算机可执行代码由一个或多个处理器可执行以使计算机系统执行这些方法。

图11示出了提供其中协作者被提供对多文件工作空间的实时访问的协作会话的示例方法1100。最初,方法1100包括建立其中所有者计算机系统和参与者计算机系统都是成员的协作会话的动作(动作1105)。该动作可以由图4中示出的协作代理415执行。协作通过遵循早前讨论的原理来发起。

然后,方法1100包括提供对被本地存储在所有者计算机系统上的多文件工作空间的访问的动作(动作1110)。这里,该访问被提供给所有者计算机系统(因为工作空间被本地存储在所有者计算机系统上)和参与者计算机系统(通过对所有者计算机系统和参与者计算机系统上的协作代理的使用)两者。类似于上文,该动作也可以至少部分地由协作代理415执行。

接下来,方法1100被示出为包括标识由所有者计算机系统托管的一组开发工具的动作(动作1115)。在一些实例中,工具中的一些(或全部)由协作代理托管和/或管理,而在其他实例中,工具中的一些(或全部)由客户端应用(例如,ide)托管和/或管理。在一些实例中,由协作代理管理的工具和由客户端应用管理的工具两者都能够由参与者计算机系统访问。该动作也可以由协作代理415执行,并且开发工具可以涉及图4中示出的一组基本工具420和/或一组客户端工具430。

方法1100还包括使一组开发工具变得能够由参与者计算机系统访问的动作(动作1120)。该动作可以由协作代理415执行。

最后,方法1100包括从参与者计算机系统接收请求的动作。这里,请求被定向到多文件工作空间中的特定文件。值得注意的是,请求使用开发工具中的一个或多个开发工具来生成。这里,该动作也可以由协作代理415执行。因此,由于协作会话,所有者计算机系统的开发工具被使得能够由参与者计算机系统访问。

因此,所公开的实施例使得协作会话中的协作者能够获得对被存储在所有者计算机系统上的多文件工作空间的访问。通过遵循本文中公开的原理,协作者能够独立地导航并编辑工作空间中的文件。另外,协作者能够利用所有者计算机系统的开发工具,这些工具了解工作空间的整个上下文。以这种方式,协作者不需要下载工作空间或其上下文/环境。结果,显著优点被实现,因为所有编辑和优化可以在单个工作空间上被执行。

本发明可以在不脱离其精神或必要特性的情况下以其他具体形式来实施。所描述的实施例应在所有方面仅仅被认为是说明性的而非限制性的。本发明的范围因此由所附权利要求而非由前述描述指示。在权利要求的等价性的含义和范围内出现的所有改变应被包含在其范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1