CN100354830C - 实现分布式程序执行的方法 - Google Patents

实现分布式程序执行的方法 Download PDF

Info

Publication number
CN100354830C
CN100354830C CNB028241878A CN02824187A CN100354830C CN 100354830 C CN100354830 C CN 100354830C CN B028241878 A CNB028241878 A CN B028241878A CN 02824187 A CN02824187 A CN 02824187A CN 100354830 C CN100354830 C CN 100354830C
Authority
CN
China
Prior art keywords
client
server
server system
steps
following
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.)
Expired - Lifetime
Application number
CNB028241878A
Other languages
English (en)
Other versions
CN1599901A (zh
Inventor
F·皮尔特
M·里奇特伯格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US09/970,038 external-priority patent/US7117243B2/en
Priority claimed from US09/970,037 external-priority patent/US6952714B2/en
Priority claimed from US09/970,462 external-priority patent/US7330872B2/en
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN1599901A publication Critical patent/CN1599901A/zh
Application granted granted Critical
Publication of CN100354830C publication Critical patent/CN100354830C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

在一个方面,接收到文件类型和程序之间的映射,客户端系统文件以图形化的方式加以呈现,接收到对图形描绘的选择,标识出与所选择的文件相关联的程序,发出一个执行标识出的程序的请求。在另一方面,以图形化地方式呈现服务器系统文件,接收到对图形描绘的选择,把选择传输给服务器系统,接收到一个执行相关联程序的请求,执行该相关联程序。在又一方面,以图形化方式呈现web服务器文件,接收到一个执行第一个程序的请求,该请求包括涉及与文件相关联的第二个程序的信息。检查来自第二个程序的应用输出数据并由第一个程序对其格式化并把接收到的应用输出数据显示给用户。

Description

实现分布式程序执行的方法
技术领域
本发明总体上涉及在客户端-服务器网络中分布式程序执行。更具体而言,本发明涉及用于当数据文件和可执行程序位于不同的计算节点上时自动地执行与数据文件相关联的程序的方法。
背景技术
在采用基于命令行的操作系统的桌面计算机中,例如来自华盛顿州雷蒙德的微软公司的磁盘操作系统(DOS)或者来自纽约的AT&T公司的UNIX系统启动了对计算机程序的执行,这些操作系统需要用户在命令提示符下输入可执行程序的路径和文件名。在输入路径和文件名之后,用户还要输入一个或多个“参数”,这些参数提供了控制可执行程序执行的附加信息。例如,典型的参数影响程序操作并包括程序将要处理的数据文件的名称。如果参数指定了要处理的数据文件-例如一个表格-而它的内容得不到可执行程序支持-例如字处理器-,那么结果将是从系统故障到杂乱的显示。这个问题还存在于由不同的厂商所出售的同类软件中:来自某一厂商的字处理器通常不能读取与另一厂商的字处理器相关联的文件。
这个问题的一种技术方案涉及自愿命名约定:文件名以时期结尾并且扩展名指定它们的内容。但是,没有任何东西可以确保不同的厂商不采用相同的文件扩展名、文件扩展名是正确的或者文件的内容由扩展名准确地指定。此外,没有任何东西能够确保面对一个扩展名不熟悉的文件时的用户将会使用正确的可执行程序去访问该文件的内容,假定该用户有合适的可执行程序来开始。
来自库珀蒂诺(Cupertino)的苹果计算机的Macintosh操作系统(MacOS),CA为桌面计算机引进了一个对这个问题的技术方案。存储在运行MacOS的计算机上的每个文件都有文件类型和与之相关联的创建者标识符。MacOS下的每个可执行文件都有特殊的文件类型指示该文件是可执行的并且相关的创建者标识符与它能够编辑的文件的创建者标识符相匹配。为了编辑一个数据文件,用户选择了该数据文件的图形描绘,而这自动启动了对共享该数据文件的创建者标识符的相关的可执行程序的执行。如果计算机没有其创建者标识与所选择的数据文件的创建者标识符相匹配的可执行程序,则就会有一个对话框来通知用户事实真相。
到桌面以外看一看,现代的计算机网络由大量计算机系统(称为节点)组成,它们通过通信链路与其它计算机系统通信。典型地讲,一些节点是客户端节点,其它节点是服务器节点。客户端节点公式化(formulate)查询并递送给服务器节点。客户端节点的用户通过运行在客户端节点上的用户界面输入查询。服务器节点估算查询并把响应递送给客户端节点以显示在客户端用户界面上。
通常,服务器节点运行多种由客户端节点访问并执行的应用程序。当客户端节点运行一个应用程序时,该应该程序会在客户端节点或服务器节点上执行,这取决于计算机网络所遵循的计算模型(model)。在基于服务器的计算模型中,服务器节点执行应用程序,只在计算机网络上传送客户端用户界面的控制信息以供由客户端节点显示。在基于客户端的计算模型中,服务器节点把应用程序传输到客户端节点以便客户端节点使用自己的资源执行程序。
现代计算机网络的用户希望有与运行MacOS和华盛顿州雷蒙德的微软公司提供的WINDOWS操作系统家庭的成员的桌面计算机相似的功能。但是,在客户端-服务器网络中,可执行程序、数据文件以及用户的虚拟桌面可能都位于不同的计算机上。这种情况下,对数据文件的选择通常将调用上述操作系统功能,试图在和数据文件所在的同一计算机上启动对应用程序的执行。出于几种原因,这可能不是用户所希望的行为:存储数据文件的计算机可能没有想要的应用程序;存储数据文件的计算机可能是共享的,在执行可执行程序时易于使其他用户遭受显著的性能下降,等等。因此,希望提供促进分布式程序执行的设备和方法,由此在一台计算机上选择数据文件或它的表示以便启动另一计算机上的相关可执行程序的执行。
发明内容
本发明涉及用于分布式程序执行的方法。在一个方面,本发明涉及在包括一个客户端系统和多个服务器系统的网络中用于分布式程序执行的方法。该方法包括下列步骤:接收规定数据文件类型和要在服务器上执行的可执行程序之间的关联的映射。该方法还包括下列步骤:呈现客户端系统上存储的数据文件的图形描绘,并接收对数据文件的图形描绘的选择。该方法还包括下列步骤:用接收到的映射标识与所选择的数据文件的类型相关联的可执行程序并发送去执行该标识出的可执行程序的请求。
在一个实施例中,映射包括与数据文件的类型、一个与服务器之间连接的程序、用于处理数据的可执行程序以及作为可执行程序输入的其它参数有关的信息。在另一实施例中,映射可以定期更新或在需要时更新。另一实施例中,客户端系统上的文件被修改以便包括接收到的映射。客户端可以从映射标识该可执行程序和它的位置,并向标识出的一个或多个服务器发送去执行该程序的请求。
在另一个方面,本发明涉及在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法。该方法包括:提供用于规定在数据文件的类型和要在服务器系统上执行的可执行程序之间的关联的映射。数据文件存储在客户端系统上。该方法还包括下列步骤:接收一个执行该可执行程序的请求并在服务器上执行该可执行程序。
在又一方面,本发明涉及在包括一个客户端系统和多个服务器系统中用于分布式程序执行的方法。该方法包括下列步骤:呈现服务器系统上存储的数据文件的图形描绘并接收对图形描绘的选择。该方法还包括下列步骤:把对数据文件的图形描绘的选择传输到服务器系统并接收一个执行与所选择的数据文件相关联的可执行程序的请求。该请求被传输到服务器系统。该方法附加地包括:执行与所选择的数据文件相关联的可执行程序。
在一个实施例中,该方法还包括下列步骤:接收与所选择的数据文件相关联的数据。该执行程序使用接收到的数据进行处理。在另一实施例中,接收一个指向所选择的数据文件的指针,并且该指针可以被用来从服务器系统检索与所选择的数据文件相关联的数据。
在又一个方面,本发明涉及在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法。该方法包括下列步骤:接收用于规定数据文件类型和在客户端上执行的可执行程序之间的关联的映射。该方法还包括下列步骤:在服务器系统上存储数据文件,接收对存储的数据文件的选择,用接收到的映射标识出与所选择的数据文件的类型相关联的可执行程序。该方法附加地包括下列步骤:向客户端系统发送一个执行标识出的可执行程序的请求。
在一个实施例中,数据文件在服务器系统上被修改以便包括接收到的映射。可以定期或在需要时更新接收到的文件。
在又一个方面,本发明涉及在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法。该方法包括下列步骤:接收用于规定数据文件的类型和在客户端系统上执行的可执行程序之间的关联的映射。该方法还包括下列步骤:在服务器系统上存储数据文件,在客户端系统上接收对所存储的数据文件的选择,并把对数据文件的选择传输到服务器系统。该方法还包括下列步骤:使用接收到的、规定关联的映射来标识与所选择的数据文件类型相关联的可执行程序。该方法附加地包括下列步骤:向客户端系统发送一个执行标识出的可执行程序的请求并在客户端系统上该执行可执行程序。
在又一个方面,本发明涉及在包括一个客户端系统和多个服务器系统的网络中实现分布式程序执行的方法。该方法包括下列步骤:呈现在web服务器上存储的数据文件的图形描绘。接收一个执行第一个可执行程序的请求,该请求包括涉及与数据文件相关联的第二个可执行程序的信息。第二个程序在客户端系统上执行或在多个服务器系统中的其中一个服务器系统上执行。来自第二个可执行程序的应用程序输出数据由第一个可执行程序接收并为了显示而将其格式化。在其它实施例中,该方法还包括接收第一个可执行程序的步骤。在另一些实施例中,该方法包括下列步骤:接收用于确定要在客户端系统还是在多个服务器系统中的其中一个服务器系统上执行一个标识出的可执行程序的规则。在另一个实施例中,该方法包括用第一个可执行程序显示应用程序输出的步骤。在这些实施例里的一些实施例中,该方法包括接收与数据文件相关联的数据的步骤。
在另一个方面,本发明涉及在包括一个客户端系统和多个服务器系统的网络中实现分布式程序执行的方法。传输数据文件的图形描绘并做出一个执行第一个可执行程序的请求。第一个可执行程序接收应用程序输出数据。该请求可以包括涉及在客户端系统或其中一个服务器系统上执行的第二个应用程序的信息。在一个实施例中,该方法包括提供第一个可执行程序或指向数据文件的指针的步骤。在另一个实施例中,该方法包括用所提供的指针对与该数据文件相关联的数据的请求提供服务的步骤。在又一个实施例中,该方法包括用所提供的指针对与该数据文件相关联的数据的请求提供服务的步骤。在又一个实施例中,该方法包括提供数据文件内容的步骤。
在又一个方面,本发明涉及在包括一个客户端系统和多个服务器系统的网络中实现分布式程序执行的方法。该方法包括通过web系统传输在web服务器上存储的数据文件的图形描绘的步骤。请求客户端系统执行第一个可执行程序以接收应用程序输出。该请求包括涉及在客户端系统或多个服务器系统中的其中一个服务器系统上执行的第二个可执行程序的信息。客户端系统执行第一个可执行程序。在一个实施例中,该方法包括向客户端系统提供第一个可执行程序的步骤。在又一个实施例中,该方法包括在客户端系统接收用于确定要在客户端系统还是在多个服务器系统中的其中一个服务器系统上执行第二个可执行程序的规则。
附图说明
本发明是用所附权利要求中的特征指出的。通过参看下面的描述和附图会更好地理解本发明的上述以及更多的优势,附图中:
图1是通过网络与一组服务器节点通信的客户端节点的实施例的图,其中可以确定一个客户端节点的程序邻居;
图2A是说明一个示例性过程的框图,其中一个服务器按照该过程启动对用于确定客户端节点的程序邻居的应用程序的执行;
图2B是说明一个示例性过程的框图,客户端节点按照该过程启动对用于确定该客户端节点的程序邻居的应用程序的执行;
图2C是说明示例性过程的框图,客户端节点按照该过程使用web浏览器应用程序确定它的程序邻居;
图3A、3B和3C是说明示例性过程的框图,客户端节点按照这些过程从客户端节点上所显示的程序邻居窗口启动应用程序;
图3D是说明一个示例性过程的框图,客户端节点通过该过程从客户端节点上所显示的程序邻居web页面启动应用程序;
图4是基于客户端的计算环境的框图,在这种环境中已经安装了程序邻居应用程序的客户端节点与多个服务器节点中的其中一个服务器节点进行通信;
图5是基于服务器的计算环境的框图,在这种环境中客户端节点与已经安装了程序邻居应用程序的服务器节点进行通信;
图6A是在执行了本发明的程序邻居应用程序之后客户端节点的显示屏幕上的一个示例性显示的截屏图;
图6B是在执行了本发明的程序邻居应用程序之后客户端节点的显示屏幕上的另一示例性显示的截屏图;
图7是一个过程的实施例的流程图表示,按照该过程通知客户端节点与应用服务器上的应用程序使用的可用性有关的信息;
图8A是一个过程的实施例的流程图表示,用户按照该过程通过选择由他或她的客户端节点所寄宿(host)的文件在服务器节点上执行应用程序;
图8B是服务器节点在图8A的实施例中的角色的流程图表示;
图9A是一个过程的实施例的流程图表示,用户按照该过程通过选择由服务器节点提供的数据文件在他或她的客户端节点上执行应用程序;
图9B是服务器节点在图9A的实施例中的角色(role)的流程图表示;
图10A是一个过程的实施例的流程图表示,用户按照该过程通过选择由web服务器寄宿的数据文件执行由服务器节点寄宿的应用程序;
图10B是web服务器在图10A的实施例中的角色的流程图表示。
在附图中,在不同的图中相同的参考标记通常指相同的部分。不必对所述附图进行缩放、强调,而是将其置于此用以说明本发明的原理。
具体实施方式
图1展示了通过网络40与计算系统(应用服务器)30、32、34和36通信的第一计算系统(客户端节点)10和第二计算系统(客户端节点)20。网络40可以是局域网(LAN)或广域网(WAN),例如因特网或万维网。客户端节点10、20的用户可以通过多种连接方式连接到网络40,包括标准电话线、LAN或WAN链接(例如,T1、T3、56KB、X.25)、宽带连接(ISDN、帧中继、ATM)和无线连接。连接可以用多种通信协议(例如,TCP/IP、IPX、SPX、NetBIOS、Ethernet、RS232和直接异步连接)建立。
在一个实施例中,客户端节点10是个人计算机(例如,使用来自x86、680x0、PowerPC、PA-RISC或MIPS处理器家族的微处理器)、智能或哑终端、网络计算机、无线设备、信息设备、工作站、小型机、大型机或其它有图形用户界面和足够的持久性存储以执行通过网络40从应用服务器30、32  34、36下载的应用程序的计算设备。客户端节点10所支持的操作系统可以包括:WINDOWS操作系统家庭的任意成员、MaxOS、JavaOS和UNIX的各种变体(例如,Solaris、SunOS、Linux、HP-UX、A/IX和基于BSD的发布)。客户端节点10可以包括显示器12、键盘14、用于存储下载的应用程序的存储器16、处理器17和鼠标18。存储器16可以提供持久性或易失性存储。
处理器17能够执行位于客户端节点10上的应用程序并在显示屏幕12上显示最后得到的基于窗口的桌面。客户端节点10上的这种本地处理是依照上述基于客户端的计算模型。图1B中描绘了出现在客户端节点10的一个实施例中的典型的基于窗口的桌面。客户端节点20可用的资源被以一个或多个图标100图形化地呈现出来。存储器16被呈现为硬盘图标104。存储器16中存储的下载的应用程序和数据文件呈现为单独的文件图标。例如,存储器16包含下载实现字处理器的应用程序,如图标108所示,并且还包含适于由该字处理程序处理的文档的数据文件,如图标112所示。
典型地,用户利用键盘14、鼠标18或一些其它输入设备(诸如触觉接口,未显示)来操纵桌面。利用输入设备,用户通过选择图标108来启动对字处理器程序的执行。利用字处理器程序,用户操纵包含由图标112所表示的文档的数据文件的内容。但是,用户更可能避免定位和激活字处理器程序,有利于选择数据文件本身。如上所述,带有图形用户界面的最现代的操作系统将检查所选择的数据文件,检索与选择的数据文件相关联的一个或多个参数,标识与所选择的数据文件相关联的、桌面计算机上的可执行应用程序,开始执行相关的应用程序,然后把所选择的数据文件的内容提供给相关联的应用程序以供进行处理。
在其它实施例中,客户端节点20是任意终端(基于Window或非Window系统),或按照基于服务器的计算模型来进行工作的瘦客户端设备。在基于服务器的计算模型中,应用程序的执行全部都发生在应用服务器30、32、34上,用户界面、击键和鼠标移动都被通过网络40传输到客户端节点20。用户界面可以是文本驱动(例如,DOS)或图形驱动的(例如WINDOW)。客户端节点20所支持的平台包括DOS和用于基于window终端的WINDOWS CE。客户端节点20包括显示屏幕22、键盘24、鼠标28、处理器(未显示)和持久性存储器(未显示)。
应用服务器30、32、34和36是控制对网络其它部分(例如,工作站、打印机)的访问的任意计算设备。画出四个应用服务器仅是为了论述方便;您将理解到在本发明的各种不同实施例中可以有更多或更少的应用服务器连接到网络40。服务器30、32、34和36如上所述按照基于客户端的计算模型和基于服务器的计算模型进行工作。
每个应用服务器30、32、34和36都寄宿供客户端节点10和20访问的一个或多个应用程序。客户端节点可用的应用被称为发布的应用。这种应用的例子包括字处理程序(如WORD)和电子表格程序(如EXCEL)(它们都由华盛顿州雷蒙德的微软公司提供)、金融报告程序、顾客注册程序、技术报告程序、顾客数据库程序或应用设置管理器。
在一个实施例中,服务器30、32、34属于相同的域38。在网络40中,域是在一个安全数据库的控制下包括一组应用服务器和客户端节点的子网。在一个实施例中,一个域包括一个或多个“服务器场(farm)”,即一组连接在一起的服务器充当单个服务器系统以提供集中式管理。相反,一个服务器场可以包括一个或多个域。对属于相同服务器场的两个不同域的服务器来说,在域之间需要有一种信任关系来规定不同域之间的关联,这种信任关系允许用户使用单个验证凭证来访问与各个域相关联的资源。
在一个实施例中,应用服务器36和38处在不同的域中。在另一实施例中,应用服务器36和服务器30、32、36、38处在相同的域中。在任一两个实施例中,应用服务器30、32和34属于同一服务器场,服务器36属于另一服务器场,或者应用程序器30、32、34和36全部都属于相同的服务器场。当有新的服务器连接到网络40时,新服务器要么加入已有的服务器场,要么启动一个新的服务器场。
在一个实施例中,网络40包括主服务器节点,用于在应用服务器30、32、34和36之间执行负载平衡。在另一个实施例中,主服务器节点是应用服务器30、32、34和36的其中之一。主服务器节点包括一个服务器地址列表和与其它应用服务器中的每一个相对应的负载信息。使用可用服务器的列表和它们对应的负载级别,主服务器节点根据可用服务器的列表和它们对应的负载级别把客户端节点定向到一个特定的服务器节点,在其上执行应用程序。或者,应用服务器30、32、34和36在它们自己之间以对等方式合作,以交换诸如负载级别这类管理信息,允许任意服务器30、32、34、36对客户端节点10、20作出的请求予以应答。
程序邻居
依照本发明的原理,任一客户端节点10或20的用户获悉网络40中的应用服务器30、32、34和36所寄宿的应用程序的可用性,而不用用户知道到哪里找到这样的应用或者输入链接到这样的应用所必需的技术信息。这些可用应用程序包括用户的“程序邻居”。用于确定客户端节点的程序邻居的系统包括:一个应用程序(以下称为“程序邻居”应用)、存储该应用程序组件的存储器以及执行该应用程序的处理器。
程序邻居应用程序被如下安装在客户端节点10的存储器中和/或应用服务器30、32、34、36上。程序邻居应用是服务、应用程序编程接口(API)和用户界面(UI)程序的集合,其向客户端节点10、20的用户公开应用服务器所寄宿的、授权每个客户端节点去使用(即,执行)的那些应用程序。
根据程序邻居应用运行的一个应用服务器从服务器场的每个应用服务器收集应用-有关信息。每个寄宿的应用的应用-相关的信息包括但不限于:寄宿该应用的服务器的地址;应用名;被授权使用该应用的用户或用户组;该应用所支持的数据类型;与所支持的数据类型相关联的任何文件类型;与该应用相关联的任何文件类型;条件性规则,其指定了在服务器节点上或客户端节点上执行应用;以及在建立连接运行该应用之前客户端节点上所需的最低能力。例如,该应用可以流视频数据,因此所需要的最低能力是客户端节点支持视频数据。其它示例性需求是客户端节点支持音频数据或加密的数据。应用-相关的信息可以被存储在如下所述的数据库中。
当客户端节点与网络40相连时,客户端节点的用户提供用户凭证。用户凭证典型地包括用户名、密码和用户被授权的域名。用户凭证是从智能卡、基于时间的令牌、社会保障号码、用户密码、个人标识(PIN)号码、基于对称密钥或椭圆曲线加密的数字证书、用户的生物特征、通过其为授权获得并提交客户端节点用户身份标识的任意其它方式。
响应客户端节点的服务器根据用户凭证来授权用户。在一个实施例中,用户凭证被存储在程序邻居应用正在执行的任何地方。例如,在一个实施例中,客户端节点10执行程序邻居应用,用户凭证也存储在客户端节点10。在另一实施例中,一个应用服务器正在执行程序邻居应用,用户凭证就被存储在那个服务器中。
根据用户凭证和应用-相关的信息,服务器还要确定应用服务器所寄宿的哪些应用程序可以供客户端节点的用户使用。服务器把表示可用的应用程序的信息传输到客户端节点。这个过程消除了客户端节点的用户去建立应用连接的需要。此外,服务器管理员还可以在不同的客户端节点用户之间控制对应用的访问。
由服务器执行的用户授权足够授权对呈现给客户端节点的每个所寄宿的应用程序的使用,尽管这样的应用可能驻留在另一服务器上。因此,当客户端节点启动对所寄宿的应用中的其中一个应用的执行时,由用户对用户凭证的附加输入对授权该应用的使用可能就是不必要的。因而,用户凭证的单个记录足以确定可用的应用并授权在没有由客户端用户进行的附加的、手工登录授权过程的情况下授权启动这样的应用。
客户端节点10、20或应用服务器都能够像结合图2A-2C所描述的那样启动程序邻居应用。结果被显示在客户端节点10、20的显示屏幕12、22上。在图形环境中,结果可以显示在程序邻居图形窗口中,每个授权的应用程序都可以用该窗口中的一个图标表示。
程序邻居应用的一个实施例过滤了那些客户端节点10、20未被授权使用的应用程序,并且只显示已授权的(可用)应用程序。在其它实施例中,程序邻居应用显示已授权的和未授权的应用。当未授权的应用未从显示中被过滤掉时,可以提供一个通知指示这样的应用是不可用的。或者作为选择,程序邻居应用也可以向客户端节点的用户报告应用服务器30、32、34、36寄宿的所有应用,而不标识出哪些应用是客户端节点10、20被授权执行的、哪些是未被授权的。随后,当客户端节点10、20尝试运行这些应用中的一个时确定授权。
图2A展示了一种示例过程,服务器按照该过程启动程序邻居(PN)应用并把PN应用的结果呈现给客户端节点10。服务器响应于由客户端节点10发出的特定应用程序的请求42而启动PN应用。请求传递至主服务器节点,在这个例子中是服务器30。主服务器节点30考虑负载平衡和应用可用性,向客户端节点10指示(箭头43)该广受欢迎的应用在服务器32上可用。客户端节点10和服务器32建立连接(箭头45和46)。当客户端节点10和服务器32按照基于客户端的计算模型进行工作时,通过这个连接,服务器32能够把特定应用的可执行代码传输给客户端节点10。或者作为选择,当客户端节点10和服务器32按照基于服务器的计算模型进行工作时,服务器32执行该特定应用并把图形用户界面传输给客户端节点10。另外,主服务器节点或者服务器32能够执行程序邻居应用42并把结果推送回至(箭头43或46)客户端节点10以便当客户端节点10请求程序邻居应用时,程序邻居在客户端节点10上已经可用。
图2B展示了另一个示例过程,客户端节点10按照该过程启动对程序邻居应用的执行,并且服务器把PN应用的结果呈现给客户端节点10。客户端节点10启动程序邻居应用(例如,通过选择代表该应用的程序邻居图标47)。对程序邻居应用的请求被传给主服务器节点,在这个例子中是服务器30。如果该应用在主服务器节点30上,那么主服务器节点30就能够执行程序邻居应用并返回结果给客户端节点10。或者作为选择,主服务器节点30也可以向客户端节点10指示(箭头51)程序邻居应用41在另一服务器上可用,在这个例子中是服务器32。客户端节点10和服务器32建立连接(箭头53和54),通过该连接客户端节点10请求执行程序邻居应用41。服务器32能够执行应用41并把结果(即,图形用户界面)传输给客户端节点10。
图2C展示了另一种示例过程,客户端节点10按照该过程启动对程序邻居应用的执行,在这个例子中是通过万维网。客户端节点20执行web浏览器应用80,比如由像华盛顿州雷蒙德的微软公司开发的INTERNET EXPLORER。客户端节点20通过web浏览器80传输对与驻留在服务器30上的HTML页面对应的统一资源定位符(URL)的访问请求82。在一些实施例中,由服务器30返回84给客户端节点20的第一个HTML页面是试图标识客户端节点20的验证页面。
验证页面允许客户端节点20通过web浏览器80来把用户凭证传输到服务器30以进行验证。所传输的用户凭证由服务器30或该服务器场中的另一服务器加以验证。这允许安全域被投影到服务器30上。例如,如果服务器30运行WINDOWS NT操作系统并且验证服务器运行UNIX操作系统,那么就可以说UNIX安全域已经被投影到服务器30上了。用户凭证可以以“明文(in the clear)”来传输,或加密后传输。例如,用户凭证可以通过加密套接字层(SSL)连接被传输,它用RC3算法对数据加密该RC3算法由加利福尼亚州圣马特奥的RSA数据安全公司开发。
服务器30可以验证从客户端节点接收到的用户凭证。服务器30可以把用户凭证传递至另一服务器以进行验证。在这个实施例中,验证服务器可以和服务器30处在不同的域中。客户端节点20的验证过的用户凭证可以以会话前的(pesr-ession)cookie的形式被存储在客户端节点20上的未被web浏览器80显示的域中,或者以web页面所维护的任意公共方式来存储。在一些实施例中,服务器30所关联的服务器场可以允许宾客用户(即,不具有已分配的用户凭证的用户)访问该场中的服务器所寄宿的应用。在这些实施例中,验证页面可以提供一种机制,用来允许客户端节点20标识它是宾客用户,例如按钮或菜单选择。在其它实施例中,服务器30可以完全忽略验证页面。
仍然参看图2C,一旦客户端节点20被服务器30验证通过,服务器就准备并向客户端节点20传输一个包括程序邻居窗口58的HTML页面88,在程序邻居窗口58中出现了代表客户端节点20有权访问的应用程序的图标57、57’。客户端节点20的用户通过选择图标57来启动对图标57所表示的应用的执行。
图3A展示了在客户端节点10、主服务器节点(在这个例子中是服务器30)和服务器32之间的一种示例性通信过程。客户端节点10和服务器32之间有活动(active)连接72。客户端节点10和服务器32可以使用活动连接72来交换有关第一个应用程序的执行的信息。客户端节点10的用户凭证被存储在该客户端节点上。用户凭证的这种存储期可以采用高速缓存或持久性存储器。
在这个实施例中,程序邻居应用程序运行在客户端节点10上。客户端节点显示具有程序邻居窗口58,该窗口呈现出表示第二个应用程序的图形图标。客户端节点10的用户可通过用鼠标或其它输入设备选择图标57而启动第二个应用程序。该请求通过连接59传递到主服务器节点30。主服务器节点30通过连接59来向客户端节点10指示:该广受欢迎的应用在服务器32上可用。客户端节点10发信号通知服务器32建立第二个连接70。服务器32向客户端节点10请求用户凭证以便授权访问第二个应用程序。当成功授权时,客户端节点10和服务器32就建立第二个连接70并交换与第二个应用程序的执行有关的信息。因此,客户端节点10和服务器32在多个连接上互相通信。
图3B展示了在客户端节点20、主服务器节点(在这个例子中是服务器30)、以及服务器32、34和36之间的一个示范性通信过程。客户端节点20和服务器32之间有活动连接73。客户端节点20和服务器32可以使用活动连接73来交换与第一个应用程序的执行有关的信息。客户端节点20的用户凭证被存储在服务器32的高速缓存或持久性存储器中。
在这个实施例中,程序邻居应用运行在服务器32上。服务器32包括提供基于服务器的客户端引擎62、使服务器32能够在客户端节点20的容量下运行的软件。客户端节点20显示带有程序邻居窗口58,该窗口中呈现出分别表示第二个应用程序和第三个应用程序的图形图标57、57’。客户端节点20的用户能够通过选择图标57来启动第二个应用程序。启动第二个应用程序的请求通过活动连接73而传到服务器32,服务器32把该请求转发到主服务器节点30(箭头65)。
主服务器节点30向服务器32指示(箭头65)该广受欢迎的应用在服务器34上可用。服务器32联系服务器34以建立连接66。为了授权对该应用的访问,服务器34从服务器32获取客户端节点20的用户凭证。服务器32和服务器34建立连接(箭头66),通过该连接服务器32请求来执行第二个应用程序,并且服务器34把图形用户界面结果返回给服务器32。服务器32把图形用户界面结果转发到客户端节点20,结果在那里被显示出来。因此,在客户端节点20和服务器34之间交换的信息经过了服务器32。
同样,客户端节点20能够通过选择图标57’来启动第三个应用程序。启动第三个应用程序的请求传到服务器32。服务器32把该请求转发到主服务器节点30,服务器节点30考虑负载平衡和应用程序可用性以便确定哪个服务器能够处理该请求。在这个例子中,主服务器节点指示服务器36能够运行第三个应用程序。
服务器32和服务器36建立连接(箭头74),通过该连接服务器32请求执行第三个应用程序,服务器36把结果返回给服务器32。为了允许对第三个应用程序的执行,服务器36能够验证客户端节点20的用户凭证,所述这些凭证是从服务器32获得的。服务器32把结果转发到客户端节点20,结果在那里被显示。因此,执行第三个应用程序的结果通过服务器32在客户端节点20和服务器36之间传递。
从这个说明中应该理解到:客户端节点20能够通过与服务器32的一个连接运行多个应用程序,而服务器32维持多个连接(在这个例子中,与服务器34有一个连接,与服务器36有第二个连接)。此外,服务器32把从服务器34接收到的信息和从服务器36接收到的信息合并成一个数据流以供传输给客户端节点20。
图3C展示了在客户端节点20、主服务器节点(在这个例子中是服务器30)、和服务器32和34之间的一种示范性通信过程。客户端节点20和服务器32之间有活动连接76。客户端节点20和服务器32可以使用活动连接76来交换与第一个应用程序的执行有关的信息。客户端节点20能够在高速缓存或持久性存储器中存储用户凭证。
在这个实施例中,程序邻居应用运行在服务器32上。客户器节点20显示带有程序邻居窗口58,该窗口中呈现出表示第二个应用程序的图标57。客户端节点20的用户通过选择图标57能够启动第二个应用程序。启动第二个应用程序的请求传到服务器32。服务器32通过返回应用相关的信息-例如应用的名字以及客户端节点20运行第二个应用所需的能力来对客户端节点20作出响应(即“回调”)。
利用服务器32所提供的信息,客户端节点20然后通过连接77和主服务器节点30通信来确定执行第二个应用程序的服务器。在这个例子中,该服务器是服务器34。客户端节点20随后建立到服务器34的连接78。服务器34从客户端节点20请求用户凭证以便验证客户端节点20的用户。第二个应用程序在服务器34上执行,服务器34通过建立的连接78来把图形用户界面返回给客户端节点20。因此,客户端节点20可以在多个服务器之间存在多个活动连接。
图3D展示了在客户端节点20、服务器30(它在这个例子中充当web服务器)和服务器32之间的一种示例性通信过程。客户端节点20如上结合图2C所述那样向服务器30验证其自身。在一个实施例中,服务器30访问输出显示模板90,诸如SGML、HTML或XML文件,以便将其用作为构建要传输到客户端节点20的程序邻居窗口的基础。该模板可以存储在与服务器30相关联的易失性或持久性存储器中,或者存储在大容量存储器92中,例如磁盘或光盘设备,如图3D所示。
在这个实施例中,模板90是包含程序邻居特定标记的标准SGML、HTML或XML文档,程序邻居特定标记被动态信息代替。标记向服务器30指示在输出显示的什么地方插入与可用应用相对应的信息,例如图标图像。在一个具体实施例中,程序邻居专用标记被嵌入在文件内的注释中,以允许文件保持与标准解释器兼容。在另一实施例中,程序邻居专用标记是用作模板基础的标记语言的扩展。
表1中列出了依照本发明在模板中可能用到的HTML标记的例子:
标记 描述
ControlField域名 这个标记用来设置持续在程序邻居web页面之间的数据的值,由用户设置,或者用来帮助跨页导航,例如用户名、域、密码、模板和应用
DrawProgram-Neighborhood 这个标记用来在输出显示器中的这个位置上画出程序邻居显示
AppName 这个标记由当前上下文中公开的应用的名字替换
WindowType 这个标记由当前上下文中公开的应用的窗口类型替换
WindowHeight 这个标记由当前上下文中公开的应用的窗口高度替换
WindowWidth 这个标记由当前上下文中公开的应用的窗口高度替换
WindowSeale 这个标记由当前上下文中公开的应用的窗口比例替换
WindowColors 这个标记由当前上下文中公开的应用的颜色深度替换
SoundType 这个标记由当前上下文中公开的应用的声音设置替换
VideoType 这个标记由当前上下文中公开的应用的视频设置替换
Encryption-Level 这个标记由当前上下文中公开的应用的加密级别替换
Icon 这个标记由当前上下文中公开的应用的图标替换
可以提供其它标记来设置控制域并提供涉及程序邻居应用的条件性处理。
在一个实施例中,所述模板是利用(例如)马萨诸塞州剑桥的Allaire公司的COLD FUSION或华盛顿州雷蒙德的微软公司的ACTIVESERVER PAGES来动态构建的。或者作为选择,所述模板可以是静态的。程序邻居应用解析该模板,替换上面提到的那些程序邻居专用标记。不是程序邻居专用标记被留在文件中以便由在客户端节点20上执行的浏览器程序80解析。
在一个实施例中,提供了模板解析器对象,它接受HTML模板作为输入,解释模板中存在的程序邻居专用标记,并给原始模板提供用合适的文本替换的所有程序邻居标记。可以从web浏览器接口向模板解析器对象传递cookie、URL查询串或控制域以便提供应该用来替换程序邻居专用标记的信息。
在另一实施例中,程序邻居应用允许脚本通过应用程序编程接口来访问信息。脚本例如可以使用VBScript或Jscript来加以编写。在这个实施例中,脚本语言被用来用应用响应脚本发出的查询而返回的信息动态地生成输出显示。一旦生成了输出显示,就把它传输到客户端节点20以由浏览器程序80显示。
客户端节点20的用户能够通过选择程序邻居web页面中显示的图标57、57’来启动应用。在一些实施例中,每个图标57、57’是一个已编码的URL,它规定了:应用程序的位置(即,在哪个服务器上寄宿它,或主服务器的地址);与该应用相关联的启动命令;标识应该怎样显示该应用的输出的模板(即,“嵌入”在浏览器中的窗口或单独的窗口)。在一些实施例中,URL包括文件或对该文件的引用,该文件包含客户端用以创建到寄宿该应用的服务器的连接所必须的信息。这个文件可以由程序邻居应用动态创建。客户端节点20和被标识为寄宿所请求的应用的服务器(在这个例子中是服务器32)建立连接(箭头94),并交换与所期望的程序的执行有关的信息。在一些实施例中,连接94是使用佛罗里达州Fort Lauderadale的Citrix系统公司开发的独立计算结构(ICA)协议建立的。因而,客户端节点20可以在与浏览器窗口分开的窗口中显示应用输出,或者它可以把应用输出“嵌入”到web浏览器中。
图4为程序邻居应用的基于客户端的实现说明了其程序组件的一种示例性配置。程序邻居应用的基于客户端的实现方案可以用在使用基于服务器的计算模型(在这种模型中服务器执行程序邻居应用)或基于客户端的计算机模型(在这种模型中客户端节点10在本地执行程序邻居应用)的网络中。程序邻居应用包括:程序邻居服务(PNSVC)组件44、应用数据库组件48、程序邻居应用编程接口(PNAPI)组件52、程序邻居应用用户界面组件56和本地高速缓存60。
应用服务器30例如包括服务组件(PNSVC)44和应用数据库48。客户端节点10,它是能够支持程序邻居应用的基于客户端的实现的(客户端节点的代表性示例,包括:应用程序编程接口PNAPI 52、用户接口组件56和本地高速缓存60组件。PNAPI 52与用户接口组件56和本地高速缓存60通信。PNSVC 44与应用数据库48进行通信,并通过通信链路62与客户端节点10上的PNAPI 52进行通信。
通信链路62可以用(例如)ICA协议和工业标准传输协议来建立,ICA是通用的表示层服务协议,其被设计成用来运行在工业标准网络协议之上,例如TCP/IP、IPX/SPX、NetBEUI,工业标准传输协议如ISDN、帧中继、异步传输模式(ATM)。ICA协议提供虚拟通道,它们是面向会话的传输连接,可由应用层代码用来发出命令以交换数据。虚拟通道命令被设计为与客户端节点的功能紧密集成在一起。ICA协议所支持的一种类型的虚拟通道连接是程序邻居虚拟通道。
程序邻居虚拟通道协议可以包括四组命令:
(1)与初始化相关的命令;
(2)与单一验证有关的命令,可由每个想得到用户凭证的拷贝的客户端节点支持;
(3)与应用数据有关的命令,用于实现程序邻居用户界面;和
(4)与应用启动回调有关的命令,用于运行服务器上的用户界面。
应用数据库
应用数据库48是为一个服务器场或一组可信的域中所有公开(或发布的)应用验证过的用户和组信息的高速缓存。服务器场中的每个服务器能够在持久性存储器中维持它自己的应用-相关的信息并在易失性存储器中堆积(build up)数据库48。在另一实施例中,数据库48中所有收集到的应用-相关的信息都可以被存储在持久性存储器中并可由该服务器场中的每个别的服务器访问。服务器48可以专有形式(例如,存储器中的链表)实现,或使用Novell的目录服务(NDS)或国际电信联盟(ITU)为分布式电子目录所定义的X.500标准所附的任意目录服务来实现。
应用数据库48包括一个应用服务器列表。列表中的每个服务器有相关联的应用集合。与每个应用相关联的是应用-相关的信息,可以包括:应用名、服务器列表、被授权使用该应用的客户端用户。下面的表2说明了数据库中所维护的应用-相关的信息的一个简单示例。用户A和用户B是客户端节点10、20的用户,″n/a″指示该应用被寄宿,但客户端用户不可用,″-″指示该应用没有被寄宿。
表2
应用
服务器名 电子表格 客户数据库 字处理器 计算器
服务器30 用户A 用户B n/a -
服务器32 用户B n/a 用户A -
服务器34 - - - 用户A用户B
表2展示了服务器30、32、34,由这些服务器寄宿的应用(电子表格、客户数据库、字处理器和计算器)以及被授权使用这些应用的用户的列表。例如,服务器30寄宿电子表格程序、客户数据库和字处理器。用户A被授权使用电子表格,用户B被授权使用客户数据库,没有用户被授权使用字处理器。您将会理解的是,也可以使用其它技术来指示谁被授权使用特定的应用。例如,数据库中存储的用户信息可以用来指示那些不被授权使用特定应用的那些用户,而不是被授权使用的那些用户。
为了获得存储在数据库48中的信息,服务器30从服务器场中的每一服务器获得关于这些服务器上的应用的应用-相关的信息,包括指示哪些客户端用户和服务器被允许访问每个特定应用的控制信息。数据库中维护的应用-相关的信息在服务器30重启之后可以保留或不保留。
应用数据库48可以是存储在应用服务器30并且该服务器场中的所有服务器都可以访问的中央数据库中。因此,应用-相关的信息可以供其它服务器使用,例如在会话登录和应用启动期间执行公布的应用验证的那些服务器。在另一实施例中,可以根据每个服务器从与服务器场中的各个服务器的通信中获得的信息而在每个应用服务器上维护应用数据库48。
程序邻居服务程序(PNSVC)
每个在其上安装了程序邻居应用的服务器30、32、34和36都执行PNSVC软件44。运行在每个服务器30、32、34、36上的PNSVC软件44和每个别的服务器建立通信链路(即,指定管道)。服务器30、32、34和36可以在指定管道上交换应用-相关信息。在另一实施例中,PNSVC软件44通过远程注册调用从服务器场中的其它服务器检索应用-相关的信息(例如,服务组件4 4成组地向其它服务器传输数据报,请求与那些服务器寄宿的应用程序所对应的应用-相关的信息)。PNSVC 44软件还在应用数据库48中维护了公开应用的组和用户的关系并在验证客户端用户时访问该信息。服务器30的管理员可以使用用户界面来配置PNSVC 44。
PNSVC 44的其它功能包括:实现PNAPI 52所请求的服务和功能,以及使用程序邻居虚拟设备驱动器(VDPN)来与客户端节点10上的PNAPI 52进行通信。VDPN按照上面为建立和维护ICA连接所描述的程序邻居虚拟通道协议操作。
程序邻居应用程序编程接口(PNAPI)
PNAPI 52是一组由程序邻居应用用来执行各种操作(例如,打开显示屏幕上的窗口,打开文件,显示消息框等)的软件功能或服务。PNAPI 52为启动通过运行程序邻居应用产生的应用对象(例如,图标)和继承(legacy)(即,前趋或有时是现有的)客户端用户界面中的应用对象提供了一种通用机制。当客户端节点10启动可用的应用时,启动机制能够在服务器30上启动应用,如果必要的话(例如,当客户端节点10没有在本地执行该应用的资源时)。
PNAPI 52向用户界面组件56提供所有公开的应用信息以显示在客户端节点10的屏幕12上。PNAPI 52还为客户端节点10的用户管理登录凭证(例如,密码)的、在本地数据库中的服务器场登录以支持单一验证特征。凭证在跨越客户端节点10的启动(断电和接通周期)可以保留或不保留。
PNAPI 52为本地高速缓存60中存储的程序邻居应用对象提供自动和手动管理。本地高速缓存60可以由客户端节点10的用户手动刷新,或者以用户可定义的刷新速率刷新,或者由服务器在连接期间的任意时刻刷新。在Windows实现方案中,PNAPI 52可以构建远程应用文件关联并为应用对象快捷键管理“Start(开始)”菜单和桌面图标。
程序邻居用户界面
用户界面模块56与PNAPI 52相接口,并且可以是现有客户端用户界面(例如,远程应用管理器)的功能性超集(superset)。用户界面模块通过PNAPI 52来访问本地高速缓存60中存储的信息,并在客户端节点10的显示屏幕上可视地把这些信息呈现给用户。所显示的信息是由客户端节点10的用户所产生的信息与由程序邻居应用获得的信息的混合。用户界面模块56还能向用户显示该用户当前正在运行的所有应用以及所有活动的和断开连接的会话。
在图形化实施例中,用户界面模块56能够呈现多种图形组件,诸如像窗口和下拉菜单,以便显示在显示屏幕12上。对这样的图形用户界面组件的组合的显示通常称为“桌面”。由用户界面模块56产生的桌面可以包括程序邻居窗口,它显示了客户端节点10的用户可以使用的应用程序的邻居。这些应用程序是由网络上的服务器场寄宿的公开应用的过滤后的组合。用户界面模块56可以为每个服务器场产生一个程序邻居窗口,或者把来自不同服务器场的应用合并到单个程序邻居窗口之下。
在顶层,程序邻居窗口包括对应每个服务器场的文件夹。用鼠标18点击其中一个文件夹会产生一个窗口,该窗口包含用户可用的每个所寄宿的应用的表示(例如,图标),参见图6A和6B。程序邻居窗口成为启动公开应用的聚焦点,用户界面模块56可用来通过PNAPI 52启动应用。例如,客户端节点10的用户能够使用鼠标18来选择其中一个所显示的图标并启动相关联的应用。
基于客户端的实现方案的特征是:哪怕客户端节点是在离线的状态下,即ICA连接62是不活动的,用户也仍然能够浏览程序邻居窗口中显示的对象。另外,客户端节点10的用户能够把应用对象和文件夹从程序邻居窗口那里拖出并拉入到桌面的其它图形组件中(例如,其它窗口、文件夹,等等)。
图5展示了程序邻居应用、基于服务器的实现的程序组件的一种示例性配置。这些组件包括服务(PNSVC)组件44’、应用数据库组件48’、应用程序编程接口(PNAPI)组件52’、用户界面组件56’和本地高速缓存60’。每个软件组件44’、48’、52’、56’和60’都安装在应用服务器30’上。用于基于服务器的实现的软件组件与图4中用于基于客户端的实现方案的软件组件相对应。每个基于服务器的软件组件的功能与基于客户端的对应组件相类似,其不同之处或新增功能如下。PNSVC 44’利用本地过程调用来与应用数据库48’和PNAPI52’进行通信。PNAPI52’还与用户界面模块56’和本地高速缓存60’相通信。
与图4中对客户端节点10所描述的相类似,客户端节点20登录到网络40,服务器30’开发并维护包含从服务器场中的其它服务器32、34收集到的应用-相关的信息的数据库,在服务器30’和客户端节点20之间建立通信链路。应用服务器30’通过ICA通道连接62’而与客户端节点20进行通信。通道连接62’可以由ICA虚拟通道协议(例如,Thinwire)加以建立。Thinwire协议可以用来把呈现命令从运行在应用服务器30’上的基于窗口的应用传输到客户端节点20。对客户端节点20的用户来说,这些应用好像正运行在客户端节点20上。客户端节点20可以包括远程应用管理器应用程序64,它通过ICA通道连接62’而与应用服务器30’相通信。
为了在基于服务器的实现中运行程序邻居应用,客户端节点20的用户连接到(在服务器30’上的)初始桌面并从该桌面环境中启动程序邻居应用。到初始桌面的连接可以自动发生,例如,通过客户端节点20的登录脚本、通过Windows95中StartUp组中的一个条目、或者通过另一集中式管理的服务器专有机构。所有远程应用管理和启动都是通过这个初始桌面来实现的。
与图4中对服务器30所描述的相类似,服务器30’利用用户凭证来确定那些被授权由客户端节点20的用户所使用的应用程序。程序邻居图形窗口被返回给客户端节点20并显示在客户端屏幕22上。这个窗口可以包含表示在客户端节点20的程序邻居中可用的(也可能是不可用的)应用程序的图标。
客户端节点20的用户能够从程序邻居窗口中所显示的应用程序中选择一个并启动。当启动一个应用时,程序邻居应用能够在相同服务器30’上执行所述应用,在可应用的情况下,要考虑服务器间的负载平衡需求以及该应用在服务器30’上的可用性。PNAPI 52’可以包括当服务器30’被指定启动该应用时在服务器30’上本地启动远程应用的启动机制。如果需要不同的服务器来运行该应用,程序邻居应用能够使用这些窗口通过服务器30’(即,基于服务器的客户端)来启动该应用以像图3B中所描述的那样把应用呈现在客户端节点20的桌面上。
在一个实施例中,基于web的程序邻居应用包括一组管理应用的各个方面的对象。在一个实施例中,所述应用包括三个“插入”到web服务器中的主要对象类:网关对象类;凭证对象类;和应用对象类。在一些具体实施例中,对象类被作为java bean加以提供。这三个主要对象类简化了:对进入服务器场的用户凭证的验证;指定的用户可以访问的公开应用的列表的生成;关于具体的公开应用的详细信息的提供;把公开应用信息转换成与ICA兼容的格式。
当被提供为Java bean时,可以以多种不同方式来访问对象。例如,它们可被编译为COM对象并由web服务器用作ActiveX组件。在另一实施例中,可以按照Java bean的原本形式来使用它们,例如当服务器使用JSP(Java Server Pages)技术时。在又一实施例中,Javabean可以被实例化并被在Java小服务程序器中直接使用。在另一实施例中,服务器30可以直接把Java bean实例化为COM对象。
凭证对象类管理验证用户进入目标服务器场必需的信息。凭证对象把所存储的用户凭证传递到其它程序邻居对象。在一些实施例中,凭证对象是不能被实例化且代表用户的凭证的抽象类。可以提供不同的类扩展以允许使用不同的验证机制,包括生物统计学、智能卡、基于令牌的验证机制,例如呼叫响应和基于时间的密码生成或其它机制。例如,可以提供在纯文本中存储用户名、域和密码的“明文凭证”。
网关对象类处理与目标服务器场的通信。在一个实施例中,网关对象类被提供为不能被实例化的抽象Java类。特定的网关对象可以通过使用特定协议与服务器场进行通信,读取缓存的应用信息,或者使用这两种方法的组合,或者其它各种方法来获得应用信息。
如上所述,网关对象类高速缓存信息以便最小化与目标服务器场的通信。可以提供对网关对象的扩展以通过特定协议(例如HTTP)和服务器场通信。在一个实施例中,一个扩展类被提供,以便允许网关对象通过WINDOWS NT命名管道和服务器场通信。网关对象可以提供应用程序编程接口钩子(hook),它允许其它程序邻居对象从该对象查询应用信息。
一个应用对象类包含与公开应用有关的信息并返回与服务器场寄宿的应用有关的信息以便创建程序邻居web页面。应用对象类通过从由网关对象创建的对象或直接从服务器场中的服务器检索与应用相关的信息而创建代表应用的对象。应用对象充当用于应用的特定属性的容器,这些属性有的可设置,有些不可设置,例如:应用的名字(不可设置);客户端窗口应该占据客户端桌面的比例(可设置);用于这个应用的客户端窗口的宽度(以像素表示)(可设置);用于这个应用的客户端窗口的高度(以像素表示)(可设置);当连接到该应用时使用的颜色数(可设置);音频带宽限制的严重性(可设置);连接到该应用时使用的加密级别(可设置);连接到该应用时使用的视频级别(可设置);是否应该把该应用放到客户端的开始菜单(可设置);是否应把该应用放到客户端的桌面(可设置);该应用所属的程序邻居文件夹的身份(可设置);对该应用的描述(可设置);用于该应用的图形图标文件的来源(可设置);当连接到该应用时应该使用的窗口类型(可设置);是否重载该对象的缺省参数。
图6A是在程序邻居应用已经执行之后可以显示在客户端节点10、20任一个的屏幕18、22上的示例性程序邻居窗口120的截屏图。窗口120包括图形图标122。每个图标122代表由网络40上的服务器30、32、34和36中的其中一个服务器所寄宿的一个应用程序。每个所代表的应用都可以由该客户端节点的用户执行。用户可以用鼠标18、28或键盘14、24从中选择一个应用并启动它。
图6B是在程序邻居应用已经执行之后可以显示在客户端节点10、20任一个的屏幕18、22上的另一示例性程序邻居窗口120的截屏图。窗口124包括图形图标126、128。每个图标126、128代表由网络40上的服务器30、32、34和36中的其中一个服务器所寄宿的一个应用程序。由图标126中的一个图标所代表的每个应用程序都可以由客户端节点10、20的用户执行。用户使用鼠标18、28或键盘14、24能够从中选择一个应用程序并启动它。对基于web的程序邻居环境来说,除了图标122、126、128被显示在浏览器窗口中之外,图6A和6B的截屏图是相同的。
由图标128中的一个图标所代表的每个应用程序都不能为客户端节点10、20的用户所用,尽管这些应用也存在于服务器场中。可以在显示屏幕上标出这些应用程序的不可用性(例如,可画上一个“X”  通过图标128)。试图启动这样的应用程序会触发一个消息,指示用户未被授权使用该应用。
图7展示了一个示例性过程,通过它可以向客户端节点10、20人一个的用户通知由网络40上的服务器30、32、34、36所寄宿的应用程序的可用性。在步骤80,客户端节点10、20从服务器之一(例如服务器32)请求登录服务。服务器32需要有效的用户凭证以建立连接。服务器32从客户端节点10接收用户凭证(步骤82),并验证用户登录(步骤84)。在客户端节点10、20上显示桌面(步骤85)。桌面可以包括代表程序邻居应用程序的图形图标。
在步骤86,应用服务器32与每个别的服务器30、34、36建立连接以交换应用-相关的信息,如上所述,与寄宿在那些服务器上的应用程序相对应(步骤88)。在步骤90,应用服务器32开发并维护收集的应用-相关的信息的数据库。服务器场中的每个别的服务器32、34、36可以开发与服务器32的数据库等价的数据库,并且开发方式也和服务器32相同。在另一实施例中,服务器32的数据库可以是由服务器场中的每个其它服务器32、34、36访问的集中式数据库。对应用-相关的信息的收集可以独立地发生或者按客户端节点10、20登录到服务器场38的请求加以触发。
在步骤92,客户端节点10、20可以从桌面显示请求执行应用程序。主服务器节点可以处理请求,并如前所述那样使用负载平衡评估和应用可用性,确定应用服务器以便向客户端节点10、20提供服务(步骤94)。例如,可以选择应用服务器32以便就客户端节点10、20对请求提供服务。在步骤96,客户端节点10、20建立与服务器32之间通信链路。服务器32和客户端节点10、20可以如上所述按照适合于该客户端节点的ICA协议进行通信。
同样,哪怕客户端节点10、20可能还没有请求PN应用程序,主服务器节点30或服务器32也可以响应于这一运行该应用程序的请求来运行程序邻居应用(步骤93)并把结果推送到客户端节点10、20。当执行PN应用程序时,主服务器节点30或服务器32使用用户凭证过滤数据库中的应用-相关的信息(步骤100)。过滤数据库的结果确定了那些被授权由客户端节点10、20的用户使用的应用程序。经授权的应用程序处在客户端节点10、20的程序邻居中。可用的应用信息的这个程序邻居被推送到客户端节点10、20(步骤102)并在程序邻居图形窗口中显示在客户端屏幕12、22上(步骤104)。
在其它实施例中,程序邻居窗口可以包括在服务器场中但不能为客户端节点10、20所用的应用。在基于窗口的实现方案中,可用(和不可用)的应用程序都由图标来表示。客户端节点10、20的用户可以从程序邻居窗口中显示的应用程序中选择一个并启动它。
文件类型关联(FTA)
正如所论述的那样,在一个实施例中,程序邻居机制允许用户标识、选择并执行不必安装在它们的客户端节点上的可执行程序。在另一实施例中,附加的FTA功能允许用户自动地启动与数据文件相关联的可执行程序的执行,即使该数据文件和可执行程序位于不同的计算节点上。
典型地,FTA功能允许用户通过选择与可执行程序所位于的节点不同的计算节点上的数据文件而透明地执行可执行程序。在一个实施例中,用户通过选择位于他们的客户端节点上的数据文件能够透明地调用对位于服务器节点上的可执行程序的执行。在另一实施例中,用户能够通过选择位于服务器节点上的数据文件透明地调用对位于他们的客户端节点上的应用程序的执行。在又一实施例中,用户能够选择存储在web服务器上的数据文件并透明地调用对位于服务器节点上的相关联的可执行程序的执行。典型地,执行允许处理所选择的数据文件的内容,执行的输出随后被提供给位于客户端节点的用户。
如上所述,客户端节点与一个或多个服务器节点进行通信。客户端节点执行一个包括下列功能的操作系统,所述功能允许:选择代表文件的图形标记、显示位图图形、以及初始化和操作电信链路。在一个实施例中,这些功能和操作系统集成在一起。在另一实施例中,这些功能是由来自于一个或多个第三方厂商的软件提供的,该软件被分别安装并维护在客户端节点上。
服务器节点执行一个包含如下功能的操作系统,所述功能允许初始化并操作通信链路并执行可执行程序。在一个实施例中,这些功能与操作系统集成在一起。在另一实施例中,这些功能由来自于一个或多个第三方厂商的软件提供,该软件被分别安装并维护在客户端节点上。
在目前的讨论中,将会理解到的是,使用文件名扩展必然反映了应用WINDOWS操作系统家族的实施例的特性。其它实施例利用存储在数据文件本身中的参数、数据文件中包含的数据、与数据文件相关联的文件系统记录或者单独的数据文件或数据库,来实现依照本发明的方法和设备。例如,在应用MacOS操作系统家族的实施例中,本发明使用文件和应用程序创建者类型并在与每个存储设备相关联的桌面文件中存储文件类型关联数据。使用UNIX-变体操作系统的实施例利用文件扩展名、嵌入的参数或合适的其它机制。因此,权利要求的范围不应该理解为限于依靠文件名扩展的实施例或使用WINDOWS操作系统的实施例。
基于客户端的FTA
参看图8A,在一个实施例中,本发明通过选择代表位于客户端节点上的数据文件的图形标记,来透明地实现服务器节点上的分布式程序执行。客户端节点从多个服务器节点中的其中一个服务器节点上接收映射,该映射规定数据文件类型和要在多个服务器节点中的其中一个服务器节点上执行的可执行程序之间的关联(步骤106)。客户端节点呈现存储在客户端节点上的数据文件的图形描绘(步骤114)并接收对数据文件的图形描绘的选择(步骤118)。客户端节点利用接收到的映射来标识与所选择的数据文件的类型相关联的可执行程序(步骤122),并发出一个执行标识出的可执行程序的请求(步骤126)。在另一实施例中,客户端节点启动对本地显示应用的执行(步骤130)以从执行的程序接收应用输出数据(步骤134),它把接收到的应用输出数据显示给最终用户(步骤138)。
还是参看图8A,当客户端节点接收到映射时(步骤106),可以只接收映射、或者和几个其它映射一起接收、或者和其它消息或数据(例如软件更新)一起接收。表3说明了在本发明的一个实施例中提供的示例性映射:
表3
    文件类型     可执行程序
    “.DOC”,“.RTF”     MSWORD.EXE
    “.PDF”     ACROBAT.EXE
在一个实施例中,该映射标识出在用户的客户端节点上存储的特定数据文件和供使用的特定可执行程序之间的关联。例如,该映射会规定使用WORD来编辑文件“RECORDS.DOC”。在另一实施例中,该映射会规定存储在用户的客户端节点上的特定类型的数据文件和特定可执行程序之间的关联。例如,该映射会规定使用WORD来编辑以扩展名“.RTF”结尾的所有文件。在另一实施例中,该映射规定用于特定数据文件或特定类型的数据文件的特定类型的可执行文件。例如,当选择一个包含字处理信息的数据文件时,映射会规定使用“字处理应用”,这是通过检查文件或被编码到文件中或与该文件相关联的特殊参数来确定的。
在另一实施例中,映射就启动服务器节点上的可执行程序的客户端节点应用规定可执行程序和数据文件之间的关系,并在客户端节点上显示来自执行的输出。例如,映射可以规定:选择  “.DOC”文件的时间,客户端节点将执行来自Ft.Lauderdale,FL的Citrix软件的METAFRAME,它随后向多个服务器节点中的其中一个服务器节点发送一个请求来执行WORD,接收来自从执行的输出以便在客户端节点显示给用户。在另一实施例中,用于相关联的可执行程序的条目包括用于控制造服务器节点上的执行的一个或多个参数、标志或参量。例如,规定METAFRAME的本地执行和WORD的远程执行的条目可以采用″C:\PROGRA~1\MF.EXE MSWORD.EXE″的形式,该形式表明METAFRAME应用存储在本地C:\PROGRA~1\MF.EXE,要在服务器节点上执行的是MSWORD.EXE。
在一个实施例中,映射中的可执行程序被指定为厂商名,例如“MICROSOFT WORD”。当接收到时,客户端节点就标识与厂商名“MICROSOFT WORD”相关联的文件路径和文件名中的至少一个,以便在应用FTA功能时使用。在另一实施例中,映射中的可执行程序被依照客户端节点操作系统所使用的命名习惯指定为文件名。例如,在一个采用WINDOWS家族操作系统的客户端节点上,相关联的可执行文件可以标识为“MSWORD.EXE”。在接收到这个映射之后,客户端节点或者在本地标识并存储到可执行文件的路径,例如″C:\PROGRA~1\MSOFFICE\MSWORD.EXE″,或者在每次为该特定可执行程序调用FTA时动态地定位所述可执行文件。
在一个实施例中,接收到的映射被并入到一个包含系统数据库的文件中,其中该系统数据库跟踪可执行程序和数据文件或数据文件类型之间的关联。例如,该文件可以是WINDOWS系统上的注册表或者MacOS系统上的桌面文件。在另一实施例中,映射被存储在由一个或多个可执行程序访问的文件中以便提供前面提到的FTA功能。例如,基于Java的可执行程序可以接收映射并把它存储在客户端节点上的文本文件中以供由其它基于Java的可执行程序使用。在另一没有文件系统功能的实施例中(例如,嵌入式设备),接收映射并在随机访问存储器中把它存储在特定地址。在又一个实施例中,映射被远程存储在(例如)多个服务器中的其中一个服务器并由客户端节点上的可执行程序在需要时加以检索。映射本身可以以任意的数据结构存储,包括(但不限于)数组、链表、平面数据库和关系数据库。
在一个实施例中,用基于客户端的(即“牵引(pull)”)技术定期更新这些映射。在另一实施例中,使用服务器端(即“推送”)技术定期更新这些映射。在另一实施例中,使用牵引或推送技术在需要时更新这些映射,例如当系统管理员安装一个新的应用程序并在一个服务器节点上或跨服务器场对它提供支持的时候。
在一个实施例中,客户端节点接收用于控制可执行程序的执行位置的规则(步骤110)。在一个实施例中,用于确定一个特定可执行程序是在客户端节点、服务器节点还是在特定的服务器节点上执行的规则取决于一个或多个变量。这样的变量包括但不限于:客户端系统上的执行负载、多个服务器系统中的其中一个服务器系统上的执行负载、多个服务器系统的总和执行负载、客户端系统和多个服务器系统之间的连接速度、或这些或其它因素的任意组合。例如,如果映射要求:对″.DOC″类型文档的选择启动本地瘦客户端应用的执行,该瘦客户端应用会接收并显示来自在服务器场中的一个服务器上执行的WORD的输出,那么条件规则可以指定:如果客户端系统上的执行负载消耗了超过50%的可用CPU时间并且到服务器场的连接超过了1M位/秒的理论容量或20K位/秒的可用容量,那么WORD应该在服务器场上远程执行,它的应用输出数据被提供给该瘦客户端应用以显示给最终用户。在一个实施例中,当对规则的评估指示:相关联的可执行程序应该在客户端节点上执行时,客户端节点直接把执行程序的输出提供给用户,绕过任何瘦客户端应用。
在实际操作中,当用户选择了″.DOC″文档时,会标识出相关联的应用(即WORD),会装入并评估任何所附的规则,根据对规则的评估而在客户端节点本地或在服务节点上远程执行相关联的应用。如果评估指示:该应用程序将在服务器节点上执行,则就向服务器节点发送一个执行该程序的请求(步骤126)。
映射、条件性规则的接收、或上述两者的一些组合的接收可以通过几种机制发生。可以通过有效的电信链路来发布映射和条件性规则,或者利用一种或多种形式的便携式存储介质离线地进行发布。在客户端节点和多个服务器节点的至少一个正在使用,或者离线,或处于在安排的时间窗之内的安排的时间时,或者当最终用户没有使用客户端节点和多个服务器节点的至少一个中的任一个或上述两者时,它们可以被实时地发布。
利用已安装的映射并且在一些实施例中利用已安装的条件规则,用户使用他的图形用户界面来与客户端节点进行交互。存在于本地客户端节点上的数据文件被以图形化的方式呈现给用户(步骤114)。在典型的实施例中,客户端节点显示存储在客户端节点上的、代表数据文件的一个或多个图标。在另一实施例中,客户端节点显示与存储在客户端节点上的数据文件相关联的文件名列表。在另一实施例中,将代表在客户端节点上存储的文件的标记与代表在一个或多个服务器节点上存储的文件的标记混杂在一起。在这个实施例中,当选择了代表在客户端节点上存储的文件的标记时,基于客户端的FTA就可造作。在另一实施例中,有多种形式的FTA(参见下文)与适当形式的FTA一起进行工作,所述适当形式的FTA是根据与所选择的标记相关联的文件的位置而激活的。
用户通过与数据文件的图形描绘交互来选择一个特定的数据文件(步骤118)。代表数据文件的图标或文件通常是用键盘、鼠标、光笔、压力敏感平板电脑、触觉接口或其它输入设备来加以选择的。
一旦选择了数据文件,客户端节点上的功能就访问所存储的映射和(一些实施例中的)条件性规则,并标识与所选择的数据文件或所选择的数据文件的类型相关联的那些映射和规则(步骤122)。如果映射指示:该数据文件与要在多个服务器中的其中一个服务器上执行的一个应用相关联,并且对任何相关联的条件规则进行的评估也指示了,那么客户端节点就向寄宿相关联的应用程序的多个服务器中的其中一个服务器发送一个执行请求(步骤126)。
一旦执行,该相关联的应用程序通常将产生一种或多种形式的输出数据,包括但不局限于图形化的输出数据或声音。在一个实施例中,客户端节点启动对一个应用程序的执行(步骤130),该应用程序通过与服务器节点的连接来接收应用输出数据(步骤134),并把它显示给最终用户。在一个实施例中,这个应用程序是METAFRAME。
在一个实施例中,客户端节点还向服务器节点提供与所选择的数据文件相关联的数据以供进行处理。在一个实施例中,客户端节点利用与服务器节点之间的网络连接来提供数据。在另一实施例中,客户端节点向服务器节点提供一个指向数据文件内容的指针。该服务器节点又依次使用该指针来产生对数据的顺序或随机访问请求,并把它提供给客户端节点。客户端节点处理这些请求并向服务器节点提供合适的数据。
这种客户端-服务器安排允许使用基于不同计算结构的客户端节点和服务器节点。例如,客户端节点可以是执行本地显示应用的、基于POWERPC的MACINTOSH,服务器节点可以是基于ITANIUM的WINDOWSNT服务器。只要为客户端节点和服务器节点配备了对传输、交换和显示应用输出数据的格式取得一致的功能,节点间的二进制级互操作性就是不必要的。
图8B说明了服务器节点在基于客户端的文件类型关联过程中的典型角色(role)。提供了这样的映射,该映射规定存储在客户端系统上的数据文件的类型和要在多个服务器节点中的其中一个服务器节点上执行的可执行程序之间的关联(步骤154)。接收到一个执行可执行程序的请求(步骤162)并在多个服务器节点中的其中一个服务器节点上执行该可执行程序(步骤166)。
在一个实施例中,从有管理特权的系统管理员或其他用户那里接收映射(步骤150)。管理员通过编辑一个系统数据库来配置新的映射,该系统数据库规定一个特定的数据文件或数据文件的类型与一个特定可执行程序或可执行程序的类型之间的关联,如上所述。在另一实施例中,管理员规定数据文件的类型、一个用于建立与服务器系统之间的连接的程序、用于处理该数据文件的可执行程序以及供该可执行程序使用的参数之间的关联。在一个实施例中,管理员通过手工编辑一个或多个数据文件或使用图形化系统管理工具来规定映射。
在一个实施例中,服务器节点用牵引或推送技术定期地或按照需要把一个文件中的这个系统数据库提供给一个或多个客户端节点。在另一实施例中,这些映射被作为独立的数据条目发送给客户端系统,客户端系统接收它们并把它们并入到它们自己的本地系统数据库中。在又一实施例中,规定的映射还可以针对其它服务器节点上规定的映射加以复制或同步化。这最后的功能便于服务器场配置中对服务器节点进行配置和维护。
服务器节点向一个或多个客户端节点提供映射(步骤154),这些客户端节点按如上所述使用映射。在一个实施例中,服务器还向一个或多个客户端节点提供条件性执行规则(步骤158),以用来由客户端节点如上所述存储和评估。使用用于文件类型关联的规定和发布的技术来规定和发布条件性规则。
在操作中,服务器节点接收从一个或多个客户端节点接收去执行可执行文件的请求(步骤162)。在一个实施例中,服务器节点上的一个或多个可执行程序的可用性部分是由标识或验证标记确定的。服务器节点上的每个文件都与定义用户、用户组或特权级的标记直接或间接相关联。客户端节点给主服务器节点或一个或多个单个服务器节点提供用于指示用户的身份或用户特权级的一个或多个标记。服务器节点针对与每个可用于执行的可执行程序相关联的标记来验证这些标记。如果所提供的标记与相关联的标记相匹配,那么该可执行程序就可以由客户端节点执行。试图执行超出客户端节点所提供的带有验证标记的可执行程序会导致一个或多个错误消息显示在客户端节点上、一个报警消息显示在服务器节点上以及一个启动在客户端节点上对该可执行程序的执行的请求。
服务器节点通过执行所标识的程序来服务于这些请求(步骤166)。当服务于一个执行程序的请求时,服务器自身可以服务于该请求或者它可以委托或将该执行请求再分派到另一服务器。这个委托通过限制需要用来服务一个客户端池的服务器许可数量而便于许可管理和重新发行。接收请求的服务器还可以将该执行请求分派到一个计算集群,以使服务器之间的负载和资源管理能更好地处理客户端需求。
在一个实施例中,服务器节点还接收到与在客户端节点上标识出的特定数据文件相关联的数据(步骤170)。典型地,当可执行程序如上所述在一个服务器节点或集群上执行时由它处理这个数据。在另一实施例中,服务器接收指向客户端节点上的数据文件的指针或其它引用,服务器利用所述这些指针或引用来产生对数据的请求(例如顺序或随机访问请求)以便传输给合适的客户端节点。在一个实施例中,如果第一个服务器节点把一个程序执行请求委托给第二个服务器节点,那么第一个服务器节点如果接收到数据或数据文件引用也可以同样地把数据或数据文件引用委托、重路由或重传输给第二个服务器节点或另一服务器节点,视情况而定。
典型地,服务器节点把来自可执行程序的执行的应用输出数据提供到客户端节点以显示给最终用户,如上所述(步骤174)。应用输出数据可以用由客户端节点直接地或由在客户端节点上执行的应用程序(例如,诸如METAFRAME这样的瘦客户端显示应用)所支持的一种或多种公式来加以提供。应用输出数据可以是代表图形数据的位流,压缩过或未压缩过;代表要显示的向量图形的标记语言;文本;一系列系统相关调用或API调用,它们在执行后为用户在客户端节点上显示应用输出数据。
基于服务器的FTA
参看图9A,在另一实施例中,本发明通过选择代表位于服务器节点上的数据文件的图形标记来使得能够在客户端节点上进行透明的分布式程序执行。客户端节点呈现出存储在多个服务器节点上一个服务器节点上的数据文件的图形描绘(步骤200)。客户端节点接收对数据文件的图形描绘的选择(步骤204)并将该选择传输到多个服务器节点中的其中一个服务器节点(步骤208)。客户端节点从多个服务器节点中的其中一个服务器节点接收一个执行与所选择的数据文件相关联的可执行程序的请求(步骤212)并执行相关俩的可执行程序(步骤216)。
再参看图9A,客户端节点给用户呈现出存储在至少一个服务器节点上的至少一个数据文件的图形描绘(步骤200)。数据文件的图形描绘包括但不限于图形化标记(例如图标)的显示或文件名的显示。在一个实施例中,代表存储在一个或多个服务器节点上的文件的标记与代表存储在客户端节点上的文件的标记混杂在一起。在这个实施例中,当选择了代表存储在服务器节点上的文件的标记时基于服务器的FTA就可操作。在另一实施例中,有多种形式的FTA(参见上文和下文)与适当形式的FTA一起进行工作,所述适当形式的FTA是根据与所选择的图形化标记相关联的文件的位置来激活的。
在一个实施例中,客户端节点上的功能查询主服务器节点,主服务器节点汇集了在所连接的服务器节点上可用的数据文件有关的信息。主服务器节点呈现出在主服务器和连接的服务器上可用的文件的汇集列表,并在呈现给用户之前使用推送或牵引机制把它呈现给客户端节点。在另一实施例中,客户端节点上的功能在把可用的文件呈现给用户之前为服务器侧的FTA查询涉及数据文件可用性的各个单个节点。在另一实施例中,客户端节点上的功能(例如,网络文件系统NFS或Andrew文件系统AFS)使一个或多个服务器节点上的文件呈现为客户端节点文件系统的一部分。这些文件随后被呈现给用户以供由基于服务器的FTA使用。
在一个实施例中,服务器节点上的一个或多个文件的可用性是由标识或验证标记部分地确定的。服务器节点文件上的每个文件与定义用户、用户组、或特权级的标记直接或间接地相关联。客户端节点向主服务器节点或一个或多个单个服务器节点提供指示用户的身份或用户特权级的一个或多个标记。服务器节点针对基于服务器的FTA可用的每个文件的标记验证这些标记。如果所提供的标记与相关联的标记相匹配,该文件就可以由客户端节点使用,并被图形化地呈现给用户用于可能的基于服务器的FTA活动。
如上所述,典型地,利用图形用户界面和一个或多个输入设备,用户可以通过与显示的图形标记进行交互来选择数据文件(步骤204)。一旦用户选择了一个数据文件,该选择就被传输到多个服务器系统中的一个(步骤208)。在一个实施例中,该选择被传输到主服务器节点。主服务器节点标识寄宿该数据文件的服务器节点并把该选择提供给合适的服务器节点以供进一步处理。在另一实施例中,该选择被传输到一个或多个服务器节点,或者是专门与所选择的数据文件相关联的服务器节点,或者是被标识出通常对基于服务器的FTA可用的服务器节点。后者的行为通过文件镜像和数据冗余的其它先进形式方便了在服务器之间提供负载平衡文件的服务。
在提供了对数据文件的选择之后,就接收到了一个执行与所选择的数据文件相关联的可执行程序的请求(步骤212)。如上所述,该请求可能来自主服务器节点、寄宿所选择的数据文件的服务器节点、或者不寄宿所选择的数据文件的服务器节点。作为响应,客户端节点执行与该数据文件相关联的可执行程序(步骤216)。
在一个实施例中,客户端节点接收与所选择的数据文件相关联的数据以便由执行程序进行处理(步骤220)。在另一实施例中,客户端节点接收一个指向所选择的数据文件的指针。客户端节点利用所提供的指针来产生对数据的一个或多个请求(例如顺序的或随机的),它把这些请求提供给一个或多个服务器节点以由主服务器节点、寄宿所选择的数据文件的服务器节点和不寄宿所选择的数据文件的服务器节点提供服务,如上所述。在一个实施例中,使用一种协议来传输这些请求,比如像超文本传输协议HTTP、安全HTTP(HTTPS)(即使用SSL)、消息传送应用编程接口(MAPI)协议、实时流化协议(RTSP)、用于用户数据报协议方案的实时流化协议(RTSPU)、由Seqattle,WA的RealNetwork公司开发的渐进网络多媒体(PNM)协议、或者生产消息规范(MMS)协议。
已经接收到与所选择的数据文件相关联的数据,客户端节点通常通过执行程序来处理接收到的数据(步骤224)。客户端节点通常把处理结果显示给用户。在一个实施例中,处理和显示周期是反复的,来自用户的更多控制输入会导致更进一步的处理和显示,继而又会导致更多来自用户的控制输入,等等。
图9B举例说明了服务器节点在服务器端FTA中的典型角色。接收到一个用于规定数据文件类型和要在客户端系统上执行的可执行程序之间的关联的映射(步骤240)。数据文件被存储在多个服务器系统中的其中一个上(步骤244)。由服务器节点接收到对存储的数据文件的选择(步骤248),并用接收到的映射标识与所选择的数据文件的类型相关联的可执行程序(步骤252)。向客户端系统发送一个请求以执行标识出的可执行程序(步骤256)。
由服务器节点接收到的映射(步骤240)规定数据文件和可执行程序之间的关联,并且在这个方面类似于基于客户端的FTA中使用的映射。该映射与在基于客户端的FTA中所使用的映射之间的不同之处在于:它规定要在客户端节点上执行的可执行程序。对应用在客户端节点上执行的实施例来说,该相关联的程序通常是独立的应用并且不是调用第二个可执行程序的应用的瘦客户端应用。
然而,在一些实施例中,客户端节点从服务器节点接收应用执行请求,并把执行请求重定向到另一个服务器节点而不是执行标识出的可执行程序(并因而执行该应用)。由此,客户端节点把执行请求重定向到的服务器节点就是执行该标识出的可执行程序的节点。在这些实施例中,基于客户端的FTA“重载(override)”基于服务器的FTA,因为由客户端映射标识出的服务器执行应用程序,而不是由服务器端映射标识出的节点。
在一个实施例中,映射是作为独立的条目加以接收的。在另一实施例中,映射被汇集并按组被呈现,或者被汇集并与诸如软件更新这样的其它数据一起被传输。映射是通过有效电信链路加以提供的,或者以二进制或文本格式存储在一个或多个可移除存储介质中。
如上所述,所述映射以不同级别的粒度规定数据文件或可执行程序之间的链接。特定的映射链接特定的数据文件或特定类型的数据文件以及特定的可执行程序或特定类型的可执行程序。可执行程序用厂商名或文件名来标识。
在一个实施例中,接收到的映射被并入到一个包含系统数据库的文件中,该系统数据库跟踪可执行程序和数据文件或数据文件类型之间的关联。在另一实施例中,使用推送机制、牵引机制或这两种机制的组合来定期地或根据需要地更新这些映射。
在另一实施例中,服务器系统接收一个或多个用于确定一个标识出的、关联的可执行程序是在客户端系统上还是多个服务器系统中的其中一个服务器系统上执行的规则。这些规则是一个或多个变量的函数,所述变量包括但不限于:客户端系统上的执行负载、多个服务器系统中的其中一个服务器系统上的执行负载、多个服务器系统上的总和执行负载、客户端系统和多个服务器系统之间的连接速度,或者这些或其它因素的组合。
在操作中,一个或多个数据文件被存储在一个或多个服务器节点上(步骤244)。通过有效的电信链路或者离线地使用一种或多种形式的便携式存储介质向服务器节点提供数据文件。数据文件在规定的时间窗口内按规定的时间被提供,或当正被讨论的客户端节点处于空闲状态时、或当其处理器执行负载在特定的预定级别之下时,数据文件被提供。
服务器节点接收对代表所存储的数据文件的图形化标记的选择(248)。当接收到选择时,服务器识别在接收的映射中所标识的任何相关联的可执行程序或可执行程序的类型(步骤252)。把一个执行该标识出的可执行程序的请求传输到客户端节点以供执行(步骤256)。
在一个实施例中,载入任何相关联的规则并对其进行评估,以便确定该可执行程序要在客户端节点、多个服务器节点中的其中一个服务器节点还是像在分布式处理环境中那样要在几个服务器节点上执行。如果对规则的评估指示执行要发生在客户端节点上,就把一个执行相关联的可执行程序的请求传输到客户端节点(步骤256)。在一个实施例中,当对规则的评估指示该相关联的可执行程序应该在客户端节点上执行时,该客户端节点就直接向用户提供执行程序的输出,绕过客户端节点上任何操作中的瘦客户端应用。
在一个实施例中,服务器节点提供与所选择的数据文件相关联的数据以供处理(步骤260)。通常这个信息由运行在客户端节点上的可执行程序处理并且把结果提供给用户,其中用户进一步的输入导致进一步的处理和显示。在另一实施例中,服务器节点提供一个指向所选择的数据文件的指针或其它引用。客户端节点使用所提供的引用来产生对数据的请求,例如顺序的或随机的。这些请求被传输到服务器节点,该服务器节点通过响应请求提供数据而服务于这些请求。
在另一实施例中,由服务器节点提供的服务(例如服务数据请求或提供与所选择的文件相关联的数据)是由一致动作的多个服务器(例如一个服务器场)提供的。在一个实施例中,主服务器节点接收要处理的请求或数据并直接服务于它们。在另一实施例中,主服务器节点把客户端请求委托给其它服务器节点。这个技术便于服务器节点间的平衡处理。在另一实施例中,在几个并行负责处理或数据访问的服务器节点之间把请求细分和分配。
基于web的FTA
参看图10A,在一个实施例中,本发明通过选择在客户端节点上呈现的、代表位于web服务器上的数据文件的图形标记而在服务器节点上能够进行透明地执行程序。客户端节点呈现代表在web服务器上存储的数据文件的图形描绘(步骤280)。客户端节点接收对数据文件的图形描绘的选择(步骤284),并把它提供给web服务器(步骤288)。客户端节点接收一个执行第一个可执行程序的请求,该请求包括涉及要在一客户端系统和多个服务器系统中的其中一个服务器系统上执行的、与数据文件相关联的第二个可执行程序的信息(步骤292)。客户端节点执行第一个可执行程序(步骤296)并提供去执行第二个可执行程序的请求(步骤300)。客户端节点从第二个可执行程序的执行接收应用输出数据(步骤304)并把它显示给最终用户(步骤308)。
仍然参看图10A,客户端节点向用户呈现存储在一个或多个web服务器上的一个或多个数据文件的图形描绘(步骤280)。数据文件的图形化描绘包括但不限于:图形标记(例如图标)的显示、或者像SGML文档中的超链接那样的对文件名的显示。在一个实施例中,代表在web服务器上存储的文件的标记是和代表在客户端节点上存储的文件或一个或多个在服务器节点上存储的文件的标记混合在一起的。在这个实施例中,当选择了代表在web服务器上存储的文件的图标时,基于web的FTA就可操作。在另一实施例中,有多种形式的FTA(见上)与适当形式的FTA一起工作,所述适当形式的FTA是根据与所选择的图形标记相关联的文件的位置来激活的。
客户端节点利用键盘、鼠标、光笔、压力敏感平板电脑、触觉接口或其它输入设备来接收用户对特定数据文件的选择(步骤284)。客户端节点把该选择提供给web服务器(步骤288),通常使用诸如像HTTP这样的电信协议。
响应于提供所选择的数据文件,客户端节点接收一个执行请求(步骤292)。该请求包括几个参数,包括但不限于:对第一个可执行程序的引用、和对与该数据文件相关联的第二个可执行程序的引用。在一个实施例中,可执行程序由厂商名或文件名加以标识,文件名由客户端系统解析为文件名、路径名或对期望的可执行程序的引用中的至少一个。该请求通常包括一个标识在web服务器上的所选择的文件的参数,例如统一资源定位符(URL)。
在一个实施例中,示例性请求是″MetaFrame MSWORD.EXEhttp://12.34.127.128/doc/VendorList.RTF″。第一个参数是″MetaFrame″,代表要在客户端节点上执行的第一个可执行程序,客户端节点把它标识为存储在″C:\PROGRA~1\CITRIX/MF.EXE″的可执行程序。第二个参数是″MSWORD.EXE″,它指的是要在服务器节点上解析并执行的第二个可执行程序。第三个参数是″http://12.34.127.128/doc/VendorList.RTF″,它标识用户已经选择的、在web服务器上的文件。在操作中,客户端节点执行MetaFrame并把去执行WORD的请求转发到服务器节点上。
在另一个实施例中,服务器节点把一个包括控制信息(例如安全令牌)的请求传输到客户端节点。例如,第一个可执行程序可以在请求中包括控制信息以在服务器节点上执行第二个可执行程序。因而,控制信息可以在接收到执行第二个可执行程序(例如WORD)的请求时,调用服务器节点或web服务器上的第三个可执行程序。此第三个程序可以更改应用的递送方式(例如,要求用户在递送应用前提供合适的验证凭证,例如密码,要求服务器节点在应用递送前等待来自另一节点的密钥)。在另一实施例中,控制信息可以向服务器节点提供一个标记以使服务器节点能够访问先前它不能访问的第二个可执行程序。
在一个实施例中,客户端节点接收到在web服务器上所选择的文件,并高速缓存该文件以便进行编辑。在这个实施例中,客户端节点向服务器节点提供与该文件相关联的数据以通过执行程序进行处理。在另一实施例中,客户端节点向服务器节点提供对已高速缓存的文件的引用。服务器节点使用所提供的引用来产生对客户端节点所服务的数据的请求。在另一实施例中,标识所选择的数据文件的参数被直接提供给服务器节点,服务器节点直接与web站点联系以得到与所选择的文件相关联的数据,或者把请求委托给服务器场中的另一个服务器。
客户端节点执行第一个可执行程序(步骤296),它在一个实施例中是与METAFRAME相类似的瘦客户端应用,以用于接收应用输出数据并把它显示给最终用户。在一个实施例中,客户端节点在需要时或按规定的时间使用推送技术、牵引技术或者这两种技术的组合来从服务器节点或web服务器接收第一个可执行程序。
客户端节点向主服务器节点、一个服务器节点或多个服务器节点提供执行第二个可执行程序的请求(步骤300)。在一个实施例中,多个服务器节点合作并分担执行任务。这个功能允许在服务器场或服务器阵列中实现负载平衡。
在一个实施例中,客户端节点接收一个或多个规则,用于确定第二个可执行程序要在客户端系统还是在多个服务器系统中的一个上执行。这些规则是一个或多个变量的函数,所述变量包括但不限于:客户端系统上的执行负载、多个服务器系统中的其中一个服务器系统上的执行负载、多个服务器系统上的总和执行负载、客户端系统和多个服务器系统之间的连接速度、或者这些及其它因素的组合。在操作中,任何相关联的规则都被装入并被评估以确定第二个可执行程序是在客户端节点、多个服务器节点中的其中一个服务器节点、还是像在分布式处理环境中在几个服务器节点上执行。在一个实施例中,如果对规则的评估指示:执行要发生在客户端节点上,则客户端节点就直接向用户提供执行程序的输出,绕过客户端节点上任何正在运行的瘦客户端应用。
一旦执行,相关联的应用程序通常就将产生一种多或种形式的输出数据,包括但不限于图形输出数据或声音。在一个实施例中,客户端节点通过与服务器节点的连接接收应用输出数据(步骤304),并且将其显示给最终用户(步骤308)。在一个实施例中,应用输出数据是以由客户端节点直接地或在客户端节点上执行的第一个可执行程序或另一可执行程序支持的一种或多种格式提供的。在另一实施例中,应用输出数据是一个或多个代表图形数据的位流,压缩或未压缩的;代表要显示的向量图形的标记语言;或一系列系统相关的调用或API调用,这些调用在执行时为用户把应用输出数据显示在客户端节点上。
图10B举例说明了web服务器在基于web的FTA中的角色。web服务器提供数据文件的图形描绘(步骤320)。web服务器随后把一个执行请求传输给客户端节点(步骤324)。
在一个实施例中,web服务器提供与它所寄宿的、可以由最终用户选择的数据文件有关的图形化标记(步骤320)。在另一实施例中,web服务器通过对验证或身份标记和与每个所寄宿的文件相关联的标记进行比较来确定哪些数据文件可以为最终用户所用。在又一实施例中,web服务器提示其它连接的服务器节点或web服务器去提供与它们所寄宿的、用户可以访问的这些文件有关的图形标记,汇集这些标记并自身呈现出它们或者留给负责呈现的各个单独的服务器。
web服务器通常接收对与所呈现的文件相关联的标记的选择。在所选择的文件与一个连接的服务器相关联的实施例中,接收web服务器或者把接收到的选择委托给合适的服务器,或者从适当的服务器检索与所选择的文件相关联的数据,自己处理可执行程序和数据请求。在一个实施例中,在这些选项之间的选择是根据设计用来平衡在服务器之间负载的评估而作出的。
在一个实施例中,web服务器接收单个映射以便并入到数据文件中供以后使用。在另一实施例中,web服务器地接收成组的映射或接收与其它数据(例如软件更新)汇集在一起的映射。映射可以通过有效的电信链路加以传输,或者存储在一个或多个可移除存储介质上的文件中。在一个实施例中,可以定期地或在需要时使用推送技术、牵引技术或这两种技术的组合来更新这些映射。
利用接收到的映射,web服务器利用基于web的FTA机制来确定所选择的数据文件是否与要执行的可执行程序相关联。映射通常以不同级别的粒度规定数据文件或可执行程序之间的关联。在一个实施例中,映射链接特定的数据文件或数据文件类型和特定的可执行程序或可执行程序类型,由厂商名或文件名来标识。在另一实施例中,映射文件还包括与用户身份有关的参数,包括但不限于:一个或多个用户名、公共密钥和IP地址。这个功能使得web服务器能够维护多组在单个用户间变化的文件类型的关联。
使用接收到的映射信息,web服务器构建一个执行请求并把它传输给客户端节点(步骤324),客户端节点随后如上所述执行请求。在一个实施例中,web服务器还向客户端提供第一个可执行程序以供执行。在另一实施例中,web服务器还提供对所选择的数据文件的引用,其使其它计算节点能够对与所选择的数据文件相关联的数据的请求进行公式化。在又一实施例中,web服务器还服务于来自其它计算节点的、用所提供的引用公式化的数据请求。在又一实施例中,服务器节点向客户端节点或多个服务器节点中的其中一个服务器节点提供与所选择的数据文件相关联的数据以便于随后的处理。
在另一实施例中,web服务器还向客户端节点提供一个或多个规则,该规则允许客户端节点根据一些因素确定第二个可执行程序应在客户端节点、多个服务器节点中的其中一个服务器节点还是在多个服务器节点上执行,所述因素包括但不限于:客户端系统上的负载、特定服务器系统上的负载、多个服务器系统上的负载、在客户端节点、web服务器、一个服务器节点或多个服务器节点中的一个或多个之间的连接的可用或理论带宽。
本发明可以被提供为在一个或多个实际产品中所包含的一个或多个计算机可读程序。实际产品可以是软盘、硬盘、CD ROM、闪存卡、RAM、ROM或磁带。一般来讲,计算机可读程序可以用任何编程语言来实现。可以使用的一些语言实例包括C、C++或JAVA。软件程序可以对象代码存储在一个或多个实际产品上。
本领域的技术人员在不脱离本发明的精神和范围的情况下下可以作出很多修改和改进。因此,必须清楚地理解到:所示出的举例说明的仅仅为了示范目的,并且不应该被看作是对本发明的限制,本发明由下面的权利要求来限定。这些权利要求包括了它们在字面上所阐明的以及那些并没有本质不同的等价成分,即使这些等价成分在其它方面与上面的说明中所展示并描述的不完全相同。

Claims (110)

1.一种用于在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)在客户端系统从多个服务器系统中的其中一个服务器系统接收映射,该映射规定在多个可执行应用程序和被可执行应用程序接受来处理的数据文件的相应多种类型之间的关联;
(b)由客户端系统呈现在客户端系统上所存储的数据文件的图形描绘;
(c)由客户端系统接收对数据文件的图形描绘的选择;
(d)由客户端系统利用接收到的映射来标识与用所选择的图形描绘所标识的文件类型相关联的多个可执行应用程序之一;以及
(e)由客户端系统向多个服务器系统之一发送一个执行多个可执行应用程序中所标识的一个可执行程序的请求。
2.如权利要求1所述的方法,步骤(a)包括:
接收用于规定多个数据文件类型、和用于建立与服务器系统的连接的程序、用于处理数据文件的相应多个可执行程序以及供可执行程序使用的参数之间的关联的映射。
3.如权利要求1所述的方法,还包括下列步骤:
修改客户端系统上的文件以便包括接收到的映射。
4.如权利要求1所述的方法,还包括下列步骤:
执行第二个可执行程序以显示应用输出数据;
5.如权利要求1所述的方法,还包括下列步骤:
从该执行程序接收应用输出数据;
6.如权利要求1所述的方法,还包括下列步骤:
以定期方式或按需方式中的至少一种更新接收到的映射。
7.如权利要求1所述的方法,还包括下列步骤:
接收用于确定一个标识出的可执行程序要在客户端系统上执行还是要在多个服务器系统中的其中一个服务器系统上执行的规则。
8.如权利要求1所述的方法,还包括下列步骤:
接收用于确定一个标识出的可执行程序要在客户端系统上执行还是要在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列项中的至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
9.如权利要求1所述的方法,步骤(e)包括下列步骤:
(e-a)接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则;
(e-b)评估该规则以确定该标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行;以及
(e-c)根据步骤(e-b)中的评估结果发送在多个服务器系统中的其中一个服务器系统上执行标识出的可执行程序的请求。
10.如权利要求1所述的方法,步骤(e)包括下列步骤:
(e-a)接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列各项中的至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
(e-b)评估该规则以确定该标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行;以及
(e-c)根据步骤(e-a)中的评估结果发送在多个服务器系统中的其中一个服务器系统上执行标识出的可执行程序的请求。
11.如权利要求1所述的方法,还包括下列步骤:
(f)传输包括所选择的数据文件的数据,这些数据的至少一部分用于由执行程序来处理。
12.如权利要求11所述的方法,步骤(f)包括下列步骤:
(f-a)提供一个指向所选择的数据文件的指针;以及
(f-b)利用所提供的指针对与所选择的数据文件相关联的数据的请求作出响应。
13.一种用于在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)向客户端系统发送一个映射,该映射规定在多个可执行应用程序和被可执行应用程序接受来处理的数据文件的相应多种类型之间的关联;
(b)接收一个执行可执行应用程序的请求;以及
(c)在多个服务器系统中的其中一个服务器系统上执行多个可执行应用程序中所请求的一个可执行应用程序。
14.如权利要求13所述的方法,步骤(a)包括:提供一个映射,该映射规定多个数据文件类型、用于建立与服务器系统之间连接的程序、用于处理数据文件的相应多个可执行应用程序以及供该可执行程序使用的参数之间的关联。
15.如权利要求13的方法,还包括下列步骤:
从执行可执行程序的服务器系统向客户端系统提供应用输出数据。
16.如权利要求13所述的方法,还包括下列步骤:
提供第二个应用,用于显示来自执行可执行程序的服务器系统的应用输出数据。
17.如权利要求13所述的方法,还包括下列步骤:
以定期方式或按需方式中的至少一种更新所提供的映射。
18.如权利要求13所述的方法,还包括下列步骤:
(d)接收与数据文件相关联的数据,以供由执行程序处理。
19.如权利要求18所述的方法,步骤(d)包括下列步骤:
(d-a)接收一个指向数据文件的指针;以及
(d-b)利用接收到的指针发送对与数据文件相关联的数据的请求。
20.如权利要求18所述的方法,还包括下列步骤:
使用可执行程序处理接收到的数据。
21.如权利要求20所述的方法,还包括下列步骤:
提供处理后的数据。
22.如权利要求13所述的方法,还包括下列步骤:
提供一种用于确定一个可执行程序要在客户端系统还是在多个服务器系统中的其中一个服务器系统上执行的规则。
23.如权利要求13所述的方法,还包括下列步骤:
提供一种用于确定一个可执行程序要在客户端系统还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器之间的确定指定为下列各项中至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
24.一种用于在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)由客户端系统接收一个映射,该映射规定在多个可执行应用程序和被可执行应用程序接受来处理的数据文件的相应多种类型之间的关联;
(b)由客户端系统呈现在客户端系统上存储的数据文件的图形描绘;
(c)由客户端系统接收对数据文件的图形描绘的选择;
(d)由客户端系统用接收到的映射来标识与用所选择的图形描绘所标识的文件类型相关联的多个可执行程序之一;以及
(e)由客户端系统向多个服务器系统中的其中一个服务器系统发送一个执行多个可执行应用程序中所标识出的一个可执行程序的请求多个服务器系统之一。
25.如权利要求24所述的方法,其中,步骤(a)包括:接收一个映射,该映射规定在多个数据文件类型、用于建立与服务器系统之间连接的程序、用于处理该数据文件的相应多个可执行程序以及供可执行程序使用的参数之间的关联。
26.如权利要求24所述的方法,还包括下列步骤:
由客户端系统修改文件,以便包括接收到的映射。
27.如权利要求24所述的方法,还包括下列步骤:
向客户端系统提供用于显示应用输出的第二个可执行程序。
28.如权利要求24所述的方法,还包括下列步骤:
由多个服务器系统中的其中一个服务器系统以定期方式或按需方式中的至少一种更新接收到的映射。
29.如权利要求24所述的方法,还包括下列步骤:
由多个服务器系统中的其中一个服务器系统执行该可执行程序。
30.如权利要求29所述的方法,还包括下列步骤:
由执行该可执行程序的服务器系统提供应用输出数据。
31.如权利要求24所述的方法,还包括下列步骤:
(f)由客户端系统传输包括所选择的数据文件的数据,这些数据中至少部分用于由执行程序来处理。
32.如权利要求31所述的方法,其中,步骤(f)包括下步骤:
(f-a)由客户端系统提供一个指向所选择的数据文件的指针;
(f-b)由客户端系统利用所提供的指针对与所选择的数据文件相关联的数据的请求作出响应。
33.如权利要求31所述的方法,还包括下列步骤:
由多个服务器系统中的其中一个服务器系统使用可执行程序来处理所提供的数据.
34.如权利要求33所述的方法,还包括下列步骤:
由多个服务器系统中的其中一个服务器提供处理后的数据。
35.如权利要求24所述的方法,还包括下列步骤:
在客户端系统接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
36.如权利要求24所述的方法,还包括下列步骤:
在客户端系统接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器之间的确定指定为下列项中至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
37.如权利要求24所述的方法,其中步骤(e)包括下列步骤:
(e-a)接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则;
(e-b)评估一用以确定该标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则;
(e-c)根据步骤(e-a)中的评估结果发送一个在多个服务器系统中的其中一个服务器系统上执行该标识出的可执行程序的请求。
38.如权利要求24所述的方法,其中,步骤(e)包括下列步骤:
(e-a)在客户端系统接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列项中的至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
(e-b)评估所接收的规则以确定该标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行;以及
(e-c)根据步骤(e-a)中的评估结果发送一个在多个服务器系统中的其中一个服务器系统上执行该标识出的可执行程序的请求。
39.如权利要求1所述的方法,还包括下列步骤:
执行用以显示应用输出数据的第二可执行程序,第二可执行程序经由表示层协议接收应用输出数据。
40.如权利要求1所述的方法,还包括下列步骤:
执行用以显示应用输出数据的第二可执行程序,第二可执行程序经由独立计算体系结构协议接收应用输出数据。
41.如权利要求1所述的方法,还包括下列步骤:
执行用以显示应用输出数据的第二可执行程序,第二可执行程序经由远程桌面协议接收应用输出数据。
42.如权利要求13所述的方法,还包括下列步骤:
从执行可执行程序的服务器系统提供用以显示应用输出数据的第二可应用,第二应用经由独立计算体系结构协议接收应用输出数据。
43.如权利要求13所述的方法,还包括下列步骤:
从执行可执行程序的服务器系统提供用以显示应用输出数据的第二应用,第二应用经由远程桌面协议接收应用输出数据。
44.如权利要求24所述的方法,还包括下列步骤:
执行用以显示应用输出数据的第二可执行程序,第二可执行程序经由表示层协议接收应用输出数据。
45.如权利要求24所述的方法,还包括下列步骤:
执行用以显示应用输出数据的第二可执行程序,第二可执行程序经由独立计算体系结构协议接收应用输出数据。
46.如权利要求24所述的方法,还包括下列步骤:
执行用以显示应用输出数据的第二可执行程序,第二可执行程序经由远程桌面协议接收应用输出数据。
47.一种用于在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)向客户端系统呈现在多个服务器系统上中的一个服务器系统上存储的数据文件的图形描绘;
(b)由客户端系统通过对数据文件的图形描绘的选择来接收对数据文件的选择;
(c)把对数据文件的选择传输给多个服务器系统中的其中一个服务器系统;
(d)从多个服务器系统中的其中一个服务器系统接收一个执行与所选择的数据文件相关联的可执行应用程序的请求,其中可执行应用程序由多个服务器系统中的一个服务器系统根据一个映射做出选择,该映射规定在可执行应用程序和被可执行应用程序接受来处理的所选择的数据文件类型之间的关联;以及
(e)执行与所选择的数据文件类型相关联的可执行应用程序。
48.如权利要求47所述的方法,还包括下列步骤:
(f)接收与所选择的数据文件相关联的数据,以供由执行程序来处理。
49.如权利要求48所述的方法,步骤(f)还包括下列步骤:
(f-a)接收一个指向所选择的数据文件的指针。
50.如权利要求49所述的方法,步骤(f)还包括下列步骤:
(f-b)用接收到的指针从多个服务器系统中的其中一个服务器系统检索与所选择的数据文件相关联的数据;
51.如权利要求48所述的方法,其中,步骤(f)还包括下列步骤:
(f-a)用超文本传输协议(HTTP)和消息传送应用程序编程接口(MAPI)协议中的至少一种接收与所选择的数据文件相关联的数据以供进行处理。
52.如权利要求48所述的方法,还包括下列步骤:
使用该执行程序来处理接收到的数据。
53.如权利要求52所述的方法,还包括下列步骤:
提供处理后的数据。
54.一种在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)由多个服务器系统中的一个服务器系统接收一个映射,该映射该映射规定在可执行应用程序和被可执行应用程序接受来处理的数据文件类型之间的关联;
(b)在多个服务器系统中的其中一个服务器系统上存储数据文件;
(c)由多个服务器系统中的一个服务器系统接收对所存储的数据文件的选择;
(d)用接收到的映射标识与所选择的数据文件类型相关联的可执行应用程序;以及
(e)向客户端系统发送一个执行标识出的可执行应用程序的请求。
55.如权利要求54所述的方法,还包括下列步骤:
修改多个服务器系统中的其中一个服务器系统上的数据文件以便包括接收到的映射。
56.如权利要求54的方法,还包括下列步骤:
以定期方式或按需方式中的至少一种更新接收到的映射。
57.如权利要求54所述的方法,还包括下列步骤:
接收用于确定一个标识出的执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
58.如权利要求54所述的方法,还包括下列步骤:
接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列项中至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
59.如权利要求54所述的方法,步骤(e)包括下列步骤:
(e-a)评估一个用于确定该标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
60.如权利要求59所述的方法,步骤(e)包括下列步骤:
(e-b)根据步骤(e-a)中的评估结果发送一个在客户端系统上执行该标识出的可执行程序的请求。
61.如权利要求54所述的方法,还包括下列步骤:
(f)提供与所选择的数据文件相关联的数据,以供由执行程序来处理。
62.如权利要求61所述的方法,其中,步骤(f)还包括下列步骤:(f-a)提供一个指向所选择的数据文件的指针。
63.如权利要求62所述的方法,还包括下列步骤:
(f-b)利用所提供的指针对与所选择的数据文件相关联的数据的请求作出响应。
64.一种用于在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)由多个服务器系统中的其中一个服务器系统接收一个映射,该映射规定在可执行应用程序和被所述可执行应用程序接受来处理的数据文件类型之间的关联;
(b)在多个服务器系统中的其中一个服务器系统上存储数据文件;
(c)在客户端系统上接收对所存储的数据文件的选择;
(d)把对数据文件的选择传输到多个服务器系统中的其中一个服务器系统;
(e)在多个服务器系统中的其中一个服务器系统上用接收到的映射标识与所选择的数据文件类型相关联的可执行程序;
(f)向客户端系统发送一个执行标识出的可执行程序的请求;以及
(g)在客户端系统执行与所选择的数据文件相关联的可执行程序。
65.如权利要求64所述的方法,还包括下列步骤:
(h)由客户端系统检索与所选择的数据文件相关联的数据。
66.如权利要求65所述的方法,其中,步骤(h)包括下列步骤:
(h-a)使用超文本传输协议(HTTP)和消息传送应用编程接口(MAPI)协议中的至少一种检索与所选择的数据文件相关联的数据以供进行处理。
67.如权利要求64所述的方法,还包括下列步骤:
向客户端系统提供一个指向所选择的数据文件的指针。
68.如权利要求67所述的方法,还包括下列步骤:
由客户端系统用所提供的指针检索与所选择的数据文件相关联的数据。
69.如权利要求64所述的方法,还包括下列步骤:
接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
70.如权利要求64所述的方法,还包括下列步骤:
接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列项中至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
71.如权利要求64所述的方法,其中,步骤(f)包括下列步骤:
(f-a)由多个服务器系统中的其中一个服务器系统评估一个用于确定标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
72.如权利要求71所述的方法,其中,步骤(f)还包括下列步骤:
(f-b)根据步骤(f-a)中的评估结果发送一个在客户端系统上执行标识出的可执行程序的请求。
73.如权利要求64所述的方法,还包括下列步骤:
使用执行程序处理接收到的数据。
74.如权利要求73所述的方法,还包括下列步骤:
提供处理后的数据。
75.一种在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)在客户端系统上呈现在web服务器上存储的数据文件的图形描绘;
(b)从web服务器上接收一个在客户端系统上执行第一可执行程序的请求,所述请求包括涉及与数据文件相关联的第二可执行程序的信息,第二可执行程序被根据一规定在第二可执行程序和第二可执行程序接受来处理的数据文件类型之间的关联而选择,第二可执行程序在客户端系统上执行或多个服务器系统中的其中一个服务器系统上执行。
(c)由第一可执行程序从第二可执行程序接收应用输出数据;
(d)由第一个可执行程序格式化接收到的应用输出数据以供呈现。
76.如权利要求75所述的方法,还包括下列步骤:
接收第一可执行程序。
77.如权利要求75所述的方法,还包括下列步骤:
接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
78.如权利要求75所述的方法,还包括下列步骤:
接收用于确定一个标识出的可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列项中至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、以及客户端系统和多个服务器系统之间的连接速度。
79.如权利要求75所述的方法,还包括下列步骤:
(e)发送一个执行与所选择的数据文件相关联的第二可执行程序的请求。
80.如权利要求79所述的方法,步骤(e)包括下列步骤:
(e-a)评估一个用于确定该第二可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则;以及
(e-b)根据步骤(e-a)中的评估结果发送一个在多个服务器系统中的其中一个服务器系统上执行第二可执行程序的请求。
81.如权利要求75所述的方法,还包括下列步骤:
从第二可执行程序接收应用输出数据。
82.如权利要求81所述的方法,还包括下列步骤:
用第一可执行程序显示应用输出数据。
83.如权利要求75所述的方法,还包括下列步骤:
接收与数据文件相关联的数据。
84.如权利要求83所述的方法,还包括下列步骤:
向执行第二可执行程序的计算机提供接收到的数据。
85.如权利要求75所述的方法,还包括下列步骤:
接收一个指向数据文件的指针。
86.如权利要求85所述的方法,还包括下列步骤:
用接收到的指针请求与数据文件相关联的数据。
87.一种用于在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)向客户端系统传输在web服务器上存储的数据文件的图形描绘;
(b)由web服务器提供一个在客户端系统上执行用于接收应用输出数据的第一可执行程序的请求,该请求包括涉及要在客户端系统上还是在多个服务器系统中的其中一个服务器系统上执行的第二可执行程序的信息,第二可执行程序被根据一规定在第二可执行程序和第二可执行程序接受来处理的数据文件类型之间的关联而选择。
88.如权利要求87所述的方法,还包括下列步骤:
提供第一可执行程序。
89.如权利要求87所述的方法,还包括下列步骤:
提供一个指向数据文件的指针。
90.如权利要求89所述的方法,还包括下列步骤:
利用所提供的指针对与数据文件相关联的数据的请求提供服务。
91.如权利要求87所述的方法,还包括下列步骤:
提供数据文件的内容。
92.如权利要求87所述的方法,还包括下列步骤:
提供用于确定第二可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
93.如权利要求87所述的方法,还包括下列步骤:
提供用于确定第二可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列项中至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载以及客户端系统和多个服务器系统之间的连接速度。
94.一种用于在包括一个客户端系统和多个服务器系统的网络中能够实现分布式程序执行的方法,该方法包括下列步骤:
(a)由web系统传输在web服务器上存储的数据文件的图形描绘;
(b)由web系统向客户端系统提供一个在客户端系统上执行用于接收应用输出数据的第一可执行程序的请求,该请求包括涉及要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的第二个可执行程序的信息,第二可执行程序被根据一规定在第二可执行程序和第二可执行程序接受来处理的数据文件类型之间的关联而选择;以及
(c)由客户端系统在客户端系统上执行第一可执行程序。
95.如权利要求94所述的方法,还包括下列步骤:
向客户端系统提供第一可执行程序。
96.如权利要求94所述的方法,还包括下列步骤:
在客户端系统接收用于确定第二可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则。
97.如权利要求94所述的方法,还包括下列步骤:
在客户端系统接收用于确定第二可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则,该规则把在客户端系统和多个服务器系统中的其中一个服务器系统之间的确定指定为下列项中至少一个的函数:客户端系统上的负载、多个服务器系统中的其中一个服务器系统上的负载、多个服务器系统上的负载、客户端系统和多个服务器系统之间的连接速度。
98.如权利要求94所述的方法,还包括下列步骤:
(d)向多个服务器系统中的其中一个服务器系统提供一个执行与所选择的数据文件相关联的第二可执行程序的请求。
99.如权利要求98所述的方法,其中,步骤(d)包括下列步骤:
(d-a)由客户端系统评估一个用于确定第二可执行程序要在客户端系统上执行还是在多个服务器系统中的其中一个服务器系统上执行的规则;和
(d-b)由客户端系统根据步骤(d-a)中的评估结果发送一个在多个服务器系统中的其中一个服务器系统上执行第二可执行程序的请求。
100.如权利要求94所述的方法,还包括下列步骤:
由客户系统从第二可执行程序接收应用输出数据。
101.如权利要求100所述的方法,还包括下列步骤:
由客户端系统用第一个可执行程序显示应用输出数据。
102.如权利要求94所述的方法,还包括下列步骤:
由web服务器提供与所选择的数据文件相关联的数据。
103.如权利要求94所述的方法,还包括下列步骤:
由web服务器提供一个指向所选择的数据文件的指针。
104.如权利要求103所述的方法,还包括下列步骤:
由客户端系统利用所提供的指针来请求与所选择的数据文件相关联的数据。
105.如权利要求94所述的方法,其中,步骤(d)还包括:
经由表示层协议接收应用输出数据。
106.如权利要求94所述的方法,其中,步骤(d)还包括:
经由独立计算体系结构协议接收应用输出数据。
107.如权利要求94所述的方法,其中,步骤(d)还包括:
经由远程桌面协议接收应用输出数据。
108.如权利要求75所述的方法,还包括下列步骤:
由第一可执行程序经由表示层协议接收应用输出数据。
109.如权利要求75所述的方法,还包括下列步骤:
由第一可执行程序经由独立计算体系结构协议接收应用输出数据。
110.如权利要求75所述的方法,还包括下列步骤:
由第一可执行程序经由远程桌面协议接收应用输出数据。
111.如权利要求94所述的方法,其中步骤(c)还包括:
由第一可执行程序经由表示层协议接收应用输出数据。
CNB028241878A 2001-10-02 2002-10-01 实现分布式程序执行的方法 Expired - Lifetime CN100354830C (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US09/970,038 2001-10-02
US09/970,038 US7117243B2 (en) 2001-10-02 2001-10-02 Methods for distributed program execution with file-type association in a client-server network
US09/970,037 US6952714B2 (en) 2001-10-02 2001-10-02 Method for distributed program execution with server-based file type association
US09/970,462 US7330872B2 (en) 2001-10-02 2001-10-02 Method for distributed program execution with web-based file-type association
US09/970,037 2001-10-02
US09/970,462 2001-10-02

Publications (2)

Publication Number Publication Date
CN1599901A CN1599901A (zh) 2005-03-23
CN100354830C true CN100354830C (zh) 2007-12-12

Family

ID=27420761

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028241878A Expired - Lifetime CN100354830C (zh) 2001-10-02 2002-10-01 实现分布式程序执行的方法

Country Status (8)

Country Link
EP (5) EP1470482A2 (zh)
JP (1) JP2005505051A (zh)
KR (1) KR100998515B1 (zh)
CN (1) CN100354830C (zh)
AU (1) AU2002332001B2 (zh)
CA (1) CA2462271C (zh)
IL (2) IL161141A0 (zh)
WO (1) WO2003029977A2 (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1847928A1 (en) * 2004-09-30 2007-10-24 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US8613048B2 (en) * 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
WO2006090974A1 (en) * 2005-02-25 2006-08-31 Nhn Corporation Method for installing activex control
US7634578B2 (en) * 2005-07-14 2009-12-15 Microsoft Corporation Node-to-node communication pipelines
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
CA2527447C (en) * 2005-11-18 2015-05-05 Allen Vi Cuong Chan Message oriented construction of web services
US7634717B2 (en) 2006-01-23 2009-12-15 Microsoft Corporation Multiple conditional formatting
US7441113B2 (en) * 2006-07-10 2008-10-21 Devicevm, Inc. Method and apparatus for virtualization of appliances
WO2008060300A1 (en) * 2006-11-16 2008-05-22 Dynomedia, Inc. Systems and methods for distributed digital rights management
JP4789819B2 (ja) * 2007-01-31 2011-10-12 株式会社日立製作所 アプリケーションとデータの管理方法、管理システム、それに用いられるシンクライアント端末、管理サーバ、および、リモート計算機
US7853669B2 (en) 2007-05-04 2010-12-14 Microsoft Corporation Mesh-managing data across a distributed set of devices
JP2009048386A (ja) 2007-08-20 2009-03-05 Chepro:Kk 通信システム、通信方法、通信制御プログラムおよびこのプログラムを記憶した記録媒体
CN101378400B (zh) * 2007-08-30 2013-01-30 国际商业机器公司 实现桌面应用和Web应用聚合的方法、服务器和系统
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
CN101436148B (zh) * 2007-11-14 2011-11-02 华为技术有限公司 集成客户端及进行桌面应用与网络应用交互的方法
US8090877B2 (en) 2008-01-26 2012-01-03 Citrix Systems, Inc. Systems and methods for fine grain policy driven cookie proxying
US9753712B2 (en) 2008-03-20 2017-09-05 Microsoft Technology Licensing, Llc Application management within deployable object hierarchy
US8484174B2 (en) 2008-03-20 2013-07-09 Microsoft Corporation Computing environment representation
US8572033B2 (en) 2008-03-20 2013-10-29 Microsoft Corporation Computing environment configuration
KR100953841B1 (ko) * 2008-04-14 2010-04-20 주식회사위즈베라 액티브엑스 컨트롤의 설치 방법
GB2479068B (en) 2008-10-28 2013-10-02 Hewlett Packard Development Co File type association in a remote computing session
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
CN102075571A (zh) * 2010-12-31 2011-05-25 成都市华为赛门铁克科技有限公司 应用程序的执行方法、设备及系统
CN103095758B (zh) * 2011-11-01 2016-09-21 北大方正集团有限公司 一种分布式文件系统及该系统中处理文件数据的方法
TWI451268B (zh) * 2011-11-08 2014-09-01 Inst Information Industry 提供虛擬桌面之雲端系統、於虛擬桌面播放多媒體之方法以及其電腦可讀取記錄媒體
CN103823821B (zh) * 2012-11-19 2018-02-23 华为终端(东莞)有限公司 网络数据处理方法及设备
WO2014172037A1 (en) * 2013-03-14 2014-10-23 Good Technology Corporation Application registration and interaction
US9292280B2 (en) 2013-03-15 2016-03-22 Google Inc. Systems and methods for multi-tiered format registration for applications
US9489430B2 (en) 2013-05-14 2016-11-08 Google Inc. System and method for identifying applicable third-party applications to associate with a file
US20150365469A1 (en) * 2014-06-17 2015-12-17 Google Inc. System and method for integrating web and native applications from web-based contexts
US20160085765A1 (en) * 2014-09-22 2016-03-24 Amazon Technologies, Inc. Computing environment selection techniques
CN108345619A (zh) * 2017-01-24 2018-07-31 中兴通讯股份有限公司 一种数据删除方法、终端及服务器
KR102137891B1 (ko) * 2018-11-21 2020-07-24 전자부품연구원 Bmc 환경에서의 사용자 특화 운용 메커니즘에 의한 서버 관리 방법, 기록매체, 및 서버
CN112486559B (zh) * 2020-12-15 2023-06-20 青岛海尔科技有限公司 产品调整方法、装置和存储介质及电子装置
CN114257628A (zh) * 2021-11-03 2022-03-29 北京思特奇信息技术股份有限公司 一种注册响应式数据推送方法及系统、电子设备、存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838906A (en) * 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations
US6362836B1 (en) 1998-04-06 2002-03-26 The Santa Cruz Operation, Inc. Universal application server for providing applications on a variety of client devices in a client/server network
ES2206329T3 (es) * 1999-11-29 2004-05-16 Glaxo Group Limited Metodos y sistemas basados en subprocesos para utilizar la potencia inactiva de tratamientos de uno o mas ordenadores para resolver problemas cientificos complejos.
US6530081B1 (en) 1999-11-30 2003-03-04 International Business Machines Corporation Methods, systems and computer program products for controlling applications/preferences of a pervasive computing device
US6421673B1 (en) 1999-12-13 2002-07-16 Novient, Inc. Method for mapping applications and or attributes in a distributed network environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838906A (en) * 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document

Also Published As

Publication number Publication date
JP2005505051A (ja) 2005-02-17
EP1684176A2 (en) 2006-07-26
AU2002332001B2 (en) 2006-11-30
KR100998515B1 (ko) 2010-12-07
EP2383649A1 (en) 2011-11-02
CN1599901A (zh) 2005-03-23
CA2462271A1 (en) 2003-04-10
WO2003029977A2 (en) 2003-04-10
IL161141A0 (en) 2004-08-31
EP1684176A3 (en) 2010-05-05
KR20040066097A (ko) 2004-07-23
EP1470482A2 (en) 2004-10-27
WO2003029977A3 (en) 2004-08-19
EP2383650A1 (en) 2011-11-02
IL161141A (en) 2008-12-29
CA2462271C (en) 2014-03-25
EP1755041A2 (en) 2007-02-21
EP1755041A3 (en) 2010-09-22

Similar Documents

Publication Publication Date Title
CN100354830C (zh) 实现分布式程序执行的方法
US7117243B2 (en) Methods for distributed program execution with file-type association in a client-server network
US6952714B2 (en) Method for distributed program execution with server-based file type association
US7330872B2 (en) Method for distributed program execution with web-based file-type association
US7562115B2 (en) Method and apparatus for connecting a secure peer-to-peer collaboration system to an external system
EP1141828B1 (en) An apparatus and method for determining a program neighborhood for a client node in a client-server network
AU2002332001A1 (en) Methods for distributed program execution with file-type association in a client-server network
US20080141139A1 (en) Architecture and Process for Presenting Application Content to Clients
US20030061279A1 (en) Application serving apparatus and method
JP2003531412A (ja) サービスを作成するための方法および装置
US20030084168A1 (en) Policy enforcement and access control for distributed networked services
US9350738B2 (en) Template representation of security resources
US8271574B1 (en) Content sharing and collaboration
Sah et al. Design, implementation and integration of heterogeneous applications
US20060101023A1 (en) Universal computing paradigm with single-code base utilizing a flexible distributed computing architecture
Mitrovic et al. Siebog: An enterprise-scale multiagent middleware
AU2006233277B2 (en) Methods for distributed program execution with file-type association in a client-server network
AU2006233857B2 (en) Methods for distributed program execution with file-type association in a client-server network
Baker et al. Middleware
Henzel et al. Using web services to promote library‐extension collaboration
KR20050000445A (ko) 터미널 서비스 기반 컴퓨팅 환경에서의 어플리케이션 배포시스템 및 방법
Zhou et al. JECho: Supporting Distributed High Performance Applications with Java Event Channels.
IL143762A (en) System and method for defining a software environment for a client point in a client-server network
Padberg FreeSoDA: a web services-based tool to support documentation in distributed projects
Fei Study and implementation of mobile intelligent agent for network monitoring and management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20071212

CX01 Expiry of patent term