具体实施方式
所公开的体系结构提供用户个人偏好信息作为与对象有关的维度(也被称为元数据)。对象包括作为内在第一维度的对象值,以及作为固有第二维度的个性化信息。
在稳健的实现中,对象(例如.Net对象)可按分布式方式存储在云中。即,任何对象可被存储在网络(内联网或因特网)内所存储的对象的分布式互连目录中和/或从中被检索。存储在分布式目录中的对象可被持久存储在可通过web服务来访问的关系(例如SQL-结构化查询语言)数据库内。由于对象被存储“在云中”,因此附加个性化信息作为一个维度连同对象一起被存储,从而允许不仅仅是典型的“存储器中”的对象。
持久存储的对象上的元数据按照维度来描述。对象本身内所包含的内在数据被认为是第一维度,而附加数据和/或元数据包括附加维度。该体系结构提供添加、改变和/或修改网络内的对象、以及实时调用具有固有变化的应用的能力。
开发的成本被显著地降低,因为与原本需要实现相同功能结果相比,较不熟练的开发者也可在几分钟内设计、存储、检索、以及个性化对象。此外,开发的成本被最小化,因为***使用简单,并且出于规模、性能和可靠性提供任何企业和因特网能力。
考虑以下的顾客对象的示例——具有实际数据值为Fred的“名字”(FirstName)。第一用户可能想要顾客的名字Fred以特定的(或第一)颜色或第一字体显示在网页上,而第二用户可能想要该名字以不同的或第二颜色或第二字体来显示。在操作上,当第一用户请求Fred的“名字”对象时,网页将以第一颜色或第一字体来呈现名字Fred。当第二用户请求Fred的“名字”对象时,网页将以第二颜色或第二字体来呈现名字Fred。当相同网页被呈现时,将向第一和第二用户呈现对应的个性化颜色或字体。换言之,用户各自取回相同的对象值,但是根据定义他们各自对于该对象值的个人偏好的相关联的个性化信息。由此,所公开的体系结构现在允许利用网站处的个性化数据,而不是个性化网站页面或应用。
另外,由于偏好现在在对象级被关联,因此个性化信息与对象一起移动并且不归入网站。例如,考虑两个网站的用户界面(UI)的示例,其中每一站点使用相同的顾客数据,但每一网站设计布局不同,具有不同的颜色、字体等。使用所公开的体系结构,对象不是网站的一部分,而是与用户一起移动的第三个且分开的实体。由此,无论用户访问什么网站,都伴随有对象和个性化信息之间的关系形式的用户的个人偏好。因此,网站开发者不再需要确定如何为给定用户的偏好来对网站编码。
随着用户在站点间移动,在对象级存储用户偏好还为用户提供一致性。例如,如果用户对于特定对象值想要绿色字体,则该个性化信息也被携带到各站点。这对于用户体验也具有积极影响。
在又一实施例中,在对象级的个性化还可具有对非UI用户体验的积极影响。考虑在服务器上运行的代理进程,该代理不具有UI,而只是运行后台任务。使用给定用户的个性化信息,代理可在用户的上下文中运行,由此为该用户执行任务。当代理为该用户工作时,代理获取该用户想要的对象,随后处理用户的个性化信息以影响对该对象的处理,因为对象数据与该用户而不是不同的用户相关。
用户个性化可按多个方式来提供。在直接方法中,用户选择用户偏好。对象个性化可以如背景颜色、字体、字体大小等一样简单,或如RSS(真正简单聚合)频道、证券报价机等一样较为复杂。如果门户正使用个性化对象解决方案,则该门户可在用户注册过程期间请求这些偏好。
在另一方法中,可基于用户动作来捕捉偏好。随着时间推移,可在网站或网络站点上、并基于用户的历史数据和喜好/厌恶来捕捉用户动作。对象可以是自动个性化的,使得使用用户偏好(喜好)来呈现站点。
注意到所公开的解决方案不限于网站。任何应用可利用这一方法来个性化在该应用中所使用的对象。一般而言,该解决方案是关于个性化该对象、以及如何取决于应用的用例来个性化该对象。
现在将参考附图,全部附图中相同的附图标记用于表示相同的元件。在下面的描述中,为了进行说明,阐述了很多具体细节以便提供对本发明的全面理解。然而,显而易见,可以没有这些具体细节的情况下实施各新颖实施例。在其它情况下,以框图形式示出了公知的结构和设备以便于描述它们。本发明将涵盖落入所要求保护的主题的精神和范围内的所有修改、等效方案和替换方案。
图1示出根据所公开的体系结构的计算机实现的偏好***100。***100包括与实际数据104(第一固有对象维度)相关联(或具有实际数据104)的对象102、以及个性化信息106,该个性化信息被(内在地)链接到对象102使得与对象102相关联的请求返回个性化偏好信息106。个性化偏好信息106被应用于实际数据104。响应于对该对象102的请求来返回个性化偏好信息106,该请求由处理程序截取。根据个性化偏好信息106中所包含的显示信息来显示实际数据104。个性化偏好信息106与对象一起存储在分布式目录中。对象102和相关联的个性化偏好信息106可经由web服务访问。对象102经由网络环境来处理。该处理包括添加、改变、或修改等操作。可实时地在调用应用中反映该操作。当不存在与对象102相关联地定义的个性化偏好信息时,对象102与一组默认偏好一起被返回。
如前所述,该解决方案提供一种将用户偏好(个性化偏好信息106)与对象102相关联的方式。相关联可按例如存储个人数据的数据库表的方式。随后这一表可被相关回该对象数据。可附连任何信息,并且在大多数情况下,对于数据的“形状”(格式、类型等)该数据库是不可知的。偏好数据可以是UI设置,诸如字体、字体大小、或被添加以注释一部分对象数据的简单评论。一旦被添加到对象,数据库就以上述表的关联来存储数据。注意到该表只是与对象相关联地存储数据的多种方式中的一种。出于这样的目的,本领域技术人员可采用其他替换的且公知的技术。一旦被关联,检索对象102的任何过程还将接收相关联的个性化偏好信息106。
更具体地,在个性化维度(个性化偏好信息106)具有字体偏好的web示例中,超文本传输协议(HTTP)处理程序可截取HTTP请求、获取偏好数据、并生成包含字体类别的样式表(例如CSS-层叠样式表),该样式表是基于用户的偏好(个性化偏好信息106)来生成的。这里,web开发者不需要知道关于创建任何特定代码来个性化该页面的任何东西。只要web控制正使用样式表类别的相同名字,则动态生成的样式表将根据用户偏好来作出web控制格式。
考虑顾客类型还包含某些顾客特定细节的示例。在顾客的注册过程期间,经由个性化维度(诸如字体名、字体大小、背景颜色等)来请求用户的偏好信息。一旦顾客数据(实际数据104)被保存且偏好(个性化偏好信息106)被关联,则用户无论何时返回网站,用户都会按照对该顾客对象的偏好看到该站点。
下面是不采用相关联的个性化维度的字体偏好的常规实现的伪代码示例:
//读取顾客数据
Webservice.Read(customer);
//使用偏好来显示
someWebControl1.Font=customer.Preferences.FontName;
someWebControl1.FontSize=customer.Preferences.Fontsize;
someWebControl2.BackgroundImage=
customer.Preferences.BackGroundImage;
作为对比,下面是采用所公开的体系结构来返回字体偏好的示例伪代码解决方案:
//从HTTP处理程序取回顾客对象的实例
Customer.FirstName
注意到在以上伪代码解决方案中,不存在用于检索顾客对象的对任何中间层服务的调用也不存在设置web控制CSS的代码行。这全部是由HTTP处理程序执行的,该HTTP处理程序从请求中获取顾客标识符,从存储中检索顾客对象,并且随后将样式表写到响应对象。由于这一新颖的关联,偏好连同顾客对象一起被检索。不存在用于检索偏好的分开的调用,顾客类型也不包含对类型偏好的引用。
换言之,提供了偏好***,该偏好***具有与实际数据相关联的对象、以及内在地链接到该对象的个性化偏好信息,使得与该对象相关联的请求返回个性化偏好信息。个性化偏好信息被实时地应用于实际数据。响应于对该对象的请求来返回个性化偏好信息,该请求由HTTP处理程序截取。根据个性化偏好信息中所包含的显示信息来显示实际数据。个性化偏好信息与对象一起被存储在分布式目录中,对象和相关联的个性化偏好信息可经由web服务访问。对象是经由网络环境来处理的,该处理包括以下各操作中的至少一个:添加、改变或修改,各操作被实时地反映在调用应用中。当不存在与对象相关联地定义的个性化偏好时,对象与一组默认偏好一起被返回。
图2示出了根据所公开的体系结构的便于个性化偏好的偏好***200。***200包括具有浏览器204的客户机202,经由浏览器204来访问网站206的网页。浏览器将HTTP请求208发送给网站206。HTTP处理程序210截取HTTP请求208,获取个性化偏好信息106,并生成包含个性化偏好信息106的样式表212。随后将样式表212应用于由浏览器204呈现的网页以提供对象102的实际数据104的个性化呈现。对象102和相关联的个性化偏好信息106经由web服务216被持久存储在分布式数据存储214中。
此处所包括的是一组代表用于执行所公开的体系结构的新颖方面的示例性方法的流程图。尽管出于解释简明的目的,此处例如以流图或流程图形式示出的一个或多个方法被示出并描述为一系列动作,但是可以理解和明白,各方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其它动作同时发生。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。此外,并非在方法中示出的所有动作都是新颖实现所必需的。
图3示出了根据所公开的体系结构的计算机实现的偏好方法。在300,接收具有对象值的对象。在302,将个人偏好信息与对象相关联。在304,基于对该对象的请求将个人偏好信息应用于对象值。
图4示出了图3的方法的其他方面。注意,该流程指示每一个框表示可被单独地或与其他框组合地且作为图3的流程图所表示的方法的附加方面来包括的步骤。在400,使用HTTP处理程序来截取请求。在402,从请求中获取对象标识符。在404,从网络数据存储中检索对象。在406,将个人偏好信息的样式表写到响应对象。在408,使用个人偏好信息数据来创建样式表,并且根据在该样式表中定义的语义来呈现对象和对象值。在410,跨采用该对象的多个不同网站地应用个人偏好信息。
如在本申请中所使用的,术语“组件”和/或“***”旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于,诸如处理器、芯片存储器、大容量存储设备(例如,光驱、固态驱动器、和/或磁存储介质驱动器)、以及计算机等有形组件,以及诸如运行在处理器上的进程、对象、可执行码、(存储在易失性或非易失性存储介质上的)数据结构、模块、执行的线程和/或程序等软件组件。作为说明,在服务器上运行的应用程序和该服务器两者都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或更多的计算机之间。词语“示例性”此处可用于表示用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。
现在参考图5,示出了执行根据所公开的体系结构的个性化对象的计算***500的框图。为了提供用于其各方面的附加上下文,图5及以下讨论旨在提供对其中可实现各方面的合适的计算***500的简要概括描述。尽管以上描述是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行的,但是本领域的技术人员将认识到,新颖实施例也可结合其它程序模块和/或作为硬件和软件的组合来实现。
用于实现各方面的计算***500包括计算机502,其具有处理单元504、诸如***存储器506等的计算机可读存储、以及***总线508。处理单元504可以是各种市场上可买到的处理器中的任一种,诸如单处理器、多处理器、单核单元以及多核单元等。此外,本领域的技术人员将明白,各新颖方法可用其它计算机***配置来实施,包括小型计算机、大型计算机、以及个人计算机(例如、台式、膝上型等)、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可在操作上耦合到一个或多个相关联的设备。
***存储器506可包括计算机可读存储(物理存储介质),如易失性(VOL)存储器510(例如,随机存取存储器(RAM))和非易失性存储器(NON-VOL)512(如ROM、EPROM、EEPROM等)。基本输入/输出***(BIOS)可以被存储在非易失性存储器512中,并且包括诸如在启动期间便于在计算机502内的组件之间传递数据和信号的基本例程。易失性存储器510还可以包括诸如静态RAM等高速RAM来用于高速缓存数据。
***总线508提供了用于包括,但不限于***存储器506的***组件对处理单元504的接口。***总线508可以是若干种总线结构中的任一种,这些总线结构还可使用各类可购买到的总线体系结构中的任一种互连到存储器总线(带有或没有存储器控制器)以及***总线(例如,PCI,PCIe,AGP,LPC等)。
计算机502还包括用于机器可读存储子***514以及将存储子***514接口到***总线508和其他所需计算机组件的存储接口516。存储子***514(物理存储介质)可包括例如硬盘驱动器(HDD)、磁软盘驱动器(FDD)和/或光盘存储驱动器(例如,CD-ROM驱动器、DVD驱动器)中的一种或多种。存储接口516可以包括诸如,例如EIDE、ATA、SATA和IEEE1394等接口技术。
一个或多个程序和数据可被存储在存储器子***506、机器可读和可移动存储器子***518(例如,闪存驱动器形状因子技术)和/或存储子***514(例如,光、磁、固态)中,包括操作***520、一个或多个应用程序522、其他程序模块524以及程序数据526。
一个或多个应用程序522、其他程序模块524以及程序数据526可包括例如图1的***100的实体和组件、图2的***200的实体和组件以及图4和图5的流程图所表示的方法。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、方法、数据结构、其它软件组件等。操作***520、应用程序522、模块524和/或数据526的全部或部分也可以被高速缓存在诸如易失性存储器510等存储器中。应当明白,所公开的体系结构可以用各种市场上可购得的操作***或操作***的组合(例如,作为虚拟机)来实现。
存储子***514和存储器子***(506和518)用作用于数据、数据结构、计算机可执行指令等的易失性和非易失性存储的计算机可读介质。这些指令当由计算机或其他机器执行时,可使得计算机或其他机器执行方法的一个或多个动作。执行动作的指令可被存储在一个介质上,或者可跨多个介质存储,使得指令共同出现在一个或多个计算机可读存储介质上,而不管所有指令是否都在同一介质上。
计算机可读介质可以是可由计算机502访问的任何可用介质,且包括易失性和非易失性、可移动和不可移动的内部和/或外部介质。对于计算机502,介质容纳适当的数字格式的数据的存储。本领域的技术人员应当理解,可使用其他类型的计算机可读介质,如zip驱动器、磁带、闪存卡、闪存驱动器、磁带盒等来存储用于执行所公开的体系结构的新颖方法的计算机可执行指令。
用户可以使用诸如键盘和鼠标等外部用户输入设备528来与计算机502、程序和数据交互。其它外部用户输入设备528可以包括话筒、IR(红外)遥控器、操纵杆、游戏手柄、照相机识别***、指示笔、触摸屏、姿势***(例如,眼移动、头移动等)和/或类似物。在计算机502是例如便携式计算机的情况下,用户可以使用诸如触摸垫、话筒、键盘等板载用户输入设备530来与计算机502、程序和数据交互。这些和其他输入设备通过输入/输出(I/O)设备接口532经由***总线508连接到处理单元504,但也可通过其他接口连接,如并行端口、IEEE1394串行端口、游戏端口、USB端口、IR接口、近程无线(例如,蓝牙)以及其他个人区域网(PAN)技术等等。I/O设备接口532还便于使用输出***设备534,诸如打印机、音频设备、照相机设备等,诸如声卡和/或板载音频处理能力。
一个或多个图形接口536(通常也称为图形处理单元(GPU))提供计算机502和外部显示器538(例如,LCD、等离子)和/或板载显示器540(例如,对于便携式计算机)之间的图形和视频信号。图形接口536也可作为计算机***板的一部分来制造。
计算机502可以使用经由有线/无线通信子***542到一个或多个网络和/或其他计算机的逻辑连接在联网环境(例如,基于IP的)中操作。其他计算机可包括工作站、服务器、路由器、个人计算机、基于微处理器的娱乐设备、对等设备或其他常见的网络节点,并且通常包括以上相对于计算机502描述的许多或所有元件。逻辑连接可以包括到局域网(LAN)、广域网(WAN)、热点等的有线/无线连接。LAN和WAN联网环境常见于办公室和公司,并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到诸如因特网等全球通信网络。
当在联网环境中使用时,计算机502经由有线/无线通信子***542(例如,网络接口适配器、板载收发机子***等)连接到网络来与有线/无线网络、有线/无线打印机、有线/无线输入设备544等通信。计算机502可包括用于通过网络建立通信的调制解调器或其他装置。在联网环境中,相对于计算机502的程序和数据可以被存储在远程存储器/存储设备中,如与分布式***相关联。应当明白,所示网络连接是说明性的,并且可以使用在计算机之间建立通信链路的其它手段。
计算机502可以用于使用诸如IEEE802.xx标准家族等无线电技术来与有线/无线设备或实体通信,例如在操作上安置在与例如打印机、扫描仪、台式和/或便携式计算机、个人数字助理(PDA)、通信卫星、任何一件与无线可检测标签相关联的设备或位置(例如,电话亭、报亭、休息室)以及电话的无线通信(例如,IEEE802.11空中调制技术)中的无线设备。这至少包括用于热点的Wi-Fi(即无线保真)、WiMax和蓝牙TM无线技术。由此,通信可以是如对于常规网络那样的预定义结构,或者仅仅是至少两个设备之间的自组织(adhoc)通信。Wi-Fi网络使用称为IEEE802.11x(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可以用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE802.3相关介质和功能)。
所示和所描述的各方面可以在其中某些任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和/或远程存储器和/或存储设备中。
现在参考图6,示出了支持个性化对象的计算环境600的示意框图。环境600包括一个或多个客户机602。客户机602可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,客户机602可以容纳cookie和/或相关联的上下文信息。
环境600还包括一个或多个服务器604。服务器604也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器604可以例如通过使用本体系结构来容纳线程以执行变换。客户机602和服务器604之间的一种可能的通信可以是以适用于在两个或更多计算机进程之间传输的数据包的形式。例如,数据包可以包括cookie和/或相关联的上下文信息。环境600包括可以用来使客户机602和服务器604之间通信更容易的通信框架606(例如,诸如因特网等全球通信网络)。
通信可以经由有线(包括光纤)和/或无线技术来促进。客户机602可操作地连接到一个或多个客户机数据存储608,可以使用这些客户机数据存储来存储客户机602本地的信息(例如,cookie和/或相关联的上下文信息)。同样地,服务器604可以在操作上连接到可以用来存储服务器604本地的信息的一个或多个服务器数据存储610。
以上描述的包括所公开的体系结构的各示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域内的普通技术人员可以认识到,许多其它组合和排列都是可能的。因此,该新颖体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在详细描述或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡词时所解释的相似的方式为包含性的。