CN106126350B - 客户端-服务器输入法编辑器体系结构 - Google Patents

客户端-服务器输入法编辑器体系结构 Download PDF

Info

Publication number
CN106126350B
CN106126350B CN201610429936.5A CN201610429936A CN106126350B CN 106126350 B CN106126350 B CN 106126350B CN 201610429936 A CN201610429936 A CN 201610429936A CN 106126350 B CN106126350 B CN 106126350B
Authority
CN
China
Prior art keywords
ime
server
client
session
key event
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
Application number
CN201610429936.5A
Other languages
English (en)
Other versions
CN106126350A (zh
Inventor
波村大悟
小松弘幸
向井淳
工藤拓
及川卓也
花冈俊行
松田靖广
汤川洋平
田畑悠介
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.)
Google LLC
Original Assignee
Google LLC
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
Application filed by Google LLC filed Critical Google LLC
Publication of CN106126350A publication Critical patent/CN106126350A/zh
Application granted granted Critical
Publication of CN106126350B publication Critical patent/CN106126350B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/20Services signaling; Auxiliary data signalling, i.e. transmitting data via a non-traffic channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Abstract

本发明涉及客户端‑服务器输入法编辑器体系结构。一般地,在本说明书中描述的主题的一个有创新性的方面可以在包括以下动作的方法中具体化:接收输入法编辑器(IME)服务器请求,IME服务器请求包括一个或多个令牌并且请求IME服务器被实例化,IME服务器基于发送自IME客户端的键事件来执行一个或多个IME功能,其中IME服务器是存储在IME服务器和IME客户端之间的通信会话的请求和响应两者的有状态服务器;基于一个或多个令牌来确定IME服务器可以在限制环境中被实例化;以及在限制环境中实例化IME服务器。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。

Description

