CN101796504B - 会话中介可扩展应用程序接口 - Google Patents
会话中介可扩展应用程序接口 Download PDFInfo
- Publication number
- CN101796504B CN101796504B CN200880106189.5A CN200880106189A CN101796504B CN 101796504 B CN101796504 B CN 101796504B CN 200880106189 A CN200880106189 A CN 200880106189A CN 101796504 B CN101796504 B CN 101796504B
- Authority
- CN
- China
- Prior art keywords
- session
- server
- api
- proxy program
- plug
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
所描述的是一种用于提供应用程序接口的技术,该应用程序接口能充分利用支持第三方插件应用程序的终端服务会话中介基础结构。在一典型的场景中,在用户请求连接以访问第三方插件应用程序时,该应用程序接口可覆盖会话中介逻辑并与该会话中介进程交互以标识该用户可连接到的会话或合适的服务器。用户可通过所标识的会话或合适的服务器来访问第三方插件应用程序。
Description
背景
在诸如终端服务TM(TS)系统等远程访问系统环境中,若干服务器计算机能存放一个或多个应用程序并使其对通过网络访问这些应用程序的若干客户机设备可用。一般而言,用户可以通过在服务器计算机一端和客户机设备处的用户一端之间建立连接来远程地访问该服务器计算机所存放的应用程序。这样的通信在用户和服务器之间创建会话,在该会话期间用户可以与该服务器计算机上存放的应用程序进行交互并使用它,如同该应用程序存在该远程客户机设备的本地。
然而,远程访问系统(例如TS)环境可能不能允许用户访问加载在服务器计算机上的第三方应用程序。这样的第三方应用程序(也可以是“插件”应用程序)可由独立的软件供应商(ISV)来创建或提供。通常,ISV不能向用户提供允许用户访问第三方应用程序的路由行为(进程)。因此,存在对由远程客户机设备和用户访问的、存放在远程服务器计算机上的第三方应用程序的需求。
概述
提供本概述以描述与充分利用能支持第三方插件应用程序的远程访问系统会话中介基础结构相关的概念。这些概念在以下详细描述中进一步描述。本概述并不旨在标识所要求保护的主题的必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
在一个实现中,会话中介服务器监视远程客户机和具有应用程序(插件应用程序)的对该客户机可用的服务器的状态和连接。一种可扩展应用程序接口(API)标识远程客户机可用的会话。
附图简述
参考附图来描述详细描述。在附图中,附图标号的最左边的数字标识该附图标号首次出现的附图。在各附图中,使用相同的标号来指示相同的特征和组件。
图1是示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性网络体系结构的框图。
图2是示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性体系结构的框图。
图3是示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性服务器系统的框图。
图4是示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性方法的流程图。
图5是示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的另一示例性方法的流程图。
图6是示出示例性计算环境的框图。
详细描述
本发明针对用于可支持第三方插件应用程序的远程访问系统会话中介基础结构的技术。远程访问系统的一个示例是微软公司提供的终端服务TM系统。终端服务TM系统在以下示例中讨论;然而,可以理解,所讨论的技术适用于其他远程访问系统。
一种会话中介控制向在远程访问系统环境中通信的用户分配会话。会话中介基于存储在该会话中介中的会话状态信息来向用户分配会话。会话状态信息可包括例如会话ID、用户名、会话所在的服务器的名称、每一服务器计算机中的活动会话的数量等等。
在一远程访问系统环境中,服务器可以接收用户对连接的请求。该服务器可以初始地接受该连接请求并随后查询会话中介以确定可将该用户重定向到哪里。会话中介分析该特定环境的会话状态信息并标识该用户可被重定向的服务器。一合适的服务器可能拥有该用户先前访问但随后断开的会话,该用户可被再次重新连接到该会话。在一实现中,假如用户不拥有任何其他现有会话,则一合适的服务器可以提供该用户可以连接到的新会话。会话中介向被请求的服务器发送信息,从而允许该服务器与该合适的服务器建立连接。例如,该信息可包括机器ID、会话ID、以及该合适的服务器的位置。被请求的服务器分析接收到的该信息并将用户重定向到该合适的服务器。
一旦用户与该合适的服务器建立了连接,则该用户可以访问该合适的服务器中存在的应用程序。这些应用程序可以兼容会话中介逻辑,该逻辑在从终端服务环境中标识该合适的服务器时使用。
远程访问系统环境面对的一个挑战是向用户提供对第三方应用程序的访问,并且尤其是提供对插件应用程序的访问。此处描述的技术通过提供充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的应用程序接口(API)来解决这一挑战。在一典型的场景中,在用户请求连接以访问第三方插件应用程序时,该API可覆盖(override)会话中介逻辑并与该会话中介进程交互以标识该用户可连接到的会话或合适的服务器。用户可通过所标识的会话或合适的服务器来访问第三方插件应用程序。
在一个实现中,第三方插件应用程序可从在远程访问系统环境中作出的改变中更新,例如新会话的创建、会话的删除、服务器中的配置改变、会话的连接和断开信息等。会话中介进程可以管理远程访问系统环境中的改变,并在接收到来自该API的指令时将这些改变通知给第三方插件应用程序。
此处描述的技术可用于多种不同的操作环境和系统中。以下描述多种多样的实现。在下节中讨论适用于实现各种实现的示例性环境。
用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性系统和方法在可由诸如个人计算机等计算设备执行的计算机可执行指令的一般上下文中描述。程序模块一般包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。尽管本发明的系统和方法在上述上下文中描述,但此后描述的动作和操作是用硬件或其他形式的计算平台来实现的。
示例性网络体系结构
图1示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性网络体系结构100。为此,描述了包括可通过网络110与服务器集合104、外部服务器或服务器106、以及会话中介服务器108进行通信的多个客户机设备102-1、102-2、......、102-N(统称为客户机设备104)的网络体系结构100。在一个实现中,网络体系结构100中的服务器集合104、服务器106、以及会话中介服务器108可以与多个个人计算机(PC)、web服务器、以及分布于全球的其他计算设备进行交互。或者,在另一可能的实现中,网络体系结构100可包括通过局域网(LAN)或广域网(WAN)等来与单个服务器通信的有限数量的PC。
网络110可以是局域网(LAN)、广域网、无线网络、光学网络、城域网(MAN)等。客户机设备102可以是通用计算设备、膝上型计算设备、移动计算设备等。
服务器集合104可包括多个服务器112-1、112-2、......、112-N(统称为服务器112)。服务器112可具有供客户机设备102使用的插件114。插件114可包括例如第三方插件应用程序以及任何其他软件应用程序。如上所述,在服务器112和客户机设备102之间创建的会话使得客户机设备102能够访问服务器112中所存放的插件114。服务器112基于从会话中介服务器108接收到的指令来创建这些会话。
在一个实现中,客户机设备102-1可以向服务器集合104发送访问在那里所存放的插件的请求。来自服务器集合104的服务器112-1接受该请求并与客户机设备102-1建立连接。服务器112-1可以向会话中介服务器108发送查询以确定将客户机设备102-1重定向到哪里。需要注意,来自服务器集合104的任何服务器112都可接受来自客户机设备102-1的连接请求。在另一实现中,服务器112-1可以担当专用重定向器并接受来自客户机设备102-1的连接请求。在这样的实现中,请求连接的客户机设备102-1最初可连接到服务器112-1。
会话中介服务器108可实现会话中介模块116和可扩展API 118,它们用于处理服务器112-1所发送的查询并标识可被提供给客户机设备102-1的会话。可扩展API 118可以是基于分布式组件对象模型(DCOM)的接口,该接口使跨服务器网络计算设备而分布的若干软件组件能够彼此通信。在一个实现中,可扩展API 118可以是允许网络环境中的各软件组件之间的通信的基于组件对象模型(COM)的接口。
在一个实现中,会话中介模块116可以接收查询并将对该查询的接收通知给可扩展API 118。可扩展API 118产生一个函数调用,该调用可触发会话中介模块116来标识会话。所标识的会话可以是早先与客户机设备102-1相关联的已有会话。
会话中介模块116随后可以指示服务器112-1将客户机设备102-1重定向到服务器112中的具有一已有会话的任何一个服务器,例如服务器112-2。在这种情况下,服务器112-1重定向客户机设备102-1以与服务器112-2建立连接。在另一实现中,会话中介模块116还可以将客户机设备102-1重定向到具有已有会话的位于服务器集合104之外的服务器108。
在又一实现中,会话中介模块116可标识具有可被提供给客户机设备102-1的新会话的任何合适的服务器112,该合适的服务器可能不具有远程访问系统环境中的任何已有会话。会话中介模块116随后指引服务器112-1将客户机设备102-1重定向到服务器112外部的合适的服务器。在又一实现中,会话中介模块116可将服务器108标识为能够向客户机设备102-1提供新会话。
示例性系统体系结构
图2示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性系统体系结构200。系统体系结构200示出来自服务器集合的一个服务器(例如,服务器112-1)与会话中介服务器108之间的交互。服务器112-1可包括与远程连接管理器204和本地会话管理器206进行交互的会话中介客户机202。需要注意,服务器集合104中的服务器112可包括其各自的会话中介客户机、远程连接管理器、以及本地会话管理器。会话中介服务器108还可包括与寄存器208和可扩展API 118进行交互的会话中介模块116。
服务器112-1最初与客户机设备102-1相连接并从客户机设备102-1接收连接到会话的请求。会话中介客户机202收集该请求以及客户机信息。客户机信息可包括例如客户机设备102在远程访问系统环境中的机器ID和位置。会话中介客户机202将请求和客户机信息发送到会话中介模块116。会话中介模块116可以执行被示为会话中介进程208的一部分的各种功能,以从服务器112中标识客户机设备102-1可被重定向到的一个服务器。
在操作中,会话中介模块116可以将对请求的接收通知给可扩展API118。在一个实现中,会话中介模块116可以执行用于初始化插件114的功能,即初始化212。在初始化212的过程期间,会话中介模块116从寄存器208中确定插件114的类ID。寄存器208可包括例如各插件应用程序的类ID,关于硬件设置、操作系统、非操作系统、客户机设备、服务器等的信息。根据对插件114的类ID的标识,会话中介模块116可以创建插件114的实例,该实例进而初始化插件114。
一旦创建了实例,则可扩展API 118可以触发会话中介模块116来启动被示为断开会话214的函数调用‘TSSDRpcGetUserDisconnectedSessions(获取用户断开会话)’以标识客户机设备102-1可被重定向到的会话。在一个实现中,断开会话214可以确定客户机设备102-1先前连接但稍后断开的已有会话。在这样的场景中,会话中介模块116可以进行函数调用,即‘TSSDRpcPingSD(查验会话目录)’和‘TSSDRpcQuerySDVersion(查询会话目录版本)’,以从会话目录中标识已有会话并同时确定会话目录的版本。以上函数调用可分别被示为查验会话目录216和会话目录版本218。已有会话可以是与服务器集合104中的任何一个服务器112相关联的会话。在另一实现中,已有会话可以与位于服务器集合104外部的服务器106相关联。
在标识了已有会话后,会话中介模块116可以收集会话细节,例如会话ID、机器ID、以及与可提供该已有会话的服务器(例如,服务器112-1)相关的位置。例如,会话中介模块116随后可向远程连接管理器204发送该会话细节连同建立连接的指令。远程连接管理器204基于该会话细节从服务器112中标识服务器112-2,并将客户机设备102-1重定向到服务器112-2来建立连接。在重定向客户机设备102-1的过程期间,远程连接管理器204可向服务器112-2发送连接请求。
会话中介模块116继续监视该连接的状态并用在远程访问系统环境中发生的任何改变来更新可扩展API 118。在该监视过程期间,会话中介模块116可进行被示为服务器重新连接待决220的函数调用,即‘TSSDRpcSetServerReconnectPending(设置服务器重新连接待决)’,以通知可扩展API 118与服务器112-2的连接请求正在待决。
一旦建立了该连接,则会话中介模块116可将连接状态报告给可扩展API 118。例如,会话中介模块116可进行被示为重新连接的会话222的函数调用‘TSSDRpcSetSessionReconnected(设置重新连接的会话)’以使可扩展API 118确认客户机设备102-1已经连接。
可扩展API 118可启动会话中介模块116来产生另一函数调用,即断开会话214,以标识可被提供给客户机设备102-1的新会话。在这种情况下,会话中介模块116收集与来自服务器集合104的服务器(例如,服务器112-2)或外部服务器106相关联的服务器细节,并将该服务器细节发送到远程连接管理器204。远程连接管理器204指导客户机设备102-1来与服务器112-2或服务器106创建新会话。在一实现中,会话中介模块116确认是否创建了新会话,并相应地启动被示为创建会话224的函数调用,即‘TSSDRpcCreateSession(创建会话)’,以将该新会话的创建通知给插件114。
在以上实现中,可扩展API 118可以随机但连续地启动会话中介模块116来进行被示为会话断开226的函数调用,即‘TSSDRpcSetSessionDisconnected(设置断开会话ID)’,以通知插件114连接客户机设备102-1与服务器112-2或服务器106的会话已断开。在这种情况下,会话中介模块116可指示本地会话管理器监视该断开的会话。
除以上之外,可扩展API 118可触发会话中介模块116来提供关于在远程访问系统环境中作出的配置改变的信息。在这样的场景中,会话中介模块116可以启动被示为配置设置228的函数调用,即‘SSDRpcUpdateConfigurationSetting(更新配置设置)’,这可收集与配置改变相关的信息并向插件114报告这些改变(如果有的话)。
可扩展API 118可指示会话中介模块116来标识连接到客户机设备102-1的服务器112-2或服务器108的状态。会话中介模块116在接收到指令后,可进行分别被示为服务器在线230和服务器离线232的函数调用,即‘TSSDRpcServerOnlineEx(服务器在线)’和‘TSSDRpcServerOffline(服务器离线)’,以通知插件114服务器112-2或服务器108是否离线。
可扩展API 118可与会话中介模块118进行交互以确定在特定时间在远程访问系统环境中运行的各会话的状态。在这样的实现中,会话中介模块118可启动被示为删除会话234的函数调用(例如,‘TSSDRpcDeleteSession(删除会话)’)以通知插件114该会话已被删除。会话中介模块118可启动被示为重新填充所有会话236的函数调用,即‘TSSDRpcRepopulateAllSession(重新填充所有会话)’,以检查由会话中介模块118管理的所有会话的状态。
示例性会话中介服务器
图3详细描述与充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构相关联的会话中介服务器108的某些功能方面。服务器108包括处理器300和系统存储器302。服务器108还包括用于提供到诸如图1中所描述的网络102等各种网络的连接和诸如有线(例如,LAN、电缆等)和无线网络(例如,WLAN、蜂窝、卫星等)等协议类型的网络接口304。输入/输出接口306为服务器108提供数据输入和输出能力。输入/输出接口306可包括例如鼠标端口、键盘端口等。
系统存储器302存储程序模块308和程序数据310。程序模块308可包括会话中介模块116、可扩展API 118、以及其他应用程序模块312(例如,用于提供运行时环境的操作系统(OS)、多个用户之间的连网通信)。
会话中介模块116具有若干责任,包括担当远程访问系统环境的中央单元、向请求连接的客户机设备102分配会话、以及监视该远程访问系统环境中的会话。会话中介模块116可包括初始化模块314、函数调用模块316、监视模块318、以及重新加入模块320。
如上所述,会话中介模块116可用来通过服务器112-1接收客户机设备102-1所发送的对会话的请求。基于接收到的请求,初始化模块314初始化可扩展API 118。初始化模块314可以从寄存器208确定插件114的类ID。一旦插件114的类ID与存储在寄存器中的类ID相匹配,则初始化模块314可以创建实例来初始化可扩展API 118。
如上所述,可扩展API 118指示会话中介模块116产生适当的函数调用以标识客户机设备102-1可被重定向到的会话。因此,例如,调用被示为外部会话集合322的函数调用‘WTSSBX_GetUserExternalSession(获取用户外部会话)’来标识远程访问系统环境中存在的外部会话。该外部会话可以是位于服务器集合104之外的服务器106所提供的会话。在这种情况下,外部会话集合322可以触发函数调用模块316来产生诸如断开会话214等函数调用以确定服务器106是否能向客户机设备102-1提供外部会话并且如果连接到外部则还收集会话细节。此后,会话中介模块116可以收集会话细节并通过服务器112-1将客户机设备102-1定向到服务器106。
函数调用模块316所进行的函数调用可由监视模块318来监视以确定该函数调用是否即将超过预定时间。该预定时间可由诸如管理器等用户来预设。在函数调用保持待决超过预定时间的情况下,如果插件114失败,监视模块318可以指示会话中介模块116记录出错消息。此后,会话中介模块116可以再次启动可扩展API 118。
在一个实现中,外部会话集合322可以触发函数调用模块316来产生函数调用以从远程访问系统环境中确定与客户机设备104相关联的已有会话。函数调用模块316进而产生函数调用,如查验会话目录216和会话目录版本218,以从会话目录中标识客户机设备102-1的已有会话。函数调用模块316可以标识服务器集合104中的能够提供已有会话的任何一个服务器112,例如服务器112-2。在这样的场景中,函数调用模块316收集服务器112-2的服务器细节并将其服务器细节提供给会话中介模块116。基于该服务器细节,会话中介模块116可以将客户机设备102-1定向到服务器112。在另一实现中,已有会话可由位于服务器集合104外部的服务器106提供。
可扩展API 114可以启动函数调用模块316以进行函数调用,即合适的服务器集合324,以从服务器集合104或外部服务器106标识可向客户机设备102-1提供新会话的合适的服务器。例如,函数调用模块316可进行函数调用,即‘WTSSBX_GetMostSuitableServer(获取最合适的服务器)’,以标识可向客户机设备102-1提供新会话的合适的服务器。因此,函数调用模块316收集与看来适用于连接的合适的服务器相关联的服务器细节并启用会话中介模块116来指示服务器112-1在客户机设备104和该合适的服务器之间建立连接。
如上所述,函数调用可由监视模块318来监视以确定该函数调用是否待决超过预定时间。在函数调用保持待决超过预定时间的情况下,如果插件114失败,监视模块318可以指示会话中介模块116记录出错消息。此后,监视模块318重定向可扩展API 118以与会话中介模块116的负载平衡算法进行交互。该负载平衡算法使得会话中介模块116能够标识合适的服务器列表。会话中介模块116标识具有最少数量的会话的合适的服务器并指示服务器112-1将客户机设备102-1重定向到该合适的服务器。
在以上实现中,可扩展API 118可被配置成对会话改变通知326进行调用,这触发会话中介模块116用发生的会话改变来更新插件114。例如,可扩展API 118可进行函数调用,即‘WTSSBX_SessionChangeNotification(会话改变通知)’,以使会话中介模块116能够收集关于发生的任何会话改变的信息,如新会话的创建、已有会话的断开、会话的重新连接、以及会话的删除。
在一个实现中,当称为‘WTSSBX_SessionChangeNotification(会话改变通知)’的函数调用保持待决超过预定时间并且插件114失败时,记录出错事件。
另外,可扩展API 118可调用被示为机器改变通知328的‘WTSSBX_MachineChangeNotification(机器改变通知)’以启动会话中介模块116来收集在远程访问系统环境中的服务器112和外部服务器106中发生的信息并将该信息报告给插件114。所发生的改变可包括服务器中的配置改变和服务器状态的改变(即服务器的在线或离线状态)。在一实现中,当函数调用‘WTSSBX_MachineChangeNotification(机器改变通知)’保持待决超过预定时间并且插件114失败时,记录出错事件。
示例性方法
参考附图1-3来描述用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性过程。这些过程可在计算机可执行指令的一般上下文中描述。一般而言,计算机可执行指令可包括执行特定功能或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块、功能等。这些过程还能在其中功能由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,计算机可执行指令可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
图4示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的示例性方法400。过程400被表示为逻辑流程图中的一组框的集合,其表示可用硬件、软件或其组合实现的一系列操作。在软件上下文中,各个框表示当由一个或多个处理器执行时完成既定操作的计算机指令。
描述方法的次序并不旨在解释为限制,并且任何数量的所述方法框都可以按任何次序组合以实现本方法或实现替换方法。另外,可从该方法中删除各个框而不背离此处所述的主题的精神和范围。此外,本方法可用任何合适的硬件、软件、固件或其组合来实现而不背离本发明的范围。
在框402处,用户请求连接到会话。在一个实现中,客户机设备102-1的用户向服务器112-1作出请求以访问存放在该服务器上的插件114或任何其他应用程序。会话中介模块116从最初与客户机设备102-1相连接的服务器112-1接收对会话的请求。此后,会话中介模块116初始化与插件114相关联的可扩展API 118。
在框404处,调用函数调用,即‘GetUserDisconnectedSession(获取用户断开的连接)’,来获取会话。在一个实现中,为客户机设备102-1担当重定向器的服务器112-1对会话中介服务器108进行函数调用。会话中介服务器108的会话中介模块116接收该函数调用并向可扩展API通知该函数调用。
在框406处,响应于调用‘GetUserDisconnectedSession’来进行被称为‘GetUserExternalSession(获取用户外部会话)’的函数调用。会话中介模块116可以向可扩展API 118发送服务器112-1所进行的服务器函数调用。可扩展API 118在接收到该服务器函数调用后可进行函数调用‘GetUserExternalSession’来为客户机设备102-1标识会话。
在框408处,搜索客户机设备的用户的外部会话。可扩展API 118所启动的函数调用‘GetUserExternalSession’可触发会话中介模块116来标识远程访问系统环境中存在的用户外部会话。
在框410处,作出外部会话是否存在的判定。如果外部会话存在(即,自框410的“是”路径),则将客户机设备102-1重定向到服务器106以建立该外部会话。如果远程访问系统环境中不存在外部会话(即,自框410的“否”路径),则在框414处标识与客户机设备102-1相关联的已有会话。
在框416处,在标识了已有会话后,收集该已有会话的会话细节。这样的会话细节可存储在会话目录中,该会话目录存储在会话中介服务器108中。
在框418处,建立与具有已有会话的服务器的连接。会话中介模块116可以向被配置成重定向客户机设备102-1的服务器112-1发送指令并连同具有已有会话的合适的服务器的会话细节。服务器112-1基于该会话细节来标识合适的服务器并将客户机设备102-1重定向到合适的服务器以建立连接。
图5示出用于充分利用支持第三方插件应用程序的远程访问系统会话中介基础结构的另一示例性方法500。在框502处,作出连接到会话的请求。会话中介模块116可通过最初与客户机设备102-1相连接的服务器(如服务器112-1)接收对会话的请求。此后,会话中介模块116初始化与插件114相关联的可扩展API 118。
在框504处,进行函数调用‘GetUserDisconnectedSession’来获取会话。在一个实现中,为客户机设备102-1担当重定向器的服务器112-1可对会话中介服务器108进行函数调用。会话中介服务器108的会话中介模块116接收该函数调用并向可扩展API 118通知该函数调用。
在框506处,响应于调用‘GetMostSuitableServer(获取最合适的服务器)’来进行函数调用‘GetUserExternalSession’。会话中介模块116可以向可扩展API 118发送重定向服务器112-1所进行的服务器函数调用。可扩展API 118在接收到该服务器函数调用后,可调用函数调用‘GetMostSuitableServer’以启动会话中介模块116来标识客户机设备102-1可重定向到的合适的服务器,例如服务器112中的任何服务器或外部服务器106。
在框508处,收集与该合适的服务器相关联的服务器ID。会话中介模块116收集该合适的服务器在远程访问系统环境中的服务器ID。
在框510处,确认该合适的服务器的服务器ID。在一个实现中,会话中介模块116可检查寄存器208来标识寄存器208中是否存在服务器ID并且还检查服务器ID是否与该合适的服务器相关。
在另一实现中,会话中介模块116可以确定具有该服务器ID的合适的服务器是否处于耗尽模式。如果该合适的服务器处于耗尽模式,则该合适的服务器可拒绝来自其他用户的任何新的远程登录。此外,在这种情况下,在远程访问系统环境中具有与服务器的已有会话的用户可被重新连接。在又一实现中,会话中介模块116可检查具有所需服务器ID的合适的服务器分配给合适的服务器的会话是否超过最大数量。
在框512处,作出服务器ID是否有效的判定。如果服务器ID是有效的(即自框512的“是”路径),则在框514处重定向客户机设备102-1来与合适的服务器建立连接。如果服务器ID不是有效的(即自框512的“否”路径),则记录插件出错事件。例如,在可扩展API 118所调用的函数调用‘WTSSBX_GetMostSuitableServer’返回无效服务器ID时记录警告。
在另一场景中,如果函数调用‘WTSSBX_GetMostSuitableServer’将客户机设备102-1重定向到处于耗尽模式的合适的服务器,则将插件出错事件被记录作为警告。类似地,在又一场景中,在函数调用‘WTSSBX_GetMostSuitableServer’提供违反了预定义会话限制的合适的服务器时记录插件出错事件。
在框518处,从具有其对应权重的各服务器的列表中标识合适的服务器。会话中介模块116可基于每一服务器所处理的会话的数量使用负载平衡算法来向远程访问系统环境中的每一服务器分配权重。会话中介模块116生成服务器列表并从该列表中标识合适的服务器。所标识的服务器可拥有较少数量的会话并且因而向客户机设备102-1展示出提供会话的能力。
在框520处,重定向客户机设备102-1来与所标识的服务器建立连接。
示例性计算机环境
图6示出了示例性通用计算机环境600,它可用于实现本文所述的技术,且整体或部分地表示本文所述的元素。计算机环境600仅是计算环境的一个示例,而非旨在对计算机和网络体系结构的使用范围或功能提出任何限制。计算机环境600也不应被解释成对于在示例计算机环境600中所示出的任一组件或其组合有任何依赖或要求。
计算机环境600包括计算机602形式的通用的基于计算的设备。计算机602例如可以是台式计算机、手持式计算机、笔记本或膝上型计算机、服务器计算机、游戏控制台等。计算机602的各组件可以包括但不限于:一个或多个处理器或处理单元604、系统存储器606、以及将包括处理器604在内的各系统组件耦合至系统存储器606的系统总线608。
系统总线608表示任何若干类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用任何各种总线体系结构的处理器或局部总线。作为示例,这样的体系结构可包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机602通常包括各种计算机可读介质。这样的介质可以是能由计算机602访问的任何可用介质,包括易失性和非易失性介质以及可移动和不可移动介质。
系统存储器606包括诸如随机存取存储器(RAM)610等易失性存储器形式的计算机可读介质,和/或诸如只读存储器(ROM)612等非易失性存储器形式的计算机可读介质。示出了包含帮助在诸如启动期间在计算机602内元件之间传递信息的基本例程的基本输入/输出系统(BIOS)614,它被存储在ROM 612中。RAM 610通常包含可以由处理单元604立即访问和/或目前正在操作的数据和/或程序模块。
计算机602还可以包括其他可移动/不可移动、易失性/非易失性的计算机存储介质。作为示例,图6示出用于读写不可移动非易失性磁介质(未示出)的硬盘驱动器616。此外,图6示出用于读写可移动非易失性磁盘620(例如“软盘”)的磁盘驱动器618。此外,图6示出用于读和/或写诸如CD-ROM、DVD-ROM、或其他光学介质等可移动非易失性光盘624的光盘驱动器622。硬盘驱动器616、磁盘驱动器618和光盘驱动器622都通过一个或多个数据媒体接口626连接至系统总线608。或者,硬盘驱动器616、磁盘驱动器618和光盘驱动器622可通过一个或多个接口(未示出)连接至系统总线608。
盘驱动器及其相关联的计算机可读介质向计算机602提供计算机可读指令、数据结构、程序模块以及其他数据的非易失性存储。尽管该示例示出了硬盘616、可移动磁盘620和可移动光盘624,但可以理解可存储可由计算机访问的数据的其他类型的计算机可读介质也可用来实现该示例性计算系统和环境,这些介质如盒式磁带或其他磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其他光学存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等等。
任何数量的程序模块可储存在硬盘616、磁盘620、光盘624、ROM 612和/或RAM 610中,作为示例包括操作系统626、一个或多个应用程序628、其他程序模块630和程序数据632。每个这样的操作系统626、一个或多个应用程序628、其它程序模块630以及程序数据632(或其某种组合)可实现支持分布式文件系统的常驻组件的全部或部分。
用户可通过诸如键盘634和定点设备636(例如“鼠标”)等输入设备向计算机602输入命令和信息。其他输入设备638(未具体示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、串行端口、扫描仪等。这些和其他输入设备通过耦合到系统总线608的输入/输出接口640连接到处理单元604,但也可通过其他接口和总线结构,如并行端口、游戏端口或通用串行总线(USB)来连接。
监视器642或其他类型的显示设备也经由诸如视频适配器644等接口连接至系统总线608。除监视器642之外,其他输出外围设备可包括诸如扬声器(未示出)和打印机646等组件,这些组件可通过输入/输出接口640连接至计算机602。
计算机602可使用至一台或多台远程计算机(如远程基于计算的设备648)的逻辑连接在网络化环境中操作。作为示例,远程基于计算的设备648可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或者其他常见网络节点等。远程基于计算的设备648被示为可以包括在本文中相对于计算机602描述的许多或全部元素和特征的便携式计算机。
计算机602和远程计算机648之间的逻辑连接被示为局域网(LAN)650并且还通过通用广域网(WAN)652。这样的联网环境常见于办公室、企业范围计算机网络、内联网和因特网中。
当在LAN联网环境中实现时,计算机602通过网络接口或适配器654连接到局域网650。当在WAN联网环境中实现时,计算机602通常包括调制解调器656或用于通过广域网652建立通信的类似装置。调制解调器656对于计算机602可以是内置或外置的,其可通过输入/输出接口640或其他适当机制连接到系统总线608。可以理解,所示网络连接是示例性的,也可采用在计算机602和648之间建立通信链路的其他手段。
在诸如对计算环境600示出的网络化环境中,相对于计算机602描绘的程序模块或其部分可被存储在远程存储器存储设备中。作为示例,远程应用程序658驻留在远程计算机648的存储器设备上。为说明起见,诸如操作系统等应用程序和其他可执行程序组件在此被示为离散的块,但可以理解,这样的程序和组件在不同的时间驻留在基于计算的设备602的不同存储组件中,并由计算机602的数据处理器来执行。
各种模块和技术在此处可在诸如程序模块等由一个或多个计算机或其他设备执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以在各个实施例中按需进行组合或分布。
这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可由计算机访问的任何可用介质。作为示例而非限制,计算机可读介质可包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备,或者任何其他可用于存储所需信息并可由计算机访问的介质。
或者,框架的各部分可用硬件、或硬件软件的组合、和/或固件来实现。例如,可将一个或多个专用集成电路(ASIC)或可编程逻辑器件(PLD)设计或编程为实现该框架的一个或多个部分。
结论
尽管已经用结构特征和/或方法专用的语言描述了用于充分利用终端服务会话中介基础结构来支持第三方插件应用程序的各实施例,但是应该理解所附权利要求书的主题不必限于所描述的具体特征或方法。相反,这些具体特征和方法是作为用于充分利用终端服务会话中介基础结构来支持第三方插件应用程序的示例性实现来公开的。
Claims (24)
1.一种服务器,包括:
存储器;
在操作上耦合到所述存储器的一个或多个处理器;
所述存储器中的会话中介模块,它监视远程客户机的状态和连接;以及
所述存储器中的可扩展应用程序接口(API),它标识所述远程客户机可用的会话;其中所述可扩展API:
覆盖会话中介逻辑;以及
与会话中介进程交互以标识用户可连接到的会话或合适的服务器。
2.如权利要求1所述的服务器,其特征在于,所述会话中介模块接收来自所述远程客户机的查询并通知所述API。
3.如权利要求1所述的服务器,其特征在于,所述会话中介模块将所述远程客户机定向到多个服务器中的一个服务器。
4.如权利要求1所述的服务器,其特征在于,所述会话中介模块初始化驻留在所述远程客户机可连接到的一个或多个服务器上的插件应用程序。
5.如权利要求1所述的服务器,其特征在于,所述会话中介模块收集并提供关于包括所述服务器、所述远程客户机、以及一个或多个服务器的远程访问系统环境的API配置的改变。
6.如权利要求1所述的服务器,其特征在于,所述会话中介模块包括初始化模块,它初始化所述API并确定寄存器中的插件应用程序的标识。
7.如权利要求1所述的服务器,其特征在于,所述会话中介模块包括函数调用模块,它产生函数调用以确定并收集所述远程客户机的会话信息。
8.如权利要求7所述的服务器,其特征在于,所述会话中介模块包括监视模块,它确定所述函数调用是否待决超过预定时间。
9.如权利要求8所述的服务器,其特征在于,在函数调用待决超过所述预定时间时生成出错消息。
10.如权利要求7所述的服务器,其特征在于,API启动所述函数调用模块来为所述远程客户机之一标识多个服务器中的一个,以向所述一个远程客户机提供会话。
11.如权利要求1所述的服务器,其特征在于,所述API是基于组件对象模型的接口,它使得跨连接所述远程客户机和服务器的网络的多个软件组件能够彼此通信。
12.如权利要求1所述的服务器,其特征在于,所述API进行会话改变通知,它启动所述会话中介模块来更新驻留在一个或多个服务器上的插件应用程序。
13.如权利要求1所述的服务器,其特征在于,所述API进行关于机器改变通知的调用,从而启动所述会话中介模块来收集信息并报告所述远程客户机连接到的所述服务器和其他服务器的改变。
14.一种用于利用远程访问系统会话中介基础结构的方法,包括:
接收来自客户机的对会话的请求来对驻留在一个或多个服务器上的插件应用程序进行访问;
通过可扩展API来调用函数来获取所述会话,其中所述可扩展API:
覆盖会话中介逻辑;以及
与会话中介进程交互以标识用户可连接到的会话或合适的服务器;
标识所述客户机的任何预先存在的会话;以及
搜索所述客户机的用户的外部会话。
15.如权利要求14所述的方法,其特征在于,所述接收包括重定向到服务器。
16.如权利要求14所述的方法,其特征在于,还包括确定所述外部会话是否存在。
17.如权利要求16所述的方法,其特征在于,还包括收集所标识的外部会话的会话细节。
18.如权利要求16所述的方法,其特征在于,还包括连接到已有会话。
19.如权利要求14所述的方法,其特征在于,还包括收集所述合适的服务器的服务器ID。
20.如权利要求19所述的方法,还包括确认所述服务器ID。
21.如权利要求20所述的方法,其特征在于,在不能确认所述服务器ID的情况下记录插件应用程序的出错事件。
22.如权利要求14所述的方法,其特征在于,还包括在所述合适的服务器处于耗尽模式的情况下记录插件出错事件。
23.如权利要求14所述的方法,其特征在于,还包括从具有负载平衡权重的服务器列表中标识所述合适的服务器。
24.如权利要求14所述的方法,其特征在于,还包括生成所述合适的服务器的服务器列表。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US97044107P | 2007-09-06 | 2007-09-06 | |
US60/970,441 | 2007-09-06 | ||
US12/114,582 US8090847B2 (en) | 2008-05-02 | 2008-05-02 | Session broker extensibility application program interface |
US12/114,582 | 2008-05-02 | ||
PCT/US2008/073903 WO2009032548A2 (en) | 2007-09-06 | 2008-08-21 | Session broker extensibility application program iinterface |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101796504A CN101796504A (zh) | 2010-08-04 |
CN101796504B true CN101796504B (zh) | 2014-07-16 |
Family
ID=40429635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880106189.5A Active CN101796504B (zh) | 2007-09-06 | 2008-08-21 | 会话中介可扩展应用程序接口 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP2195745B1 (zh) |
JP (1) | JP4990399B2 (zh) |
CN (1) | CN101796504B (zh) |
WO (1) | WO2009032548A2 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949408B2 (en) | 2009-12-18 | 2015-02-03 | Microsoft Corporation | Session monitoring of virtual desktops in a virtual machine farm |
EP3518169A1 (en) * | 2010-09-22 | 2019-07-31 | The Nielsen Company (US), LLC | Methods and apparatus to determine impressions using distributed demographic information |
JP6252016B2 (ja) * | 2013-07-30 | 2017-12-27 | 富士通株式会社 | セッション管理プログラム、セッション管理方法およびセッション管理装置 |
US9332035B2 (en) | 2013-10-10 | 2016-05-03 | The Nielsen Company (Us), Llc | Methods and apparatus to measure exposure to streaming media |
CN108632329B (zh) * | 2017-03-24 | 2020-07-07 | 华为技术有限公司 | 一种第三方插件的访问方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446116B1 (en) * | 1997-06-30 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic loading of a transport mechanism in a multipoint data delivery system |
EP1233590A1 (en) * | 2001-02-19 | 2002-08-21 | Sun Microsystems, Inc. | Content provider for a computer system |
US7631318B2 (en) * | 2002-06-28 | 2009-12-08 | Microsoft Corporation | Secure server plug-in architecture for digital rights management systems |
US7334018B2 (en) * | 2003-03-11 | 2008-02-19 | Sap Aktiengesellschaft | Unified network resources |
US7536695B2 (en) * | 2003-03-28 | 2009-05-19 | Microsoft Corporation | Architecture and system for location awareness |
JP2005063169A (ja) * | 2003-08-13 | 2005-03-10 | Ricoh Co Ltd | 情報処理装置、画像処理装置、サーバ装置、セッション接続方法、セッション接続プログラム及び記録媒体 |
GB2415066A (en) * | 2004-06-09 | 2005-12-14 | Symbian Software Ltd | Selecting most suitable plug-in |
US7509406B2 (en) * | 2004-09-30 | 2009-03-24 | Microsoft Corporation | Managing terminal services accounts and sessions for online utilization of a hosted application |
US7954152B2 (en) * | 2005-12-30 | 2011-05-31 | Microsoft Corporation | Session management by analysis of requests and responses |
-
2008
- 2008-08-21 WO PCT/US2008/073903 patent/WO2009032548A2/en active Application Filing
- 2008-08-21 EP EP08798404.3A patent/EP2195745B1/en active Active
- 2008-08-21 CN CN200880106189.5A patent/CN101796504B/zh active Active
- 2008-08-21 JP JP2010524090A patent/JP4990399B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP2195745B1 (en) | 2017-06-28 |
WO2009032548A2 (en) | 2009-03-12 |
EP2195745A2 (en) | 2010-06-16 |
JP2010538392A (ja) | 2010-12-09 |
JP4990399B2 (ja) | 2012-08-01 |
WO2009032548A3 (en) | 2009-04-30 |
CN101796504A (zh) | 2010-08-04 |
EP2195745A4 (en) | 2013-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101009576B (zh) | 用于分布式即时消息传送的方法和系统 | |
CN1407441B (zh) | 自动管理计算机服务和可编程器件的系统和方法 | |
JP4573898B2 (ja) | サーバ管理プログラム、メールサーバ管理プログラム、サーバ管理システム、管理サーバおよびサーバ管理方法 | |
KR101532450B1 (ko) | 컴퓨터 네트워크에서의 시스템 비가동 시간 자동 관리 | |
US7870288B2 (en) | Sharing data in scalable software blade architecture | |
US7779157B2 (en) | Recovering a blade in scalable software blade architecture | |
KR101007356B1 (ko) | 가상화 시스템 상에서 입출력 디바이스 설정장치 및 방법 | |
US20070100975A1 (en) | Scalable software blade architecture | |
US20030108018A1 (en) | Server module and a distributed server-based internet access scheme and method of operating the same | |
CN101796504B (zh) | 会话中介可扩展应用程序接口 | |
CN113783922A (zh) | 负载均衡的方法、系统和装置 | |
JP2008065409A (ja) | ソフトウェア管理プログラム、ソフトウェア管理方法およびソフトウェア管理装置 | |
CN1656480A (zh) | 允许同步具备不同能力的不同设备中的数据的方法和设备 | |
CN103270507A (zh) | 根据刀片的物理位置,实现刀片的自动供应和配置的集成软件和硬件系统 | |
US7836351B2 (en) | System for providing an alternative communication path in a SAS cluster | |
CN101651669A (zh) | 业务箱集成服务器和业务箱集成方法 | |
KR101429956B1 (ko) | 가상 nas를 이용한 클라우드 스토리지 서버, 시스템 및 방법 | |
US8543680B2 (en) | Migrating device management between object managers | |
US20080072222A1 (en) | Client outsourcing service | |
JP4641714B2 (ja) | 遠隔監視システム | |
US20070261045A1 (en) | Method and system of configuring a directory service for installing software applications | |
CN101669107A (zh) | 从远程服务器删除文件的方法和系统 | |
CN108809993A (zh) | 证书认证系统、证书认证系统的部署方法和证书认证方法 | |
EP3884648B1 (en) | Geo-replicated iot hub | |
KR20190015817A (ko) | 미들웨어를 이용한 모니터링 방법, 장치 및 시스템 |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150421 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150421 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |