可远程处理的项目的制作方法

文档序号:6360300阅读:82来源:国知局
专利名称:可远程处理的项目的制作方法
可远程处理的项目
背景技术
一些服务器架构允许应用在服务器上运行,并且允许用户经由因特网浏览器、定制的客户机侧应用等来与该应用交互。例如,服务器可允许用户查看和/或编辑在物理上驻留在该服务器上的文档,而不将该文档下载到客户机器上。当文档与用户可能想要查看或改变的宏或一些其他可执行代码相关联时,提供无缝的用户体验是有问题的。在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域
发明内容

简单来说,这里所描述的主题的各方面涉及远程项 目访问。在各个方面,被托管在服务器上的项目的项目数据被提供给客户机,以供在客户机的开发环境中使用。开发环境可被实例化并被配置成允许用户与该项目交互,就好像该项目只存在于客户机上。客户机和服务器上的组件负责转送来自和前往服务器的数据和消息,以确保用户体验是无缝的。提供本发明内容是为了简要地标识在以下详细描述中进一步描述的主题的一些方面。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。除非上下文清楚地指出,否则短语“此处所描述的主题”指的是具体实施方式
中描述的主题。术语“方面”被当作“至少一个方面”。标识具体实施方式
中所描述的主题的各方面不旨在标识所要求保护的主题的关键特征或必要特征。上述各方面和此处所描述的主题的其它方面是借助于示例说明的,并且不受附图限制,附图中相同的标号指示相似的元素。附图简沭图I是表示其中可结合本文所描述主题的各方面的示例性通用计算环境的框图;图2是概括地表示此处所描述的主题的各方面可以在其中实现的示例性环境的框图;图3是表示根据此处所描述的主题的各方面被配置成用作客户机的装置的框图;以及图4-5是根据本文所描述的主题的各方面的概括地表示可在客户机上发生的示例性动作的流程图;以及图6-7是根据本文所描述的主题的各方面的概括地表示可在服务器上发生的示例性动作的流程图。
具体实施例方式定义如本文所使用的,术语“包括”及其变体被当作开放式术语,表示“包括但不限于”。除非上下文另外清楚地指示出,否则术语“或”被当作“和/或”。术语“基于”被当作“至少部分地基于”。术语“一个实施例”和“一实施例”被当作“至少一个实施例”。术语“另一实施例”被当作“至少一个其他实施例”。其他显式或隐式定义可包括在下文中。示例性操作环境图I示出可在其上实现本文所描述的主题的各方面的合适的计算系统环境100的示例。计算系统环境100仅为合适的计算环境的一个示例,并非旨在对本文所描述的主题的各方面的使用范围或功能提出任何限制。也不应该将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。本文所描述的主题的各方面可与众多其他通用或专用计算系统环境或配置一起操作。可适用于这里所述的主题的各方面的已知计算系统、环境或配置的例子包括个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费电子设备、网络PC、微型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打 印机、包括机顶盒,媒体中心或其他家电的家电设备、嵌入汽车或附加到汽车的计算设备、其他移动设备、包括任何上述系统或设备的分布式计算环境等等。本文所描述的主题的各方面可在由计算机执行的诸如程序模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本文所描述的主题的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。参考