客户端-服务器输入法编辑器体系结构
分案说明
本申请属于申请日为2010年11月24日的中国发明专利申请201080062456.0的分案申请。
相关申请的交叉引用
本申请要求于2009年11月27日提交的美国申请No.61/264,714的优先权,将其公开内容以全文引用方式明确并入本文中。
技术领域
本公开涉及输入法编辑器。
背景技术
使用语标文字(script)的语言,其中一个或两个字符大致上对应于一个词或含义,具有比诸如计算机键盘或移动设备键区的标准输入设备上的键多的字符。例如,日语在片假名和平假名两者中包含数百个字符。这些潜在多对一关联的映射可以由便于在输入设备上未找到的字符和符号的输入的输入法编辑器来实现。因此,可以使用西式键盘来输入日语字符。同样地,可以使用用于以下的输入法:使用西式键盘或一些其他输入设备来输入包括表意符号的许多其他语言,诸如中文、韩语和其他语言。
为了实现输入法,用户典型地必须安装客户端软件应用程序和库。然而,当用户正在不属于该用户的计算机设备——例如公共计算机设备或工作环境中的第二计算机等——上工作时,这样的安装可能是不方便的。此外,客户端软件应用程序可能是存储器和处理器密集的,因此对客户端来说是累赘的,以及可能是依赖于语言的,对于每一个期望的语言都需要应用程序。
发明内容
本说明书描述了与输入法编辑器,以及尤其具有客户端-服务器体系结构的输入法编辑器有关的技术。
总的来说,在本说明书中描述的主题的一个有创新性的方面可以在包括以下动作的方法中具体化:接收输入法编辑器(IME)服务器请求,IME服务器请求包括一个或多个令牌并且请求IME服务器被实例化,IME服务器基于发送自IME客户端的键事件来执行一个或多个IME功能,其中IME服务器是存储在IME服务器和IME客户端之间的通信会话的请求和响应两者的有状态服务器;基于一个或多个令牌来确定IME服务器可以在限制环境中被实例化;以及在限制环境中实例化IME服务器。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:接收输入法编辑器(IME)服务器请求,IME服务器请求包括一个或多个令牌并且请求IME服务器被实例化,IME服务器基于发送自IME客户端的键事件来执行一个或多个IME功能,其中IME服务器是存储在IME服务器和IME客户端之间的通信会话的请求和响应两者的有状态服务器;对一个或多个令牌进行处理;基于该处理来确定IME服务器可以被实例化;在限制环境中实例化IME服务器,限制环境限制IME服务器的功能;确定IME服务器没有正在限制环境中执行;以及响应于该确定而停止IME服务器。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:建立在第一输入法编辑器(IME)客户端和第一IME服务器之间的第一会话;请求在第二IME客户端和第一服务器之间的第二会话;确定第一IME服务器的版本不同于第二IME客户端的版本;响应于确定第一IME服务器的版本不同于第二IME客户端的版本,停止第一服务器;以及实例化第二IME服务器,第二IME服务器具有与第二客户端的版本相同的版本。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:建立在第一输入法编辑器(IME)客户端和第一IME服务器之间的第一会话;请求在第二IME客户端和第一IME服务器之间的第二会话;确定第一IME服务器的版本与第二IME客户端的版本相同;响应于该确定,建立在第二IME客户端和第一IME服务器之间的第二会话;以及执行第一会话和第二会话。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:接收输入法编辑器(IME)服务器请求,IME服务器请求由第一IME客户端传送;基于该IME服务器请求来实例化第一IME服务器;建立在第一IME客户端和第一IME服务器之间的第一会话;请求在第二IME客户端和第一IME服务器之间的第二会话;确定第一IME服务器的版本不同于第二IME客户端的版本;响应于确定第一IME服务器的版本不同于第二IME客户端的版本,停止第一IME服务器;实例化第二IME服务器,第二IME服务器具有与第二IME客户端的版本相同的版本;以及建立在第二IME客户端和第二IME服务器之间的第二会话。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:在输入法编辑器(IME)服务器处,接收从与该IME服务器通信的IME客户端传送给该IME服务器的键事件,其中IME服务器是存储在IME服务器和IME客户端之间的通信会话的请求和响应两者的有状态服务器,以及IME客户端是基于键事件向IME服务器发出请求的无状态IME客户端;通过IME服务器基于键事件来识别一个或多个语标字符;通过IME服务器生成与该一个或多个语标字符相对应的呈现信息;以及将该呈现信息从IME服务器传送给IME客户端,以显示该一个或多个语标字符。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:从是无状态的输入法编辑器(IME)客户端接收请求;基于该请求来实例化IME服务器,该IME服务器是有状态的;生成在IME客户端和IME服务器之间的通信路径,该通信路径具有对应的路径名;将该路径名提供给IME客户端;在IME服务器处接收键事件,该键事件通过通信路径从IME客户端被传送给IME服务器;基于该键事件来识别一个或多个语标字符;生成与该一个或多个语标字符相对应的呈现信息;以及将该呈现信息从IME服务器传送给IME客户端,以显示该一个或多个语标字符。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:在输入法编辑器(IME)客户端处生成键事件,该IME客户端是仅存储它向IME服务器发出的请求以及为每一个键事件向IME服务器发出请求的无状态IME客户端;通过IME客户端将该键事件记录在键事件序列中,键事件序列存储该键事件和先前被传送给IME服务器的至少一个或多个先前键事件;将该键事件传送给与IME客户端通信的IME服务器,IME服务器是存储在IME服务器和IME客户端之间的通信会话的请求和响应两者的有状态服务器;在IME客户端处,确定IME服务器已停止了运作;响应于IME服务器已停止了运作的确定,建立与第二IME服务器的会话,第二IME服务器是有状态服务器;在建立该会话之后,将所记录的键事件序列传送给第二服务器。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
总的来说,在本说明书中描述的主题的另一个方面可以在包括以下动作的方法中具体化:在设备上实例化输入法编辑器(IME)客户端,该IME客户端是无状态IME客户端;接收到设备的用户输入;基于该用户输入来生成键事件,键事件由该IME客户端生成;将键事件记录在存储在设备的计算机可读存储介质中的键事件序列中;将该键事件传送给与该IME客户端通信并且是有状态IME服务器的IME服务器;确定该IME服务器已停止了运作;响应于该确定来实例化第二IME服务器,第二IME服务器是有状态IME服务器;建立在IME客户端和第二IME服务器之间的会话;以及在建立该会话之后,将键事件序列传送给第二IME服务器。本方面的其他实施例包括被配置成执行该方法的动作、编码在计算机存储设备上的对应系统、装置和计算机程序。
在附图和下面的描述中阐述了在本说明书中描述的主题的一个或多个实施例的细节。主题的其他特征、方面和优势从描述、附图和权利要求将变得显而易见。此外,在本说明书中描述的主题的方面,包括上述方面,可以被组合成一个或多个组合。
附图说明
图1是图示输入法编辑器(IME)的一般客户端-服务器体系结构的框图。
图2是图示示例客户端-服务器IME体系结构的框图。
图3是图示另一个示例客户端-服务器IME体系结构的框图。
图4是图示服务器的服务器体系结构的功能框图。
图5A是图示示例文本转换的表。
图5B是图示与图5A的示例文本转换相对应的示例规则的示例图。
图6A图示示例文本字符串转换。
图6B图示示例字格阵(lattice)。
图7是图示用于建立客户端-服务器IME会话的示例过程的流程图。
图8是图示用于使用客户端-服务器IME会话的文本和文本字符串转换的示例过程的流程图。
图9是图示版本和协议检查的框图。
图10是图示用于提供版本和协议检查的示例过程的流程图。
图11是图示用于重建客户端-服务器IME会话的示例过程的流程图。
在各附图中相同的参考符号指示相同的元素。
具体实施方式
§1.0概述
本说明书描述了与包括客户端-服务器体系结构的输入法编辑器(IME)有关的技术。尽管将在日语的示例语境下描述示例实施例,但是,本公开很容易适用于使用语标文字的其他语言,包括中文、韩语和/或印度语。
客户端-服务器体系结构的实施例包括与有状态服务器对接的无状态客户端。如在本文中所使用的,术语“客户端”是指访问服务提供商提供的服务的应用程序或系统。术语“服务器”是指向客户端提供服务的服务提供商。术语客户端和服务器不一定是指独立的计算机设备,因为客户端和服务器,当那些术语在本文中被使用时,可以在单个计算机设备上实现。在服务器能够存储在服务器和客户端之间的通信会话的请求和响应两者的意义上,服务器是有状态的。以这种方式,服务器知道对于特定会话在客户端和服务器之间的通信的完整历史。在客户端能够存储向服务器发出的请求,但是不存储服务器响应的意义上,客户端是无状态的。因此,客户端不存储对于特定会话在客户端和服务器之间的通信的完整历史。
依据在本文中提供的客户端-服务器IME体系结构的方面,在客户端和服务器之间建立会话。会话是在IME客户端和IME服务器之间的半永久性信息交换。信息交换是半永久性的,因为它通过在会话的寿命期间能够被打开或关闭的一个或多个连接来实现。简而言之,会话的寿命长于在该会话期间发生的连接的寿命。服务器能够协调与多个客户端的并发会话。然而,服务器每次仅能够与一个客户端进行通信。因此,在客户端和服务器之间的连接被打开,以使得能够进行信息交换,随后,被关闭,以使另一个客户端能够与服务器进行通信。
客户端接收用户输入,服务器基于用户输入来执行功能并且基于其来生成呈现信息,以及客户端基于呈现信息来呈现或显示字符。使用无状态客户端和有状态服务器,客户端-服务器体系结构提供能够跨任何各种操作系统或平台实现的可移植和独立于语言的解决方案。
客户端-服务器体系结构的实施例包括在限制服务器的功能的限制环境或沙盒中执行的服务器。以这种方式,以某种方式建立与服务器的会话的恶意客户端或用户不能通过服务器访问敏感信息。
客户端-服务器体系结构的实施例使客户端和/或服务器以及在客户端和服务器之间的通信协议能够在不需要它们正在其上执行的系统被重启的情况下被更新(例如,从当前版本到新版本)。当IME客户端和IME服务器的不同版本具有兼容协议时,维持在IME客户端和IME服务器之间的连接。仅当IME客户端是比IME服务器旧的版本,并且协议是不兼容的时,连接才停止。
客户端-服务器体系结构的实施例还使会话能够在有状态服务器崩溃、中止、冻结或另外恰当地终止运作,并且新的服务器被实例化的情况下被恢复。例如,IME客户端在输入键事件发生时将每一个输入键事件发送给IME服务器,并且维护会话的每一个输入键事件。当IME服务器被重启(例如,由于崩溃、更新等)时,IME客户端将向IME服务器发送键事件的整个输入序列。
可以将上述特征组合成各种组合。例如,可以将沙盒化特征与使客户端和/或服务器以及在客户端和服务器之间的通信协议能够在没有重启的情况下被更新的特征进行组合。同样地,这些特征可以单独地或结合使会话能够在有状态服务器崩溃、中止、冻结或另外恰当地终止运作的情况下被恢复的特征被组合。
客户端提供用户接口和呈现器,而服务器执行核心IME功能。该核心IME功能包括文本组成和从第一音节文字(例如,平假名)到第二音节文字(例如,日本汉字)的文本转换的管理。
客户端使用客户端在其上执行的设备的特定操作系统所提供的IME框架来实现。客户端的功能包括:接收用户输入(例如,用户输入“a”);基于用户输入来生成键事件;将键事件传送给服务器;接收服务器提供的呈现信息;以及提供呈现信息以向用户显示。如在下面进一步详细论述的,可以显示基于键事件的对应字符(例如,响应于“a”键事件的“あ”),和/或可以展示候选字符列表,从该候选字符列表,用户可以选择适当的候选者。客户端可以使用用于显示列表的任何实施方式。在web浏览器的示例情况下,可以使用Ajax和javascript。
客户端可以作为在设备上执行的应用程序被提供,以及一个或多个客户端可以与特定服务器通信。这样的应用程序从输入设备(例如,鼠标、键盘、触摸板)接收文本输入,并且可以包括但不限于web浏览器、呈现程序、字处理器和/或电子表格程序。与服务器不同,客户端不管理任何状态。因为客户端的角色是无状态的,所以对特定操作系统的IME框架的依赖性比传统IME的那些小得多。
在一些实施例中,可以使用进程间通信(IPC)来建立在客户端和服务器之间的通信。IPC提供用于在一个或多个进程(例如,客户端进程和服务器进程)中的多个线程之中进行数据交换的一组技术。在一些实施例中,这些进程可能正运行于一个设备上。在其他实施例中,这些进程可能正运行于由网络连接的多个设备上。IPC方法技术可以包括远程程序调用(RPC)。RPC使子程序或程序(例如,服务器)能够在与调用程序应用(例如,客户端)的地址空间不同的另一个地址空间中执行。
在一些实施例中,服务器不必使用对应操作系统的IME框架被实例化。这使服务器进程平台独立并且可移植。例如,运行于不同平台上的不同IME可以连接到同一服务器。服务器对从客户端接收的所有键事件进行处理、生成呈现信息并且将呈现信息传送给客户端。呈现信息包括待在客户端应用上显示的当前和/或部分转换的文本,以及用于任何候选窗口的内容。
§2.0客户端-服务器体系结构
图1是图示输入法编辑器(IME)的一般客户端-服务器体系结构10的框图。客户端-服务器体系结构10包括无状态客户端12、有状态服务器14和在它们间的通信会话16。通信会话16包括导致请求18从客户端12被传送以由服务器14接收的键事件,以及在从服务器14传送以由客户端12接收的响应20中提供的呈现信息。核心IME功能被写成尽可能可移植的,并且由服务器14执行。如在本文中所使用的,术语“可移植”指示服务器14在各种操作系统上运行的能力,所述操作系统包括但不限于Windows、Mac、Linux和/或Google Chrome。简而言之,服务器14不知道操作系统功能,并且提供它可能需要的任何所需的功能。客户端12封装服务器的接口,并且处理用于每一个操作系统的IME应用程序接口(API)。
如上所述,一个或多个客户端12可以与服务器14通信。在客户端12和服务器14在共同设备上被执行的情况下,在下面进一步详细论述的,用户典型地每次仅与一个客户端12对接。然而,用户可以在客户端之间快速切换,即使在与一个客户端对接的中间时。例如,将文本输入到第一客户端(例如,为特定设备上的字处理器应用实例化的客户端)的用户可以在将文本键入到第一客户端的中间时,将其注意力切换到第二客户端(例如,为该特定设备上的web-浏览器应用实例化的客户端)。因此,与字处理器应用相关联的客户端12的输入状态需要被保留。如在下面进一步详细论述的,服务器14可以通过建立与每一个客户端12的特有会话,接受并保持跟踪来自不同客户端12的键事件。
在会话期间,可以打开及关闭在客户端12和服务器14之间的多个连接。即使在客户端12和服务器14之间的连接已被关闭时,会话可以仍然是活动的。例如,可以打开连接以使键事件从客户端12被传送给服务器14、或使呈现信息从服务器14被传送给客户端12。然而,各连接可能具有在会话时间帧内的较短生命期。换句话说,连接的生命期短于其相关联的会话的生命期。例如,客户端12打开到服务器14的连接、将键事件发送给服务器12、从服务器12接收响应,然后连接被关闭。因此,每一个传送的键事件附有会话标识(SID)。SID使服务器14能够对从哪些客户端12接收了哪些键事件保持跟踪。更具体地,与在一个客户端12和服务器14之间的会话相对应的SID对与在另一个客户端12和服务器14之间的会话相对应的SID来说是唯一的。一个例外是客户端12传送来创建会话的命令(例如,“CreateSession”)。当客户端12在没有SID的情况下调用该命令时,服务器14创建会话、生成对应SID并且将该SID传送给客户端12。在下面提供了该过程的示例。
如上面介绍的,客户端12使用特定于操作系统或特定于平台的IME框架来实现。示例IME框架可以包括用于微软Windows的文本服务框架(TSF)或IMM32。IME框架是使得能够进行高级、独立于源的文本输入的应用编程接口(API)。可以通过使能包括西塞罗无感知应用支持(CUAS)的无感知应用支持(UAS),来支持不知道特定IME框架(例如,是IME框架中立的)的应用。
作为非限制性示例,将描述使用TSF的实施例。在TSF环境中,“lmeTextService”处理会话请求、经由用户的键输入以及来自服务器14的响应。当IME在客户端12处被最初激活时,客户端12以“lmeTextService::Activate”打开IME用户接口(IME-UI)、建立到服务器14的连接并且开始会话。IME-UI可以作为入口、或在当前应用内的窗口(例如,在字处理应用中弹出的IME-UI窗口)被提供。每次用户输入字符(例如,利用每一个键事件),“ImeTextService::OnTestKeyDown”就被调用。发送给服务器14的客户端12键事件包括键代码和修饰符,以及作为响应,客户端12从服务器14接收呈现信息。
当服务器14前进到对键输入进行处理时,“ImeTextService::HandleKey”被调用。将发送自服务器14的呈现信息应用到客户端应用中的IME-UI。更具体地,客户端绘制预编辑文本并且将段属性添加到文本,如果适当的话。如果来自服务器14的响应包括多个候选者,则客户端12在IME-UI中以候选者列表显示候选者。调用“ImeCandidateWindow”来呈现候选数据。客户端12可以通过语言栏提供若干功能。这样的功能可以包括但不限于配置、显示输入状态以及示出帮助文档。以“ImeButtonMenu”实现这些功能。
服务器14可以作为组件对象模型(COM)进程外服务器被执行。使用COM接口来调用服务器14的方法,以及发送和接收数据。“ConverterSession”是实现从客户端12调用的函数的类。如果尚未存在,则“CoCreateInstance”创建“ConverterSession”的COM实例,并且客户端12通过该实例建立与服务器14的连接。服务器14实现方法,所述方法包括但不限于:“ConverterSession::CreateSession()”,其请求新会话被创建;“ConverterSession::DeleteSession()”,其结束会话;以及“ConverterSession::SendKey(ULONG key_code,ULONG key_modifiers,VARIANT*response)”,其将键事件从客户端12发送给服务器14,并且从服务器14接收呈现信息。
尽管已在Windows操作系统的语境下提供了上述实施例,然而,客户端-服务器IME体系结构很容易适用于其他操作系统。例如,客户端-服务器IME体系结构可以使用用于Leopard操作系统的IMKit来实现。
§2.1示例客户端-服务器体系结构实施方式
可以使用各种类型的体系结构来实现图1的系统,在图2和3中示出了体系结构的示例。图2是图示示例客户端-服务器IME体系结构的框图。在图2的客户端-服务器IME体系结构中,客户端12和服务器14在同一设备上被执行。如在本文中所使用的,术语设备是指处理或计算机设备,其可以包括但不限于台式计算机、膝上型计算机、平板计算机、服务器系统、个人数字助理(PDA)和/或移动电话。客户端12作为应用程序APP1、APP2、...APPn被提供,其每一个包括IME动态链接库(DLL)30和对应的IME-UI 32。为对应的用户程序实例化每一个客户端12,例如,可以已为字处理程序、浏览器程序和电子邮件程序分别实例化了所示的三个客户端12。服务器14包括有状态会话管理器34、转换引擎核心36和资源38。在一些实施例中,服务器14可以在沙盒40内被执行。有状态会话管理器34协调来自多个客户端12(例如,电子邮件应用和web浏览器应用)的多个连接。
图3是图示另一个示例客户端-服务器IME体系结构的框图。客户端12或多个客户端12在一个或多个客户端设备12上被执行,以及服务器14在独立设备44上被执行。客户端设备42通过网络46与服务器进行通信,网络46可以包括但不限于局域网(LAN)或广域网(WAN)(例如,因特网)。
客户端-服务器体系结构可以使用诸如IPC的单线程和单连接模型来实现。服务器14仅打开一个端口,并且对来自客户端12的多个连接进行处理。单线程和单连接模型提供简单性和可移植性。几乎所有平台都支持单线程和单连接IPC。
如上所述,客户端12藉每个键事件(例如,按下[A]按钮)连接到服务器14,并且从服务器14获取对应于键事件的呈现信息(例如,[A]应当被显示为日语[あ])。连接是无状态的,因为其没有保持活动,并且独立于在客户端12和服务器14之间的任何其他连接。总的来说,每一个IPC连接的寿命非常短。例如,在服务器将呈现信息传送给客户端12之后,它立即关闭连接并且等待其他连接。
在一些情况下,如果例如恶意用户连接到服务器并且什么都没做,则服务器14可能被阻止。在其他情况下,如果例如恶意服务器没有向客户端12发送任何响应,则客户端12可能被阻止。为了防止这样的情况,为每一个连接实现超时。更具体地,如果客户端12或服务器14没有在预先确定的时间段(例如,500兆秒)内发送消息,则关闭当前连接。
一旦服务器已被实例化,服务器就为在客户端和服务器之间的通信生成连接路径名。一些实施例例如利用命名的管道路径名,其关于用于其他会话的命名的管道路径名是唯一的。通过使用唯一的命名的管道路径名,阻止恶意用户在有效服务器被实例化之前生成假冒命名的管线服务器。因此,通过生成随机、多位路径名(例如,128位随机生成的路径名)来提供路径名。服务器将路径名存储在用户简档目录中。在服务器被实例化之后,但是在发送第一键事件之前,客户端从用户简档目录检索路径名,并且使用检索到的路径名来传送键事件。
当恶意应用在服务器启动之前(即,在服务器能够将实际路径名保存到用户简档之前)将假冒路径名保存在用户简档中时,另一个行为(exploit)可以发生。在这样的情况下,以及如果客户端使用了该假冒路径名来连接,则客户端可能连接到恶意或假冒的服务器。例如,恶意应用将路径名保存到用户简档,该路径名将导致客户端将键事件信息发送给恶意服务器,而不是预期的服务器。
然而,客户端-服务器体系结构10可以实现使客户端能够知道其正连接到有效服务器的技术。一个示例技术可以包括服务器锁定保留路径名的文件。其他示例技术可以包括操作系统提供路径的对等的进程ID(PID)、提供知道对等的PID的API和/或经由连接发送PID。此外,路径名应当仅是有效用户可访问的。因此,可以将有效安全令牌提供给对应API。安全令牌使本地系统、管理员和当前用户能够进行访问。拒绝其他用户访问。
PID是操作系统分配给每一个进程的特有ID。服务器或客户端可以通过使用操作系统提供的API来识别其对等的ID。一旦进程确定了其对等的PID,该进程就知道与该PID有关的各种信息,包括对应于该PID的所有者(例如,用户名)。通过检查所有者,服务器或客户端进程可以知道其对等的用户ID。如果用户名不同于预期的用户名,则服务器或客户端进程可以拒绝连接。
如上所述,服务器14可以在沙盒内被执行。沙盒是程序在其中运行的限制环境,以及其典型地由使诸如服务器进程的进程能够在限制环境内执行的库进行帮助。当被沙盒化时,服务器进程具有有限制的功能。在一些实施例中,服务器进程仅可以访问CPU周期和存储器。例如,在这样的实施例中,沙盒化服务器进程不能写入盘或显示其自身窗口。服务器进程的允许的功能由明确政策调控。沙盒库被包括在服务器进程代码中。在一些实施例中,代码不在虚拟机内部执行,因此,服务器进程以原生速度操作并且可直接访问操作系统API。
沙盒利用特定操作系统提供来允许不会对计算机作出持久改变的代码执行或访问是置信的信息的安全性。沙盒提供的体系结构和确切保证取决于操作系统。例如,在Windows中,代码在没有发起系统调用的情况下不能执行任何形式的I/O。在大部分系统调用中,Windows执行安全检查。沙盒确保安全检查因如在对应政策中定义的禁止服务器进程执行的特定动作而失败。
在一些实施例中,沙盒依赖于操作系统机制提供的保护,操作系统机制可以包括但不限于令牌、对象和/或完整性级别。这些示例机制在保护操作系统、其配置和用户数据方面是高度有效的。实际限制由政策配置,政策是可以被调用来定义服务器进程的限制和许可的编程接口。在一些实施例中,控制限制的示例机制包括主令牌、模拟令牌和工作令牌。一些实施例进一步包括完整性级别(例如,包括Windows VistaTM操作系统的实施例)。
一旦服务器已被实例化,就可以执行一系列检查来确保服务器没有正作为正常进程(即,非沙盒化进程)被执行。这些检查可以包括检查客户端设置的一个或多个令牌的值。服务器可以对该一个或多个令牌进行处理,并且可以将作为结果的值与预期值进行比较。如果作为结果的值不等于预期值,则服务器不被沙盒化,并且服务器被停止。另一个检查可以包括将操作系统提供的标识与预期标识进行比较。如果所提供的标识等同于预期标识,则服务器被沙盒化,并且客户端-服务器连接被执行,如在本文中所提供的。
§2.1.1示例服务器体系结构和实施方式
图4是图示服务器12的服务器体系结构的功能框图。服务器12包括会话层50、转换器层52和存储层54。会话层50包括解释器模块56、有状态会话管理器34、键映射模块58、键映射表60、转换器模块62和转换器表64。转换器层52提供转换引擎核心36,并且包括转换器功用模块66、转换器模块68、一个或多个重写器模块70和用户历史记录72。存储层包括词典模块74和资源38,资源38可以包括用户词典76和系统词典78。
键映射表60和转换器表64是数据表,以及键映射模块58和转换器模块62是访问存储在相应数据表中的数据的模块。键映射表60提供用于从对转换到命令的数据。每一对包括输入状态和输入事件(例如,键盘事件)。例如,“composition(组分)”状态和[space(空格)]键事件对被约束到“StartConversion”命令,“conversion(转换)”和[space]对被约束到“SelectNextCandidate”命令,以及“conversion”和[enter(回车)]对被约束到“CommitCurrentCandidate”命令。键映射58模块基于键映射表60来执行这样的转换。转换器表64是用于例如罗马字到平假名(例如,[a]到[あ]、[ka]到[か])的转换的表。在下面参考图5A论述了示例转换器表64。转换器62模块基于转换器表64来执行这样的转换。
会话层50对所有有状态任务进行处理,并且对所接收到的键事件进行解释。更具体地,会话层50从用户接收所有键事件,并且将它们解释成命令。将日语用作示例语言,与用户输入[a]相对应的键事件被翻译成[あ],和/或同样,与用户按下空格键[space]相对应的键事件被翻译成转换命令。转换器层52负责所有转换,并且执行IME的核心功能。转换器模块68提供用于将查询字符串转换成候选字符串的格阵的转换功能。例如,当查询是[あいのうた](ainouta)时,候选字符串的格阵可以被提供为[愛の歌、愛の詩、……](参见图6B)。存储层54管理词典访问。存储层54是底层,以及管理各种类型的词典数据,并且是不可改变的。系统词典78包括平假名键、日语词值、词性等的集合。系统词典78所提供的示例集合可以包括{あい(ai),愛(ai/love),noun}、{の(no),の(no),particle}、{うた(uta),歌(uta/song),noun}。用户词典76也提供这样的集合,但是是易变的且用户可修改的。
如在下面进一步详细论述的,在会话层50中实现的示例过程可以包括:服务器层从客户端UI接收键事件;将该事件解释成命令;向转换器层52发送查询,如果必要的话;从转换器层52接收该查询的结果;基于结果来生成呈现信息;以及将该呈现信息发送给客户端UI。例如,并且将日语用作示例语言,解释器模块56可以将键事件解释为插入字符(InsertCharacter)命令,以插入日语平假名字符(例如,[あ]),替代对应的罗马字字符(例如,[a])。
特别参考图5A和5B,会话层50可以对来自键事件的平假名字符串进行组合。该字符串被称为预编辑。如在下面进一步详细论述的,预编辑作为被处理来提供转换的查询被提供给转换器层52。该转换可以由确定性有限自动机(DFA)和规则来描述。图5A图示了以罗马字到平假名转换器表的形式的DFA 80的示例摘录,以及图5B图示了其对应的规则82。
图5A的示例转换器表支持罗马字到平假名转换。例如,如果[a]被按下,则[あ]被插入。规则[kk]包括未决字段。更具体地,当呈现信息被输出到客户端时,DFA状态被重置。然而,当未决被指定时,则当前DFA状态与未决状态一起被写。例如,如果用户输入[kk],则[つ]被首先提供给客户端,并且在那之后,IME假设[k]被输入。如果用户键入[kki],则输出变成[つき]。
现参考图6A和6B,转换器层52提供本公开的客户端-服务器IME的核心功能。如果解释器模块56将随后的键事件解释为转换(Convert)命令以将预编辑(例如,[あい])转换成一个或多个对应的日语汉字字符([愛]),则该预编辑在会话层50被生成并且作为查询被提供给转换器层52。转换器层50对该预编辑进行处理,并且生成包括词段的多个结果中的一个。每一个词段被提供为候选者集,其每一个包括词序列。每一个候选者包括相关联的分值,以及基于分值的顺序将候选者列出在候选者列表中。
图6A图示了示例文本字符串转换(即,作为平假名文本字符串被提供的“My nameis Nakano(我的名字是中野)”)、包括多个词段(例如,段0、段1、段2)的对应的转换输出以及对应于每一个词段的候选者列表。每一个候选者列表包括可以被用户选择的一个或多个转换候选者。词段从内部生成的词格阵来生成,参考图6B详细论述了词格阵的示例。转换器层52基于语言模型从字符串查询生成该格阵。
图6B图示了对应于[あいのうた]的示例词格阵,其是对应于罗马字文本字符串[ainouta]或英语的情歌的平假名文本字符串。转换器层52生成图6B的示例词格阵,其包括句子的开始(BOS)和句子的结束(EOS)指示符以及平假名字符的候选转换。如上所述,格阵基于语言模型来生成。示例语言模型可以从可以作为文本数据被提供的聚集的web数据来构建。
如上所述,转换器层52包括一个或多个重写器模块70。重写器模块70执行补充处理,其可以包括基于(例如,从用户历史记录72确定的)用户的历史来对候选者进行重新排名。重写器在主转换过程之后以及在用户已提交了结果之后被调用。重写器模块70可以对主转换器的结果进行调整,以及可以记录用户所选择的候选者。示例重写器例程可以包括但不限于:用户历史学习(例如,对段边界进行调整以及对候选者进行重新排名)、单个日本汉字词典(例如,将单个日本汉字字符添加到候选者)、符号词典(例如,将符号字符添加到候选者)、日期(例如,将日期字符串添加到候选者)、搭配词典(例如,基于词搭配来对候选者进行重新排名)、以及数量(例如,扩展候选者数量)。
用户历史学习是特别有用的重写器例程,因为其基于如从用户历史记录72确定的用户的输入历史来对转换器结果进行调整。当用户伴随段边界修改和段的候选者中的任一或两者提交结果时,用户历史学习重写器记录包括查询和用户的修改的对。下一次用户输入所记录的查询时,重写器基于所记录的对来修改默认边界和候选者的顺序。用户历史学习重写器使用缓存算法来记录用户的历史。缓存算法可以包括但不限于最近最少使用(LRU)。
存储层54是底层,并且管理各种类型的不可改变的词典数据。存储层54提供多个词典查找,其包括:共有前缀匹配(例如,键:abc=>结果:{a,ab,abc})、精确匹配(例如,键:abc=>结果:{abc})、以及预测性匹配(例如,键:abc=>结果:{abc,abcd,abcef,…})。共有前缀匹配用于普通转换。预测性匹配即用于预测和建议,以及精确匹配用于调试。
存储层54支持多个词典类型,其可以包括但不限于:TX、Darts和用户。TX词典作为主词典被提供,并且可以通过TX使用层序一元阶度序列(LOUDS)库来构造。用户词典76作为用户注册的纯文本词典被提供。
本公开的实施例可以将LOUDS用于主词典的数据结构。LOUDS是利用TRIE的数据结构算法,TRIE是排序的树数据结构,其用于存储具有作为字符串被提供的键的关联数组。使用LOUDS数据结构,数据被存储为位序列,其使数据大小非常紧凑。主词典包括LOUDS中的键索引、数组中的词属性以及LOUDS中的词值。键索引指向词属性,以及每一个词属性指向词值的对应叶子,或词属性具有特殊的音译位。
§3.0示例过程
现参考图7,图示了用于建立客户端-服务器IME会话的示例过程801。过程801可以例如在单个计算机设备中使用上面的客户端-服务器体系结构10来实现,其中步骤可以由操作系统执行,步骤可以在客户端上执行,以及步骤可以在服务器端上执行。
过程801确定客户端-服务器会话是否被请求(800)。例如,操作系统可以从客户端接收会话请求,并且确定客户端-服务器会话已被请求。如上所述,请求可以在客户端应用内实例化IME(例如,在web浏览器应用内实例化IME)时被自动生成并且发出。如果会话尚未被请求,则过程801往回循环。
如果会话已被请求,则可以发起服务器可执行程序(例如,IMEserver.exe),并且服务器可执行程序引用(802)一个或多个令牌。例如,请求可以包括一个或多个令牌,以及服务器可执行程序可以引用令牌。过程801基于所引用的令牌来确定服务器是否可以在沙盒内被实例化(804)。例如,服务器可执行程序可以对令牌进行处理,以及如果令牌期望授权值,则可以在沙盒内被实例化。如果服务器不能在沙盒内被实例化,则该过程发出错误(806),然后结束。相反,如果服务器可以在沙盒内被实例化,则该过程实例化服务器(808)。例如,操作系统继续执行服务器可执行程序以完全实例化服务器。
过程801确定实例化的服务器是否被实际沙盒化(810)。作为非限制性示例,服务器可以执行下面检查中的一个或多个:检查客户端设置的一个或多个令牌的值,以及如果所述值不等于预期值,则服务器不被沙盒化;将操作系统提供的标识与预期标识进行比较,以及如果所提供的标识等同于预期标识,则服务器被沙盒化。如果服务器没有被沙盒化(即,服务器正作为正常进程操作),则过程801发出错误(806),然后结束。例如,操作系统可以基于对检查的服务器响应来发出错误。如果服务器被沙盒化,则过程801确定与发出请求的应用相关联的用户的用户ID(812)。作为非限制性示例,可以将用户ID与会话请求一起提供。
过程801为在客户端和服务器之间的通信信道生成路径名(814)。例如,服务器生成路径名作为随机生成的128位路径名。过程801将路径名存储到对应于用户ID的用户简档(816)。例如,服务器可以将路径名存储到在本地存储器中的用户简档。在这样的情况下,尽管服务器可以被沙盒化,然而,政策允许服务器写入本地存储器。以这种方式,客户端可以随后访问用户简档来确定服务器所生成的路径名。过程801为当前会话发放会话ID(SID)(818),并且将该SID传送给客户端(820)。例如,服务器为与特定服务器的会话发放特有SID,并且使用基于所生成的路径名来建立的连接将该SID传送给服务器。
执行会话(822)。在下面参考图8进一步详细描述了可以作为会话执行的一部分被执行的示例过程。
该过程确定会话是否待被结束(824)。例如,如果用户关闭客户端应用和/或在应用内的IME-UI,则可以在客户端上生成结束会话请求。在一些实施方式中,服务器接收结束会话请求、删除为特定会话分配的所有资源和/或对象,并且会话结束。如果会话没有待被结束,则过程801往回循环到步骤822。如果会话待被结束,则会话被终止,并且过程801结束。
图8是图示用于使用客户端-服务器IME会话的文本和文本字符串转换的示例过程901的流程图。示例过程901可以在执行会话(例如,图7的822)期间被执行。如下所述,过程910的部分在客户端中被执行,以及该过程的其他部分在服务器中被执行。
过程901确定用户输入是否已被检测到(900)。例如,客户端监视用户输入(例如,按键、鼠标点击、屏幕触摸)。如果用户输入尚未被检测到,则过程901往回循环。如果用户输入已被检测到,则过程901生成对应的键事件(902),并且将该键事件和SID发送给服务器(904)。例如,客户端基于用户输入来生成键事件,并且将该键事件和SID发送给服务器。
在服务器处,过程901解释键事件(906)并且确定键事件是否对应于字符插入命令(908)。如果键事件不对应于字符插入命令,则过程901在910处继续。如果键事件对应于字符插入命令,则过程901在912处继续。
如果键事件对应于字符插入命令,则过程901基于键事件来确定对应的字符(912)并且生成呈现信息(914)。例如,服务器基于键事件来确定对应的字符并且生成呈现信息。过程901将呈现信息发送给客户端(916)。例如,服务器通过连接将呈现信息发送给客户端。
客户端12响应于接收呈现信息,在客户端显示器上或在诸如字处理程序的与客户端12相关联的环境中显示对应的字符(918),然后结束。
在服务器14处,如果键事件不对应于字符插入命令,则过程901确定键事件是否对应于转换命令(910)。如果键事件对应于转换命令,则过程901在920处继续。如果键事件不对应于转换命令,则过程901在930处继续。在920处,过程901基于自从上一个转换执行之后从客户端设备接收到的键事件来确定预编辑(920)。由于服务器是有状态的,所以服务器知道关于特定会话的键事件和命令。过程901将预编辑作为查询提供以进行转换(922)、生成对应的呈现信息(924)、将呈现信息发送给客户端(926)。客户端12响应于接收呈现信息,在客户端显示器上或在诸如字处理程序的与客户端12相关联的环境中显示对应的字符(928),然后结束。
在930处,如果键事件不对应于字符插入命令,则另一个命令被指示。其他命令可以包括移动光标命令和文本选择命令。过程901在服务器处对所指示的命令进行处理(930)。过程901生成呈现信息(932)、将呈现信息发送给客户端(934)。客户端12响应于接收呈现信息,在客户端显示器上或在诸如字处理程序的与客户端12相关联的环境中显示对应的字符(936),然后结束。
现将描述示例客户端-服务器会话。该示例客户端-服务器会话作为本公开的实施例的非限制性说明被提供。示例客户端-服务器会话包括下面的键序列:[a]、[i]、[space]、[space]和[enter]。更具体地,客户端接收指示[a]已被输入(例如,[a]键已在键盘上被按下)的输入(参见图8的900)。客户端生成键事件并且将该键事件和SID传送给服务器(参见图8的902和904)。当接收了键事件时,会话层将该键事件解释成InsertCharacter命令(参见图8的906和908),并且将该命令与[a]一起发送给预编辑。预编辑将[a](日语罗马字)转换成[あ](日语平假名)。预编辑将结果“あ(a)”返回给会话层。对应的呈现信息被生成并且被传送给客户端(参见图8的912、914和916),并且客户端向用户显示[あ](参见图8的918)。
客户端从用户接收指示[i]已被输入(例如,[i]键已在键盘上被按下)的输入,并且确定键输入被检测到(参见图8的900)。客户端生成键事件并且将该键事件和SID传送给服务器(参见图8的902和904)。当接收了键事件时,会话层将该键事件解释成InsertCharacter命令(参见图8的906和908),并且将该命令与[i]一起发送给预编辑。预编辑将[i](日语罗马字)转换成[い](日语平假名)。由于服务器是有状态的,所以其知道先前的转换包括了[a]到[あ]。因此,预编辑现将结果“あい(ai)”返回给会话层。对应的呈现信息被生成并且被传送给客户端(参见图8的912、914和916),并且客户端向用户显示[あい](参见图8的918)。
客户端然后从用户接收指示[space]已被输入(例如,空格键已在键盘上被按下)的输入(参见图8的900)。客户端生成键事件并且将该键事件和SID传送给服务器(参见图8的902和904)。当接收了键事件时,会话层将该键事件解释成Convert命令(参见图8的906和910)。由于服务器是有状态的,所以服务器知道先前的字符序列是“あい(ai)”,并且将该命令与“あい(ai)”一起发送给转换器。转换器将[あい](日语平假名)转换成[愛](日语汉字)。转换器将结果“愛”返回给会话层(参见图8的920和922)。对应的呈现信息被生成并且被传送给客户端(参见图8的924和926),并且客户端向用户显示[愛](参见图8的928)。
客户端然后从用户接收指示[space]已被再次输入(例如,空格键已在键盘上被按下)的输入(参见图8的900)。客户端生成键事件并且将该键事件和SID传送给服务器(参见图8的902和904)。当接收了键事件时,会话层将该键事件解释成Convert命令(参见图8的906和910)。由于服务器是有状态的,所以服务器知道从[あい](日语平假名)到[愛](日语汉字)的先前转换。该信息被提供给转换器,其确定从“あい”(日语平假名)到日语片假名的一个或多个候选转换。更具体地,候选者列表被生成并且包括对应于“あい”的一个或多个日语片假名候选者。在该示例中,候选者列表可以包括[愛、合、あい、相、……](日语汉字、片假名或平假名)。将候选者列表返回给会话层,并且基于其来生成呈现信息(参见图8的920、922和924)。将呈现信息传送给客户端(参见图8的926),并且客户端向用户显示候选者列表[愛、合、あい、相、……],其中第一候选者[愛]被高亮或另外被指示为当前选择的候选者(参见图8的928)。
为了从候选者列表选择不同的候选者,用户可以输入键事件(例如,按压下“↓”向下键)。响应于用户输入,客户端生成键事件并且将该键事件和SID传送给服务器(参见图8的902和904)。当接收了键事件时,会话层将该键事件解释为SelectNextCandidate命令并且对该命令进行处理(参见图8的906和930)。对应的呈现信息被生成并且被传送给客户端(参见图8的932和934)。客户端向用户显示候选者列表[愛、合、あい、相、……],其中第二候选者[合]被高亮或另外被指示为当前选择的候选者(参见图8的936)。
为了从候选者列表选择当前选择的候选者,用户提供对应的输入(例如,按下[enter])。响应于用户输入,客户端生成键事件并且将该键事件和SID传送给服务器(参见图8的902和904)。当接收了键事件时,会话层生成用于将所选择的候选者(例如,[合])提交给客户端的对应的响应。响应由客户端接收,客户端在应用中展示所选择的候选者(例如,[合])。如果没有进一步文本待被输入或转换,则客户端可以将取消会话消息与SID一起发送给服务器。作为响应,服务器结束客户端的会话。
现参考图9和10,客户端-服务器体系结构的实施例使服务器能够在没有重启客户端的情况下被更新。例如,服务器可以在不必关闭和重启可能正与该服务器进行通信的客户端应用程序的情况下被更新。更具体地,当新近连接的客户端具有与当前服务器兼容的通信协议时,更新可以被沉默地(即,在没有警示用户的情况下)执行。作为更新的结果,当前服务器被停止,并且新的服务器被实例化。在客户端的通信协议的版本与新的服务器的通信协议的版本不兼容的情况下,该情况被检测到,并且用户被提示。
图9是图示版本和协议检查的框图。会话在时间段t0在当前客户端1002和当前服务器1004之间正在进行。在时间段t0,新的客户端1006试图建立与当前服务器1004的会话。尽管在图9中未图示,然而,如果新的客户端1006和当前服务器1004是同一版本的,则该会话被建立,并且当前客户端1002和新的客户端1006两者都与当前服务器1004进行交互。在图9的框图中,在时间段t1,确定新的客户端的版本比当前服务器1004的版本新。由于新的客户端的版本比当前服务器的版本新,所以当前服务器1004被终止,并且新的服务器1008被实例化。在新的客户端1006和新的服务器1008之间建立会话1010。因此,当前会话1000被暂时挂起。不向与当前客户端1002对接的用户警示该暂时挂起。
新的服务器1008由自动更新进程安装,其是检查最新服务器版本并且自动安装它的进程。可以提供基础设施来执行该功能,该基础设施包括用来安装请求的软件并且保持其最新的程序。例如,更新服务可以在计算机设备上实现并且可以通过因特网连接向远程IME支持服务器请求必要的更新。该程序可以重写当前服务器可执行文件。在一些实施例中,该程序可以将当前服务器可执行文件重命名成临时文件,并且将新的服务器二进制安装到默认的服务器路径。在这种情况下,当前服务器正在运行,而可执行文件已用新的文件替换。
在时间段t2,确定当前客户端1002和新的服务器1008的通信协议是否是兼容的。更具体地,协议包括用于存储协议版本值的特殊字段。当新的服务器1008被初始化时,该服务器的协议版本值被存储到本地文件。当前客户端1002上载该文件,并且检查该服务器的协议版本与客户端的协议版本是否相同。在一些实施例中,兼容协议表可以被提供并且可以被实现为确定服务器的协议版本与客户端的协议版本是否相同。
如果通信协议是兼容的,则在当前客户端1002和新的服务器1008之间建立会话1012。在这种情况下,当前客户端1002的服务器版本比新的服务器1008的服务器版本旧。因此,新的服务器版本可以与旧的服务器版本向后兼容。如果通信协议不兼容,则在当前客户端1002和新的服务器1008之间的会话仍然是关闭的,并且向用户警示在客户端上的错误。例如,可以生成指示用户重启特定客户端应用的警示。
特别参考图10,图示了用于提供版本和协议检查的示例过程1101。图10的过程1101假定当前客户端和当前服务器正通过当前会话进行通信。
过程1101确定会话是否已从新的客户端被请求(1100)。例如,操作系统可以确定客户端是否已生成了会话请求。如果会话尚未从新的客户端被请求,则过程1101往回循环。如果会话已为新的客户端被请求,则该过程确定当前服务器版本是否比新的客户端版本旧(1102)。更具体地,提供用于存储服务器版本值的特殊字段。当当前服务器被初始化时,该服务器的版本值也被存储到本地文件。如果当前服务器版本不比新的客户端版本旧,则过程1101在1104处继续。例如,操作系统可以对服务器版本值进行比较。
如果当前服务器版本比新的客户端版本旧,则过程1101停止当前服务器(1106)并且与当前客户端的当前会话结束。例如,操作系统可以停止当前服务器。过程1101实例化新的服务器(1108)。过程1101连接新的服务器和新的客户端(1110)。过程1101确定当前客户端协议与新的服务器协议是否兼容(1112)。例如,操作系统可以确定协议是否是兼容的。
如果当前客户端协议与新的服务器协议兼容,则过程1101在1114处继续。过程1101将当前客户端连接到新的服务器,并且会话在其之间被建立(1114)。例如,服务器生成路径名,并且向当前客户端发放SID。过程1101使用新的服务器来对当前客户端和新的客户端事件进行处理(1118),然后结束。
返回到1112,如果当前客户端协议与新的服务器协议不兼容,则过程1101使用新的服务器来仅对新的客户端事件进行处理(1116)。过程1101在当前客户端处生成错误(1120),然后结束。例如,操作系统可以在当前客户端处生成指示用户重启客户端的错误。
返回到1104,过程1101确定新的客户端协议与当前服务器协议是否兼容(1104)。例如,操作系统可以对协议进行比较。如果新的客户端协议与当前服务器协议兼容,则使用当前服务器来对当前客户端事件和新的客户端事件进行处理(1122),然后该过程结束。如果新的客户端协议与当前服务器协议不兼容,则在新的客户端处发出错误(1124)。使用当前服务器来对当前客户端事件进行处理(1126),然后该过程结束。
如在上面详细论述的,客户端-服务器IME体系结构10包括无状态客户端,其将每一个键事件发送给服务器并且从服务器接收呈现信息。如果在输入会话期间,服务器被终止并重启,则可能向客户端提供非预期的呈现信息。为了处理这样的情况,本公开的客户端-服务器IME提供重启终止的服务器、检测服务器的重启、以及将记录的键事件序列发送给服务器以带来当前新的会话。键事件序列可以被存储较短时段。例如,键事件序列可以被存储当前会话的生命期,然后在结束该会话时被清除。作为另一个示例,键事件序列可以被存储在当前会话内的连接的生命期。如上所述,连接可以在服务器已将与最后键事件序列相对应的呈现信息传送给客户端之后被终止。
发送键事件序列引起客户端-服务器IME体系结构10无限循环,其可以使服务器重复崩溃,并且使这样的崩溃键事件序列能够被识别并记录。例如,由于特定键事件序列,可以引起服务器崩溃。当重启服务器时,为了将当前新的服务器的状态带到先前会话,可以将该相同键事件序列传送回新近实例化的服务器。然而,并且由于特定键事件序列可能是错误的键事件序列,也可能引起新的服务器崩溃。
现参考图11,图示了用于重建客户端-服务器IME会话的示例过程1201。过程1201确定在客户端处是否生成了事件(1200)。例如,客户端12可以基于用户输入来监视键事件。
如果在客户端处没有生成事件,则过程1201往回循环。如果在客户端处生成了事件,则过程1201将该事件记录在事件序列中(1202)。更具体地,客户端可以将事件存储在客户端进程在其上执行的设备的本地存储器中的事件序列中。将该事件传送给服务器(1204),以及过程1201确定服务器是否终止(1206)。例如,客户端12、IME支持框架或计算机操作系统可以确定服务器14是否已停止了运作。
如果服务器没有终止,则过程在1208处继续,其中在客户端处从服务器接收对应于该事件的呈现信息(1208)。过程1201确定会话是否待被结束(1212)。如果会话没有待被结束,则过程1201往回循环到1200。如果会话待被结束,则过程1201结束。
返回到1206,如果服务器终止(1206),则过程1201确定该终止是否是连续终止(例如,第二、第三或第四连续终止)(1207)。例如,在每一个服务器终止之后,IME客户端12、IME支持框架或操作系统可以使计数器递增。如果终止是连续终止,则生成错误(1211),并且过程1201结束。错误可以在客户端处被生成,并且可以向用户显示。错误禁止了服务器实例化和终止的无限循环。
如果终止不是连续终止,则过程1201实例化新的服务器(1210)。更具体地,如在上面详细论述的,操作系统可以实例化新的服务器。客户端连接到新的服务器,并且过程1201建立新的会话(1214)。将记录的事件序列从客户端传送到新的服务器(1216)。使用事件序列,服务器14可以实例化客户端12的会话,其处于与在服务器14终止时客户端12的先前会话相同的状态。过程1201然后往回循环到1206。
在本说明书中描述的本公开和所有功能操作的实施例可以以数字电子电路、或者以计算机软件、固件或硬件,包括在本说明书中公开的结构以及其结构等同物、或者以以上的一个或多个的组合来实现。可以将本公开的实施例实现为一个或多个计算机程序产品,即一个或多个计算机程序指令模块,其被编码在计算机可读介质上、由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是:机器可读存储设备、机器可读存储基片、存储器设备、形成机器可读传播信号的物质成分、或以上的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有装置、设备以及机器,包括作为示例:可编程处理器、计算机、或多个处理器或计算机。除硬件外,装置可以包括为讨论中的计算机程序创建执行环境的代码,例如构成处理器固件、协议堆栈、数据库管理系统、操作系统、或以上一个或多个的组合的代码。传播信号是非自然生成的信号,例如机器生成的电的、光的或电磁的信号,其被生成来编码信息以传送给适当的接收器装置。
计算机程序(也称作程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序、或适于在计算环境中使用的其他单元。计算机程序不必对应于文件系统中的文件。可以将程序存储在保留其他程序或数据的文件(例如,存储在标记语言文档中的一个或多个脚本)的一部分、专用于讨论中的程序的单个文件或者多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。可以将计算机程序部署为在一个计算机上或者在位于一个地点或跨多个地点分布并且由通信网络互连的多个计算机上执行。
在本说明书中描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程处理器执行以通过操作输入数据并且生成输出来执行功能。所述过程和逻辑流还可以由专用逻辑电路执行,以及装置还可以被实现为专用逻辑电路,专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适于执行计算机程序的处理器包括,作为示例,通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的主要元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个海量存储设备,例如磁的、磁光盘或光盘,或可操作地耦接以从所述一个或多个海量存储设备接收数据或向所述一个或多个海量存储设备传送数据,或两者。然而,计算机不必具有这样的设备。此外,可以将计算机嵌入另一个设备中,所述设备例如移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器,仅列出一些。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括作为示例:半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充,或合并入专用逻辑电路。
为了提供与用户的交互,本公开的实施例可以在具有下述的计算机上实现:用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示)监视器;以及用户通过其可以向计算机提供输入的键盘和指示设备,例如鼠标或跟踪球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感知反馈,例如视觉反馈、听觉反馈或触觉反馈;以及可以以任何形式接收来自用户的输入,包括声学的、话音或触觉的输入。
本公开的实施例可以在包括下述的计算系统中实现:后端组件,例如作为数据服务器;或者中间件组件,例如应用服务器;或者前端组件,例如具有用户通过其可以与本公开的实施例交互的图形用户界面或Web浏览器的客户端计算机;或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过例如通信网络的任何形式或介质的数字数据通信互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如因特网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且典型地通过通信网络交互。客户端和服务器的关系依靠在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生。
虽然本说明书包含许多细节,但是这些细节不应当被解释为对本公开或可以主张的内容的范围的限制,而应当被解释为对具体到本公开的特定实施例的特征的描述。还可以将在本说明书中在分离的实施例的情境中描述的某些特征组合在单个实施例中实现。相反地,也可以将在单个实施例的情境中描述的各种特征分离地在多个实施例中实现或在任何适当的子组合中实现。此外,尽管可能在上面将特征描述为在某些组合中起作用,甚至最初主张如此,但是在一些情况下,可以将来自所主张的组合的一个或多个特征从组合中删去,并且可以将所主张的组合指向子组合或者子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但是不应当将这理解为需要以所示的特定顺序或者以连续顺序执行这样的操作、或者需要执行所有图示的操作,才能达到期望的结果。在某些情况下,多任务以及并行处理可以是有利的。此外,不应当将在上述实施例中的各种系统组件的分离理解为在所有实施例中均需要这样的分离,而应当理解的是,通常可以将所描述的程序组分和系统集成到一起成为单个软件产品或封装成多个软件产品。
已经描述了本公开的多个实施例。然而,应当理解的是,可以在不背离本公开的精神和范围的情况下,进行各种修改。因此,其他实施例在所附权利要求的范围内。

Claims (25)

1.一种用于应用输入法编辑器的计算机实现的方法,包括:
在输入法编辑器IME服务器处,通过在所述IME服务器和与客户端设备相关联的多个IME客户端之间的相应的通信会话来接收从所述多个IME客户端传送给所述IME服务器的多个键事件,其中所述IME服务器是存储在所述IME服务器和所述多个IME客户端之间的所述相应的通信会话的请求和响应两者的有状态服务器,以及所述多个IME客户端中的每一个IME客户端是基于对应的键事件而向所述IME服务器发出请求的无状态IME客户端;
由所述IME服务器基于通过所述相应的通信会话中的第一通信会话所接收的所述多个键事件中的第一键事件,来识别一个或多个语标字符;
由所述IME服务器生成与所述一个或多个语标字符相对应的呈现信息;以及
将所述呈现信息从所述IME服务器传送给与所述第一通信会话相关联的所述多个IME客户端中的IME客户端,以显示所述一个或多个语标字符,其中:所述相应的通信会话在所述IME服务器和所述多个IME客户端之间被同时协调,并且所述IME服务器在与所述多个IME客户端的连接之间切换,以通过与所述相应的通信会话中的一个通信会话相关联的连接中的一个连接来接收所述多个键事件中的一个键事件。
2.根据权利要求1所述的计算机实现的方法,进一步包括:
从所述IME客户端接收会话请求;
基于所述会话请求来建立在所述IME客户端和所述IME服务器之间的会话;
由所述IME服务器生成会话标识符;
将所述会话标识符传送给所述IME客户端,所述会话标识符被与每一个随后的键事件一起从所述IME客户端传送至所述IME服务器;以及
在所述IME服务器处,在接收键事件时,接收所述会话标识符。
3.根据权利要求2所述的计算机实现的方法,进一步包括:
接收所述多个IME客户端的会话标识符;
将特有会话数据与每个会话标识符进行关联;以及
对在与和相应的键事件一起被传送的相应的会话标识符相关联的所述特有会话数据的情景下接收的每个键事件进行处理。
4.根据权利要求1所述的计算机实现的方法,进一步包括:
从所述IME客户端接收会话请求;
响应于所述会话请求,实例化所述IME服务器;
为在所述IME客户端和所述IME服务器之间的通信生成路径名;以及
存储所述路径名以由所述IME客户端访问。
5.根据权利要求4所述的计算机实现的方法,其中存储所述路径名包括将所述路径名存储到与所述IME客户端的用户相关联的用户简档。
6.根据权利要求4所述的计算机实现的方法,进一步包括:
基于所述会话请求来确定用户标识;识别与所述用户标识相关联的用户简档;以及将所述路径名存储到所述用户简档。
7.根据权利要求4所述的计算机实现的方法,其中所述路径名包括随机生成的路径名和统一资源定位符URL中的一个。
8.根据权利要求1所述的计算机实现的方法,进一步包括:
建立在所述IME客户端和所述IME服务器之间的会话,所述会话包括在所述IME客户端和所述IME服务器之间的能够被打开和关闭的一个或多个连接;
打开连接;
当所述连接被打开时,监视在所述IME客户端和所述IME服务器之间的通信;以及
如果键事件和相应的呈现信息中的一个在预先确定的时间段内未被传送,则关闭所述连接。
9.根据权利要求8所述的计算机实现的方法,其中所述键事件在所述连接被打开之后被传送给所述IME服务器,并且进一步包括:响应于将所述相应的呈现信息传送给所述IME客户端,关闭所述连接。
10.根据权利要求1所述的计算机实现的方法,进一步包括:在所述IME服务器处对所述第一键事件进行解释以提供对应的命令,所述呈现信息基于所述对应的命令被生成,其中所述对应的命令包括插入字符命令和转换命令中的一个。
11.根据权利要求1所述的计算机实现的方法,进一步包括:
在所述IME服务器处接收第二键事件,所述第二键事件从与所述IME服务器通信并且是无状态的第二IME客户端被传送给所述IME服务器;
基于所述第二键事件来识别一个或多个第二语标字符;
基于所述一个或多个第二语标字符来生成第二呈现信息;以及
将所述第二呈现信息从所述IME服务器传送给所述第二IME客户端,以显示所述一个或多个第二语标字符。
12.根据权利要求11所述的计算机实现的方法,其中所述IME客户端和所述第二IME客户端包括在共同设备上被执行的应用程序。
13.一种用于应用输入法编辑器的系统,包括:
其上存储有指令的计算机可读存储介质;
包括一个或多个数据处理装置的设备,所述一个或多个数据处理装置执行所述指令来促使所述一个或多个数据处理装置执行操作,所述操作包括:
在输入法编辑器IME服务器处,通过在所述IME服务器和与客户端设备相关联的多个IME客户端之间的相应的通信会话来接收从所述多个IME客户端传送给所述IME服务器的多个键事件,其中所述IME服务器是存储在所述IME服务器和所述多个IME客户端之间的所述相应的通信会话的请求和响应两者的有状态服务器,以及所述多个IME客户端中的每一个IME客户端是基于对应的键事件而向所述IME服务器发出请求的无状态IME客户端;
由所述IME服务器基于通过所述相应的通信会话中的第一通信会话所接收的所述多个键事件中的第一键事件,来识别一个或多个语标字符;
由所述IME服务器生成与所述一个或多个语标字符相对应的呈现信息;以及
将所述呈现信息从所述IME服务器传送给与所述第一通信会话相关联的所述多个IME客户端中的IME客户端,以显示所述一个或多个语标字符,其中:所述相应的通信会话在所述IME服务器和所述多个IME客户端之间被同时协调,并且所述IME服务器在与所述多个IME客户端的连接之间切换,以通过与所述相应的通信会话中的一个通信会话相关联的连接中的一个连接来接收所述多个键事件中的一个键事件。
14.根据权利要求13所述的系统,其中所述操作进一步包括:
从所述IME客户端接收会话请求;
基于所述会话请求来建立在所述IME客户端和所述IME服务器之间的会话;
由所述IME服务器生成会话标识符;
将所述会话标识符传送给所述IME客户端;
与每一个随后的键事件一起从所述IME客户端传送所述会话标识符;以及
在所述IME服务器处,在接收所述键事件时,接收所述会话标识符。
15.根据权利要求14所述的系统,其中所述操作进一步包括:
接收所述多个IME客户端的会话标识符;
将特有会话数据与每个会话标识符进行关联;以及
对在与和相应的键事件一起被传送的相应的会话标识符相关联的所述特有会话数据的情景下接收的每个键事件进行处理。
16.根据权利要求13所述的系统,其中所述操作进一步包括:
从所述IME客户端接收会话请求;
响应于所述会话请求,实例化所述IME服务器;
为在所述IME客户端和所述IME服务器之间的通信生成路径名;以及
存储所述路径名以由所述IME客户端访问。
17.根据权利要求16所述的系统,其中存储所述路径名包括将所述路径名存储到与所述IME客户端的用户相关联的用户简档。
18.根据权利要求16所述的系统,其中所述操作进一步包括:
基于所述会话请求来确定用户标识;识别与所述用户标识相关联的用户简档;以及将所述路径名存储到所述用户简档。
19.根据权利要求16所述的系统,其中所述路径名包括随机生成的路径名和统一资源定位符URL中的一个。
20.根据权利要求13所述的系统,其中所述操作进一步包括:
建立在所述IME客户端和所述IME服务器之间的会话,所述会话包括在所述IME客户端和所述IME服务器之间的能够被打开和关闭的一个或多个连接;
打开连接;
当所述连接被打开时,监视在所述IME客户端和所述IME服务器之间的通信;以及
如果键事件和相应的呈现信息中的一个在预先确定的时间段内未被传送,则关闭所述连接。
21.根据权利要求20所述的系统,其中所述键事件在所述连接被打开之后被传送给所述IME服务器,并且进一步包括:响应于将所述相应的呈现信息传送给所述IME客户端,关闭所述连接。
22.根据权利要求13所述的系统,其中所述操作进一步包括:在所述IME服务器处对所述第一键事件进行解释以提供对应的命令,所述呈现信息基于所述对应的命令被生成。
23.根据权利要求22所述的系统,其中所述对应的命令包括插入字符命令和转换命令中的一个。
24.根据权利要求13所述的系统,其中所述操作进一步包括:
在所述IME服务器处接收第二键事件,所述第二键事件从与所述IME服务器通信并且是无状态的第二IME客户端被传送给所述IME服务器;
基于所述第二键事件来识别一个或多个第二语标字符;
基于所述一个或多个第二语标字符来生成第二呈现信息;以及
将所述第二呈现信息从所述IME服务器传送给所述第二IME客户端,以显示所述一个或多个第二语标字符。
25.根据权利要求24所述的系统,其中所述IME客户端和所述第二IME客户端包括在所述客户端设备上被执行的应用程序。
CN201610429936.5A 2009-11-27 2010-11-24 客户端-服务器输入法编辑器体系结构 Active CN106126350B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US26471409P 2009-11-27 2009-11-27
US61/264,714 2009-11-27
CN201080062456.0A CN102834819B (zh) 2009-11-27 2010-11-24 客户端-服务器输入法编辑器体系结构

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201080062456.0A Division CN102834819B (zh) 2009-11-27 2010-11-24 客户端-服务器输入法编辑器体系结构