图1,用于实现本文所描述的主题的各方面的示例性系统包括计算机110形式的通用计算设备。计算机可包括能够执行指令的任何电子设备。计算机110的组件可包括处理单元120、系统存储器130以及将包括系统存储器的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例,而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA (EISA)总线、视频电子技术标准协会(VESA)局部总线、也称为夹层(Mezzanine)总线的外围部件互连(PCI)总线、扩展外围部件互连(PCI-X)总线、高级图形端口(AGP)、以及PCI Express (PCIe)。计算机110通常包括各种计算机可读介质。计算机可读介质可以是能由计算机110访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EEPR0M、闪存或其它存储器技术CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语已调制数据信号摂是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM) 131和随机存取存储器(RAM) 132。包含诸如在启动期间帮助在计算机110内的元件之间传输信息的基本例程的基本输入/输出系统133 (BIOS)通常储存储在ROM131中。RAM 132通常包含处理单元120可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图I示出了操作系统134、应用程序135、其它程序模块136和程序数据137。计算机110也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图I示出了从不可移动非易失性磁介质中读取或向其写入的硬盘驱动器141,从可移动非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如⑶ROM或其它光学介质等可移动非易失性光盘156中读取或向其写入的光盘驱动器155。可以在该示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包 括磁带盒、闪存卡、数字多功能盘、其他光盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过诸如接口 140等不可移动存储器接口连接到系统总线121,而磁盘驱动器151和光盘驱动器155则通常由诸如接口 150等可移动存储器接口连接至系统总线121。以上讨论并在图I中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图I中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可与操作系统134、应用程序135、其他程序模块136和程序数据137相同,也可与它们不同。操作系统144、应用程序145、其他程序模块146和程序数据147在这里被标注了不同的附图标记是为了说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定点设备161 (通常被称为鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、触敏屏、写字板等。这些以及其他输入设备通常通过耦合到系统总线的用户输入接口 160连接到处理单元120,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。监视器191或其他类型的显示设备也通过诸如视频接口 190之类的接口连接至系统总线121。除了监视器以外,计算机还可包括诸如扬声器197和打印机196之类的其他外围输出设备,它们可通过输出外围接口 195来连接。计算机110可使用到一个或多个远程计算机(诸如,远程计算机180)的逻辑连接而在联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,但在图I中只示出存储器存储设备181。图I中所示的逻辑连接包括局域网(LAN) 171和广域网(WAN) 173,但也可以包括其它网络。这样的联网环境常见于办公室、企业范围计算机网络、内联网和因特网中。当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接到LAN171。当在WAN联网环境中使用时,计算机110可包括调制解调器172或用于通过诸如因特网等的WAN 173来建立通信的其它装置。可为内置或可为外置的调制解调器172可以经由用户输入接口 160或其他合适的机构连接至系统总线121。在联网环境中,相对于计算机110所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图I示出了远程应用程序185驻留在存储器设备181上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。远稈项目访问如前所述,当被托管在服务器上的文档与用户可能想要查看或改变的宏或一些其他可执行代码相关联时,提供无缝的用户体验是有问题的。图2是概括地表示此处所描述的主题的各方面可以在其中实现的示例性环境的框图。环境可包括服务器205、客户机210、和其他实体(未示出)。服务器205和客户机210可以在一个或多个计算机(例如,结合图I描述的计算机110)上实现或被实现为一个或多个计算机。虽然此处有时使用术语“客户机”和“服务器” 但应当理解,客户机可在具有硬件和/或通常与服务器相关联的软件的机器上实现,同样,服务器可在具有硬件和/或通常与台式、个人或移动计算机相关联的软件的机器上实现。此外,客户机有时候可以用作服务器,反之亦然。有时候,更频繁地用作客户机或服务器的两个或更多个实体可并发地成为对等体、服务器或客户机。在一个实施例中,客户机和服务器可在同一个物理机器上实现。此外,如此处所使用的,术语“服务器”和“客户机”中的每个可以指一个或多个物理或虚拟实体、在一个或多个物理或虚拟实体上执行的一个或多个进程、等因此,服务器可包括一个或多个进程在其上执行的实际物理节点、一个或多个进程在其上执行的虚拟节点、在一个或多个节点上执行的服务、共同提供服务的一组节点、等。服务可包括在一个或多个物理或虚拟实体上执行的一个或多个进程。此外,单个进程可实现一个或多个服务器。在此使用的术语“进程”及其变体可包括一个或多个传统的进程、线程、组件、库、执行任务的对象等等。可以硬件、软件、或硬件和软件的组合来实现进程。在一实施例中,无论如何命名,进程是能够执行或者用于执行动作的任何机制。进程可分布在多个设备上或可位于单个设备上。服务器205可以托管项目组件215,该项目组件215可包括用于编译、执行、确认、修改、或以其他方式操纵软件项目的组件。项目组件内示出的是表示项目223的框。在服务器205的主存储器中,数据结构可用于表示项目230、项目文件夹231和代码文件232。这些数据结构可以是易于被程序使用的形式。例如,这些数据结构可包括被表示为一个或多个二进制比特的,采用适于被处理器处理的格式的元素。在磁盘上,表示项目230的数据可驻留在一个或多个项目文件夹231中。每个项目文件夹231可包括关于一个或多个项的数据。项可包括,例如,对象、工作簿、表格、模块、类、文档页、用户界面对象、项目属性和设置、其他项等等。一个项可包括代码并且可被存储在诸如代码文件232的代码文件中。客户机210可托管用于软件开发的开发环境220。在查看服务器205上的文档时,用户可以指示他想要查看与该文档相关联的代码。例如,用户可以按下因特网浏览器窗口中的一个按钮。响应于该指示,可以创建允许用户查看、编辑、调试和以其他方式与文档代码交互的开发环境。该开发环境可驻留在服务器205、客户机210、或一个或多个其他实体(未示出)上,或者具有服务器205和客户机210上的组件。在一个实施例中,客户机210可通过执行该客户机210上的一个或多个进程来创建开发环境。在另一个实施例中,客户机210可经由因特网浏览器查看在另一个实体(例如,服务器205)上托管的开发环境。在一个实施例中,开发控制器245可以负责调用和配置开发环境。为此,开发控制器245可联系代理240并获得关于项目223的数据。使用该数据,开发控制器245将项目224配置成与项目223相同或相似(例如,改变了文件位置、系统变量等)。例如,开发控制器245可将项目235配置成对应于项目230,将项目文件夹236配置成对应于项目文件夹231,并将代码文件237配置成对应于代码文件232。开发控制器245可以创建或使用客户机210的文件系统的一个或多个文件夹,并 且可以将与项目223相对应的数据放入该一个或多个文件夹中。为此,开发控制器245可在客户机的存储介质上创建文件夹,并将文件和其他数据放入文件夹中。在客户机上创建的文件夹可以对应于在服务器上存在的项目的文件夹(但它们可以被不同地命名)。类似地,客户机上的文件夹中的文件和其他数据对应于在服务器上存在的项目的文件和其他数据(但是如果需要,可进行改变以使文件中的数据适合于客户机的环境)。开发控制器245随后可启动开发环境220并将该开发环境220配置成使用一个或多个文件夹中的数据。对于项目的设置,开发控制器245可对项目223中的对应设置进行一些改变。例如,项目223可指向服务器205专用的特定目录。通过配置开发环境220,开发控制器245可将服务器的目录映射到客户机210的目录。还可以映射服务器205专用的其他配置数据以便应用于客户机210。在一个实施例中,开发控制器245可经由开发环境220的应用编程接口(API)所展示的对象模型(例如,对象集合或类的集合)来向开发环境220提供配置命令。在另一个实施例中,开发控制器245可被嵌入到开发环境220中,并且可以能够(例如,通过调用非展示对象)更加直接地配置开发环境220。在一个实施例中,开发控制器245可在调用开发环境220之前下载项目223的全部项目数据,并将项目数据置于客户机210上的合适位置。在另一个实施例中,开发控制器可在按需的基础上从服务器205获得数据。在该实施例中,开发控制器245可被嵌入到开发环境220中,并且可以截取或接收特定调用(例如,打开文件的调用、关闭文件的调用、对附加数据的调用等)。例如,在该实施例中,在接收打开文件的调用时,开发控制器245可在允许该调用前进至文件系统I/O组件之前首先从服务器205检索所需要的文件。在一个实施例中,开发控制器245可驻留于客户机210上。在另一个实施例中,开发控制器245可驻留在服务器205或另一个实体上(未示出)。诸如代理240的代理可被包括在项目组件215中。代理240可用于从开发控制器245接收请求,并用于适当地满足这些请求。例如,代理240可从开发控制器245接收对项目数据的请求,可以找到所请求的数据并将所请求的数据提供给开发控制器。在一个实施例中,代理240可以指示被提供给开发控制器245的项目或文件被登出(check out)或以其他方式无法供其他进程编辑或改变,直到开发控制器245指示不再使用该项目或文件。在另一个实施例中,代理240可将对服务器205上项目223的代码的改变通知给开发控制器245,并且开发控制器245可以由此更新开发环境220或者可以适时地执行用于解决冲突的更新的算法。除了接收和响应来自开发控制器的请求以外,代理240可用于在允许关于服务器软件项目的预定义动作在服务器上发生之前尝试与开发控制器245通信。例如,代理240可以在允许改变项目内的项目或代码之前与开发控制器245通信。作为另一个示例,若用户未在客户机上打开特定的代码文件,则代理240可允许改变,但是若用户确实打开了代码文件,则不允许改变。上面的示例不旨在是包含一切的或穷尽的在允许发生针对服务器软件项目的动作之前涉及代理240的全部情形。事实上,基于此处的教导,本领域技术人员可认识到代理240可适于允许或不允许针对服务器软件项目的动作的许多其他情形,而不背离此处所描述的主题的方面的精神或范围。此外,为了确定何时需要涉及代理240,代理240可被配置成接收或截取项目组件215的一个或多个组件所生成的特定命令,并采取针对这些命令的额外动作。 代理240可将与项目相关联的文档的结构中的改变通知给开发控制器245。例如,新表可被添加到电子表格。在新表已被添加之后,代理240可向开发控制器245传递关于该新表的相关数据。作为响应,开发控制器可以配置开发环境220以识别该新表。这可允许例如使用开发环境220的软件开发者创建访问新表的代码。此外,这样做可允许智能编辑工具在经由自动完成或类似技术进行编辑期间,向软件开发者通知该新表。在一个实施例中,在客户机上打开的服务器上的文档最初可能不具有相关联的项目。该文档在客户机中正在被查看时,该文档的软件项目可以被创建。在该实施例中,代理240可向开发控制器245发送数据,开发控制器可使用该数据在客户机210上为该项目创建和配置开发环境。开发控制器245可在不同时间将已对项目224进行的改变发送到代理240。例如,当用户保存项目或其一部分时,开发控制器245可将被保存的项目或其一部分发送到代理240。作为另一示例,当用户尝试经由开发环境220来执行项目代码、或关闭开发环境220时,这可以是使开发控制器向代理240发送项目数据的触发器。当代理240接收这些改变时,代理可适时地更新项目223。图3是表示根据此处所描述的主题的各方面被配置成用作客户机的装置的框图。图3中示出的组件是示例性的且不意味着包括一切的可能需要或包括的组件。在其他实施例中,结合图3描述的组件和/或功能可被包括在其他组件(示出或未示出)中或者被放置在子组件中而不背离此处所描述的主题的各方面的精神或范围。在某些实施例中,结合图3所描述的组件和/或功能可跨多个设备地分布。图3的组件可由诸如图I的处理单元120的处理器来实现或执行。图3的装置可托管或实现图2的客户机210。转向图3,装置305可包括开发组件310、存储330、通信机制335、和其它组件(未示出)。装置305可包括一个或多个计算设备。这些设备可包括,例如,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、蜂窝电话、个人数字助理(PDA)、游戏设备、打印机、包括机顶盒、媒体中心或其他电器在内的电器、汽车嵌入式或附连的计算设备、其他移动设备、包括以上系统或设备中的任一种的分布式计算环境等。可被配置成用作装置305的示例性设备包括图I的计算机110。
通信机制335允许装置305和其它实体通信。例如,通信机制335可允许装置305与托管服务器软件项目的服务器进行通信。通信机制335可以是结合图I描述的网络接口或适配器170、调制解调器172或用于建立通信的任何其它机制。存储330是能够提供对与软件开发相关联的数据的访问的任何存储介质。此处使用的访问可包括读数据、写数据、删除数据、更新数据、以及包括以上两个或更多个的组合等。存储330可包括文件系统、数据库、诸如RAM等易失性存储器、其它存储、以上的某种组合等,并可以分布在多个设备中。存储330可以是外部的、内部的、或包括对于装置305而言内部的以及外部的组件。开发组件310可包括开发环境315、开发控制器320、用户界面325、以及其他组件(未示出)。如这里所使用的,术语组件要被当作包括以下的全部或一部分来理解设备、一个或多个软件模块或其部分的集合、一个或多个软件模块或其部分与一个或多个设备或其部分的某种组合等等。 用户界面325用于接收指示被托管在服务器上的软件项目的输入。如前所述,在一个实施例中,用户可经由因特网浏览器来浏览服务器上的文档。当用户已经发现了他对软件项目进行修改的文档,该用户可通过点击(作为用户界面325来显示的)因特网浏览器的按钮、选择菜单项、或以其他方式与因特网浏览器交互,来指示他想要查看或编辑与文档相关联的软件项目。开发环境315可用于托管客户机软件开发项目,并经由用户界面325来提供对客户机软件开发项目的访问。开发环境315可包括可通过其配置开发环境315的界面317。如前所述,该界面可展示允许外部实体(诸如开发控制器320)配置和控制开发环境315的对象、类、功能的集合等。开发控制器320用于建立与服务器的通信通道,并经由该通信通道获得关于服务器软件项目的项目数据。项目数据指示软件项目的结构和代码。结合获得项目数据,开发控制器320还用于创建与服务器软件项目相对应的客户机软件项目。该客户机软件项目可以与服务器软件项目不同(例如,不同的目录、不同的系统变量等),使得开发环境315可在不必知晓服务器上的软件项目的布局的情况下访问装置305上的客户机软件项目。结合创建客户机软件项目,开发控制器320还可用于经由界面317来配置开发环境315以访问客户机软件项目。 开发控制器320可用于向服务器提供指示对客户机软件项目进行的更新的数据。如前所述,这可针对特定事件(例如,来自服务器的对任何更新的请求,用户关闭开发环境315,用户点击开发环境315的保存按钮,用户点击开发环境315的执行按钮,其他事件等)而发生。开发控制器320还可用于接收指示改变的数据并配置开发环境以识别该改变,该改变是针对与服务器相关联的文档的结构作出的。例如,新表可被添加到与服务器软件项目相关联的电子表格。作为另一示例,另一部分可被添加到与服务器软件项目相关联的文字处理文档。在开发控制器320已经配置开发环境315以识别对文档的改变之后,开发环境315可在软件开发中更好地辅助用户。例如,开发环境315可辅助开发环境内的自动完成活动(例如,建议对象、方法、或其他名称)作为另一示例,开发环境315可以能够确定代码是否引用文档的现有对象,并且可以适时地标记误差。
如果用户点击或以其他方式激活开发环境的执行控制以执行与项目相关联的代码,则开发控制器320可向服务器提供对客户机项目的任何更新并向服务器发送执行服务器软件项目的代码的指令。虽然开发控制器320被示为与开发环境315是分开的,但在另一环境中,开发控制器320可以是开发环境的一部分。在该实施例中,开发控制器320可以不需要使用接口 317来配置或控制开发环境315。图4-7是概括地表示根据此处所描述的主题的各方面的可发生的动作的流程图。为解释简明起见,结合图4-7来描述的方法被描绘和描述为一系列动作。可以理解和明白,此处所描述的主题的各方面不受所示出的各动作和/或各动作次序的限制。在一个实施例中,各动作以如下描述的次序发生。然而,在其它实施例中,各动作可以并行地发生、以另一次序发生、和/或与此处未呈现和描述的其它动作一起发 生。此外,并非所有示出的动作都是实现根据此处所描述的主题的各方面的方法所必需的。另外,本领域的技术人员将了解和明白,该方法也可以替代地经由状态图而被表示为一系列相互关联的状态或者被表示为事件。图4-5是根据本文所描述的主题的各方面的概括地表示可能在客户机上发生的示例性动作的流程图。转向图4,在框405处,动作开始。在框410,接收输入以访问被托管在服务器上的软件项目。例如,参考图2-3,用户界面325接收输入(例如,对按钮的鼠标点击),该输入指示用户期望编辑软件项目223。在框415,建立与服务器250的通信信道。例如,参考图2,开发控制器建立与服务器205的代理240的网络连接。在框420,从服务器获得项目数据。项目数据指示服务器软件项目的结构和代码。服务器软件项目的结构和代码可用于创建与服务器软件项目相对应的客户机软件项目。例如,参考图2,开发控制器245从代理240获得关于项目223的项目数据。在框425,在客户机上创建与服务器软件项目相对应的客户机软件项目。在一个实施例中,该软件项目可使用只存在于客户机上的主存储器中的数据结构来创建。在另一个实施例中,该软件项目可使用主存储器中和/或磁盘上的数据结构来创建。例如,参考图2,开发控制器可在客户机210上创建客户机软件项目224。在框430,开发环境被适当地配置成访问客户机软件项目。例如,参考图2,开发环境220被配置成访问客户机软件项目224。在一个实施例中,将开发环境配置成访问客户机软件项目可简单地包括指示项目文件在客户机的存储介质上的位置。例如,这可通过在调用开发环境时传递一个或多个参数来完成。在另一个实施例中,这可包括启动开发环境和使用开发环境的编程接口来配置开发环境。在框435处,可以执行其他动作(如果存在)。在图5中示出可能发生的其他动作中的一些。转向图5,框505-520指示可能在服务器上的文件结构改变时发生的动作。例如,在框505,这些动作开始。在框510,客户机接收指示文档的结构的改变的数据。例如,表可被添加到服务器的工作簿。在框515,开发环境被配置以识别改变。在框520处,可以执行其他动作(如果存在)。框525-540指示可能在有事件在客户机上发生时发生的动作。例如,在框505,这些动作开始。在框530,客户机的开发环境可接收命令,诸如保存项目或其一部分的命令、关闭项目的命令、执行项目的代码的命令等。作为响应,在框535,客户机可向服务器发送指示在开发环境中作出的改变的数据。在框540处,可以执行其他动作(如果存在)。框545-560指示可能在服务器软件项目发生改变时发生的动作。例如,在框505,这些动作开始。在框550,客户机接收指示对服务器软件项目所做的改变的数据。例如,代码或对象可被改变、添加或删除,设置可被改变,等。在框555,客户机软件项目和开发环境可根据改变来配置。在框560处,可以执行其他动作(如果存在)。图6-7是根据本文所描述的主题的各方面的概括地表示可在服务器上发生的示例性动作的流程图。转向图6,在框605处,动作开始。在框610处,接收访问服务器软件项目的请求。例如,参考图2,服务器205可接收访问服务器软件项目223的请求。在框615,可建立与客户机的开发控制器的通信通道。例如,参考图2,可在代理240与开发控制器245之间建立通信通道。 在框620,经由通信通道向开发控制器提供关于项目的数据。该数据指示用于创建客户机软件项目以及配置客户机上的开发环境的服务器软件项目的结构和代码。在框625处,可以执行其他动作(如果存在)。在图7中示出可能发生的其他动作中的一些。转向图7,框705-720指示可能在服务器上的文件结构改变时发生的动作。例如,在框705,这些动作可以开始。在框710,服务器上的代理可以确定文档的结构被改变。例如,表可被添加到电子表格。作为响应,在框715,代理可以发送指示客户机的开发控制器的改变的数据。在框720处,可以执行其他动作(如果存在)。框725-740指示可能响应于在服务器上发生的事件而发生的动作。在框725,动作开始。在框730,获得服务器命令。如果服务器命令是需要项目的已更新副本的命令,则在框735,代理检查客户机以确定客户机上是否已经作出任何改变。在框740处,可以执行其他动作(如果存在)。例如,如果已经在客户机上作出改变,则代理可从开发控制器获得改变并用该改变来更新服务器软件项目。框745-760指示可能响应于来自客户机的消息而发生的动作。在框745,动作开始。在框750,从客户机接收项目的改变。作为响应,在框755,代理可根据改变来更新服务器软件项目。如果服务器接收到指示客户机已经或正在关闭项目的消息,则代理可以移除锁或改变访问权限以允许采用关于服务器项目的改变或其他动作。在框760处,可以执行其他动作(如果存在)。图5和7中指示的动作不旨在包含一切的或穷尽的可在服务器或客户机处采取的其他动作。基于此处的教示,本领域技术人员在不背离此处所描述的主题的方面的精神或范围的前提下可认识到可在服务器或客户机上发生的其他动作。如从上述详细描述中可以看到,已经描述了关于远程项目访问的各方面。尽管本文所描述的主题的各方面易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而,应当理解,并不旨在将所要求保护主题的各方面限制于所公开的具体形式,而是相反地,目的是要覆盖落入本文所描述的主题的各方面的精神和范围之内的所有修改、替换构造和等效方案。
权利要求
1.一种至少部分地由计算机实现的方法,所述方法包括 在客户机处,接收输入以访问被托管在服务器上的服务器软件项目; 建立与所述服务器的代理组件的通信通道,所述代理组件在操作上结合在所述服务器上发生的关于所述服务器软件项目的一个或多个预定义动作来与所述客户机通信; 从所述代理组件获得关于所述服务器软件项目的项目数据,所述项目数据指示所述服务器软件项目的结构和代码; 在客户机上,根据所述服务器项目数据来创建与所述服务器软件项目相对应的客户机软件项目;以及 配置开发环境以访问所述客户机软件项目。
2.如权利要求I所述的方法,其特征在于,接收输入以访问被托管在服务器上的服务器软件项目包括从被托管在所述客户机上的因特网浏览器的控件接收输入,所述因特网浏览器显示包括与所述服务器软件项目相关联的文档的页,所述代码在被执行时执行与所述文档的数据有关的操作。
3.如权利要求I所述的方法,其特征在于,根据所述服务器项目数据来创建与所述服务器软件项目相对应的客户机项目包括在所述客户机的存储介质上创建文件夹并将文件置于所述文件夹中,所述文件夹对应于在所述服务器上使用的用于所述服务器软件项目的文件夹,所述文件对应于在所述服务器上使用的用于所述服务器软件项目的文件。
4.如权利要求I所述的方法,其特征在于,还包括接收保存所述客户机软件项目的数据的指示,并且作为响应,向所述代理组件发送指示在所述开发环境中作出的改变的数据。
5.如权利要求I所述的方法,其特征在于,还包括接收指示所述服务器软件项目的改变的数据,并且作为响应,根据所述改变来配置所述客户机软件项目和开发环境。
6.一种具有计算机可执行指令的计算机存储介质,所述计算机可执行指令在被执行时执行以下动作,包括 在服务器处,接收访问服务器软件项目的请求; 建立与客户机的开发控制器的通信通道,所述客户机的所述开发控制器在操作上用于创建与所述服务器软件项目相对应的客户机软件项目以及配置开发环境以访问所述客户机软件项目;以及 经由所述通信通道向所述开发控制器提供关于所述服务器软件项目的项目数据,所述项目数据指示用于创建所述客户机软件项目和配置所述开发环境的所述服务器软件项目的结构和代码。
7.如权利要求6所述的计算机存储介质,其特征在于,接收访问服务器软件项目的请求包括接收访问与文档相关联的服务器软件项目的请求,所述服务器软件项目的所述代码在被执行时执行与所述文档的数据有关的操作。
8.如权利要求7所述的计算机存储介质,其特征在于,还包括向所述开发控制器发送指示所述文档的结构的改变的数据,所述数据由所述开发控制器用来更新所述开发环境以识别所述改变。
9.如权利要求6所述的计算机存储介质,其特征在于,还包括在所述服务器软件项目上放置锁,接收对所述客户机已经或正在关闭所述客户机软件项目的指示,并且响应于所述指示而移除所述锁。
10.如权利要求6所述的计算机存储介质,其特征在于,还包括获得修改所述代码的请求,并且作为响应,向所述开发控制器发送消息,所述消息请求所述开发控制器指示是否已经对所述客户机软件项目作出改变。
11.如权利要求10所述的计算机存储介质,其特征在于,还包括,如果已经对所述客户机软件项目作出改变,则从所述开发控制器获得所述改变并且用所述改变来更新所述服务器软件项目。
12.一种处于计算环境中的装置, 包括 用户界面,操作上用于接收指示被托管在服务器上的服务器软件项目的输入; 开发环境,操作上用于托管客户机软件开发项目并经由所述用户界面提供对所述客户机软件开发项目的访问,所述开发环境包括可通过其配置所述开发环境的编程接口 ;以及 开发控制器,操作上用于建立与所述服务器的通信通道,并且经由所述通信通道获得关于所述服务器软件项目的项目数据,所述项目数据指示所述服务器软件项目的结构和代码,所述开发控制器操作上还用于创建与所述服务器软件项目相对应的客户机软件项目,所述开发控制器操作上还用于经由所述编程接口来配置所述开发环境以访问所述客户机软件项目。
13.如权利要求12所述的装置,其特征在于,所述开发控制器操作上还用于向所述服务器提供指示对所述客户机软件项目作出的更新的数据。
14.如权利要求12所述的装置,其特征在于,所述开发控制器操作上还用于向所述服务器提供执行所述服务器软件项目的代码的指令。
15.如权利要求12所述的装置,其特征在于,所述开发控制器操作上还用于接收指示对与所述服务器软件项目相关联的文档结构作出的改变的数据,并且用于配置所述开发环境以识别所述改变以用于所述开发环境内的自动完成的活动。
全文摘要
这里所描述的主题的各方面涉及远程项目访问。在各个方面,被托管在服务器上的项目的项目数据被提供给客户机,以供在客户机的开发环境中使用。开发环境可被实例化并被配置成允许用户与该项目交互,就好像该项目只存在于客户机上。客户机和服务器上的组件负责转送来自和前往服务器的数据和消息,以确保用户体验是无缝的。
文档编号G06F9/06GK102859512SQ201180020993
公开日2013年1月2日 申请日期2011年4月26日 优先权日2010年4月29日
发明者王恩宙, R·哈比卜海 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1