Publications (2)

Publication Number Publication Date
CN106126350A CN106126350A (zh) 2016-11-16
CN106126350B true CN106126350B (zh) 2020-01-24

Family

ID=44067234

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201080062456.0A Active CN102834819B (zh) 2009-11-27 2010-11-24 客户端-服务器输入法编辑器体系结构
CN201610429936.5A Active CN106126350B (zh) 2009-11-27 2010-11-24 客户端-服务器输入法编辑器体系结构

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201080062456.0A Active CN102834819B (zh) 2009-11-27 2010-11-24 客户端-服务器输入法编辑器体系结构

Country Status (4)

Country Link
US (2) US8904012B2 (zh)
KR (2) KR101743122B1 (zh)
CN (2) CN102834819B (zh)
WO (1) WO2011066434A2 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110184723A1 (en) * 2010-01-25 2011-07-28 Microsoft Corporation Phonetic suggestion engine
WO2011127640A1 (en) * 2010-04-12 2011-10-20 Google Inc. Extension framework for input method editor
US9348479B2 (en) 2011-12-08 2016-05-24 Microsoft Technology Licensing, Llc Sentiment aware user interface customization
US9378290B2 (en) 2011-12-20 2016-06-28 Microsoft Technology Licensing, Llc Scenario-adaptive input method editor
CN104428734A (zh) 2012-06-25 2015-03-18 微软公司 输入法编辑器应用平台
US8959109B2 (en) 2012-08-06 2015-02-17 Microsoft Corporation Business intelligent in-document suggestions
CN104823183B (zh) 2012-08-30 2018-04-24 微软技术许可有限责任公司 基于特征的候选选择
US10656957B2 (en) 2013-08-09 2020-05-19 Microsoft Technology Licensing, Llc Input method editor providing language assistance
US10019985B2 (en) 2013-11-04 2018-07-10 Google Llc Asynchronous optimization for sequence training of neural networks
CN104679766A (zh) * 2013-11-28 2015-06-03 英业达科技有限公司 输入系统及其方法
JP5907393B2 (ja) * 2013-12-20 2016-04-26 国立研究開発法人情報通信研究機構 複雑述語テンプレート収集装置、及びそのためのコンピュータプログラム
JP5904559B2 (ja) 2013-12-20 2016-04-13 国立研究開発法人情報通信研究機構 シナリオ生成装置、及びそのためのコンピュータプログラム
US9959069B2 (en) * 2015-02-12 2018-05-01 Microsoft Technology Licensing, Llc Externalized execution of input method editor
CN107179952B (zh) * 2016-03-11 2021-03-23 思杰系统有限公司 虚拟应用客户端和服务器之间的协同输入法编辑器(ime)活动
CN106815525B (zh) * 2016-12-13 2020-03-31 北京元心科技有限公司 数据传递方法及装置
TWI658401B (zh) 2017-11-14 2019-05-01 財團法人工業技術研究院 基於虛擬化行動架構之行動通訊裝置及其相關輸入法切換方法
EP3964994B1 (en) 2018-05-07 2023-07-19 Google LLC Synchronizing access controls between computing devices
CN108845791B (zh) * 2018-05-31 2022-03-18 浪潮金融信息技术有限公司 应用程序代码开发处理方法及装置、可读存储介质、终端
CN117093323B (zh) * 2023-08-23 2024-03-26 北京志凌海纳科技有限公司 基于后端执行引擎中实现沙盒机制的方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7171473B1 (en) * 1999-11-17 2007-01-30 Planet Exchange, Inc. System using HTTP protocol for maintaining and updating on-line presence information of new user in user table and group table
CN101208928A (zh) * 2005-06-03 2008-06-25 微软公司 运行具有低权限的因特网应用程序
TW200835239A (en) * 2007-02-14 2008-08-16 Tu-Hsin Tsai System and method for asynchronous exchanging electronic messages
CN101253487A (zh) * 2005-09-01 2008-08-27 微软公司 基于资源的动态安全授权
CN101286093A (zh) * 2007-04-09 2008-10-15 谷歌股份有限公司 客户端输入方法
CN101286154A (zh) * 2007-04-09 2008-10-15 谷歌股份有限公司 输入法编辑器用户档案
CN101291302A (zh) * 2008-05-27 2008-10-22 北京搜狗科技发展有限公司 一种利用输入法进行即时通讯的方法和一种输入法系统
CN101506789A (zh) * 2005-05-27 2009-08-12 微软公司 用于在远程终端会话中提供辅助功能选项的技术
EP2120176A1 (en) * 2007-02-09 2009-11-18 NTT DoCoMo, Inc. Terminal devic and method for checking a software program

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2695483B2 (ja) 1989-09-07 1997-12-24 富士通株式会社 整合性チェック方法
JPH05307541A (ja) 1992-04-30 1993-11-19 Nec Corp かな漢字変換システム
JPH07121468A (ja) 1993-10-20 1995-05-12 Fuji Xerox Co Ltd サーバー選択装置
JPH08194668A (ja) 1995-01-13 1996-07-30 Nippon Telegr & Teleph Corp <Ntt> システムバージョンに基づく同期開始方式
JP2000099499A (ja) 1998-09-21 2000-04-07 Mitsubishi Electric Corp クライアント及びサーバ
US7035850B2 (en) * 2000-03-22 2006-04-25 Hitachi, Ltd. Access control system
US7370239B2 (en) 2001-05-31 2008-05-06 Fisher-Rosemount Systems, Inc. Input/output device with configuration, fault isolation and redundant fault assist functionality
JP2003044471A (ja) 2001-08-02 2003-02-14 Ricoh Co Ltd 文字列処理システム
JP4202857B2 (ja) * 2003-01-30 2008-12-24 富士通株式会社 プログラム、文字入力編集方法、装置及び記録媒体
US7613797B2 (en) * 2003-03-19 2009-11-03 Unisys Corporation Remote discovery and system architecture
CA2638965A1 (en) * 2003-05-15 2004-11-15 Ibm Canada Limited - Ibm Canada Limitee Accessing a platform independent input method editor from an underlying operating system
WO2005043360A1 (en) * 2003-10-21 2005-05-12 Green Border Technologies Systems and methods for secure client applications
US8935429B2 (en) * 2006-12-19 2015-01-13 Vmware, Inc. Automatically determining which remote applications a user or group is entitled to access based on entitlement specifications and providing remote application access to the remote applications
US20080120541A1 (en) * 2006-11-22 2008-05-22 Dynacomware Taiwan Inc. System and method for on-line retrieval and typing of non-standard characters
US8533291B1 (en) * 2007-02-07 2013-09-10 Oracle America, Inc. Method and system for protecting publicly viewable web client reference to server resources and business logic
JP2009015561A (ja) * 2007-07-04 2009-01-22 Oki Electric Ind Co Ltd サーバ、キー情報変換方法、プログラムおよびシステム
KR20090016041A (ko) * 2007-08-10 2009-02-13 에스케이커뮤니케이션즈 주식회사 휴대용 네트워크 기기에서의 키보드 입력 모드 제공 장치및 방법
US8468541B2 (en) * 2007-08-28 2013-06-18 Red Hat, Inc. Event driven sendfile
US20090106661A1 (en) * 2007-10-17 2009-04-23 Inventec Corporation Switching System and Method for Display Interface
US7970350B2 (en) * 2007-10-31 2011-06-28 Motorola Mobility, Inc. Devices and methods for content sharing
US8010465B2 (en) * 2008-02-26 2011-08-30 Microsoft Corporation Predicting candidates using input scopes
US8756704B2 (en) * 2008-12-15 2014-06-17 International Business Machines Corporation User impersonation and authentication
US9104244B2 (en) * 2009-06-05 2015-08-11 Yahoo! Inc. All-in-one Chinese character input method

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7171473B1 (en) * 1999-11-17 2007-01-30 Planet Exchange, Inc. System using HTTP protocol for maintaining and updating on-line presence information of new user in user table and group table
CN101506789A (zh) * 2005-05-27 2009-08-12 微软公司 用于在远程终端会话中提供辅助功能选项的技术
CN101208928A (zh) * 2005-06-03 2008-06-25 微软公司 运行具有低权限的因特网应用程序
CN101253487A (zh) * 2005-09-01 2008-08-27 微软公司 基于资源的动态安全授权
EP2120176A1 (en) * 2007-02-09 2009-11-18 NTT DoCoMo, Inc. Terminal devic and method for checking a software program
TW200835239A (en) * 2007-02-14 2008-08-16 Tu-Hsin Tsai System and method for asynchronous exchanging electronic messages
CN101286093A (zh) * 2007-04-09 2008-10-15 谷歌股份有限公司 客户端输入方法
CN101286154A (zh) * 2007-04-09 2008-10-15 谷歌股份有限公司 输入法编辑器用户档案
CN101291302A (zh) * 2008-05-27 2008-10-22 北京搜狗科技发展有限公司 一种利用输入法进行即时通讯的方法和一种输入法系统

Also Published As

Publication number Publication date
KR20120091253A (ko) 2012-08-17
CN102834819A (zh) 2012-12-19
WO2011066434A2 (en) 2011-06-03
KR101716802B1 (ko) 2017-03-15
KR20170005519A (ko) 2017-01-13
US20150088985A1 (en) 2015-03-26
CN106126350A (zh) 2016-11-16
CN102834819B (zh) 2016-08-03
WO2011066434A3 (en) 2011-11-24
US8904012B2 (en) 2014-12-02
US20110131642A1 (en) 2011-06-02
US9635138B2 (en) 2017-04-25
KR101743122B1 (ko) 2017-06-15

Similar Documents

Publication Publication Date Title
CN106126350B (zh) 客户端-服务器输入法编辑器体系结构
KR101581981B1 (ko) 클라이언트-서버 환경에서의 애플리케이션의 동적 분할 방법 및 시스템
US7278143B2 (en) System and related methods for accessing management functionality through a command line utility
US20170220682A1 (en) Accelerating find in page queries within a web browser
US7653528B2 (en) Resource authoring incorporating ontology
US7814125B2 (en) Methods for facilitating application development
AU2006200694B2 (en) Method and system for creating, storing, managing and consuming culture specific data
US8060932B2 (en) Modular enterprise authorization solution
US9436482B2 (en) Input content to application via web browser
CN101073057B (zh) 提供命令行操作环境的方法和系统
US20020095522A1 (en) System and method for automatic provision of an application
EP1701255B1 (en) Authoring implementing application localization rules
CN101351771B (zh) 用于获取并应用交互式环境内对构造的约束的方法和系统
ZA200601470B (en) Method and system for creating, storing, managing and consuming culture specific data
US11556608B2 (en) Caching for single page web applications
JP5415918B2 (ja) インプットメソッドエディタ
US20230214277A1 (en) Systems and methods to improve software application performance
JP5640137B2 (ja) インプットメソッドエディタ
JP5745599B2 (ja) インプットメソッドエディタ
JP5640138B2 (ja) インプットメソッドエディタ

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

GR01 Patent grant
GR01 Patent grant