Web应用之间的通信的制作方法

文档序号:7553136阅读:195来源:国知局
专利名称:Web应用之间的通信的制作方法
技术领域
本发明涉及在设备上执行的web应用之间的通信。
背景技术
web应用可以通过因特网下载到设备,然后在实现在设备的设备平台上的web浏览器实例中执行。该设备可以例如是PC、膝上型计算机、移动电话或能够连接到因特网的任何其他适当的设备。使用基于Web的技术(例如根据HTML 5标准)在设备处执行web应用。web浏览器实例可以指用户可以与之交互的web浏览器的任何单独的接口,比如web浏览器的窗口、标签或框架,或者指来自不同的厂商的不同的web浏览器的实例,比如Microsoft的IE浏览器和Mozilla的火狐浏览器。服务提供商可以通过提供用于在设备上执行的服务提供商客户端应用来向设备的用户提供服务。服务提供商客户端应用包括在设备处的web浏览器实例中执行的web组件(例如web应用),其同时作为纯web组件(例如实现为从web服务器动态下载的CSS制品(artefact)、HTML和Javascript),并且包括在设备处以浏览器插件和扩充服务提供商客户端应用的纯web组件的其他安装软件的形式部署的安装(本地)组件。类似地,来自另一个实体的伙伴web应用可以被提供用于在相同设备的web浏览器实例中执行,其中伙伴web应用可以包括具有或不具有本地增强的web组件。提供伙伴web应用的所述另一个实体可以是服务提供商的伙伴并且可以得到服务提供商的信任,在此情况下可能有用的是服务提供商web应用能够与设备上的伙伴web应用通信。然而,在其他情形下,提供伙伴web应用的所述另一个实体可能没有得到服务提供商的信任,在此情况下可能有用的是,阻止服务提供商web应用与设备上的伙伴web应用之间的通信。“混聚(mash-up)”发生在服务提供商web组件和伙伴web组件在设备处交换信令时,从而在服务提供商web应用与伙伴web应用之间传递一些有用的数据。混聚可以是特别有益的,因为它们为设备的用户提供在服务提供商web应用和伙伴web应用被单独执行的情况下可能在它们中缺少的信息的组合。混聚本身特定的益处表现在web应用以创造性方式被组合时。为了实现混聚(并且由此实现与之相关联的益处),跨提供商的信号传输(cross-provider signal ling)是必要的设施,其实现了在设备上同时执行的web应用之间的通信。因此,有益地是,能够允许服务提供商web应用进行与伙伴web应用的安全客户端侧(即在设备处实现的)信号传输。

发明内容
根据本发明的第一方面,提供一种控制在服务提供商web应用与伙伴web应用之间的通信的方法,其中所述服务提供商web应用在设备的设备平台上实现的第一 web浏览器实例中执行,所述伙伴web应用在该设备的设备平台上实现的第二 web浏览器实例中执行,该方法包括:在设备处实现的控制模块处接收来自伙伴web应用的用于发起伙伴web应用与服务提供商web应用之间的通信的信号,所述控制模块由服务提供商提供且安装在设备上并且使用源于(native to)设备平台的技术实现;使用服务提供商批准的伙伴的列表,该控制模块确定伙伴web应用是否被批准用于与服务提供商web应用通信;以及在控制模块确定了伙伴web应用被批准用于与服务提供商web应用通信的情况下,控制模块允许在伙伴web应用与服务提供商web应用之间进行通信。有利地,在允许伙伴web应用与服务提供商web应用之间进行通信之前,控制模块确定伙伴web应用是否被批准用于与服务提供商web应用通信。以此方式,在优选实施例中,控制模块确保了受管理的环境,其中仅允许期望的伙伴web应用与服务提供商web应用通信。任何其他web应用(除了服务提供商批准的伙伴列表上的那些之外)可被阻止参加与服务提供商web应用的通信。优选实施例在服务提供商web应用与服务提供商的伙伴的web应用之间提供了通信(或“信号传输”)设施,其具有比现有技术更少的限制。该方法可以进一步包括:在控制模块确定了伙伴web应用未被批准用于与服务提供商web应用通信的情况下,控制模块阻止伙伴web应用与服务提供商web应用之间的通
信优选地,针对第一和第二 web浏览器实例中的每个,实现相应的浏览器插件,其中每个浏览器插件被实现用于在相应的web浏览器实例与控制模块之间通信。优选地,服务提供商web应用和伙伴web应用实现了相应的应用编程接口以用于经由控制模块相互进行通信。应用编程接口可以从服务提供商的服务器下载。服务提供商批准的伙伴列表可以存储在服务提供商的服务器处,并且使用服务提供商批准的伙伴列表的步骤可以包括:控制模块通过网络与服务提供商的服务器通信以访问服务提供商批准的伙伴列表。可替代地或此外,服务提供商批准的伙伴列表可以从服务提供商的服务器下载并且存储在设备的存储器中,并且使用服务提供商批准的伙伴列表的步骤可以包括:控制模块从设备的存储器访问服务提供商批准的伙伴列表。在优选实施例中,服务提供商web应用与伙伴web应用之间的通信使用发布-订阅信号传输方案进行。在控制模块处从伙伴web应用接收的信号可以是发布-订阅信号传输方案的订阅请求或发布请求。第一和第二 web浏览器实例可以利用来自不同厂商的web浏览器实现。而且,第一和第二 web浏览器实例可以不具有父子关系。所述确定伙伴web应用是否被批准用于与服务提供商web应用通信可以包括:将与伙伴web应用相关联的域与服务提供商批准的伙伴列表的条目进行比较。服务提供商可以是因特网通信服务提供商,并且该方法可以进一步包括:伙伴web应用使用伙伴web应用与服务提供商web应用之间的通信通过互联网通信。根据本发明的第二方面,提供一种用于控制在服务提供商web应用与伙伴web应用之间的通信的计算机程序产品,其中所述服务提供商web应用在设备的设备平台上实现的第一 web浏览器实例中执行,所述伙伴web应用在该设备的所述设备平台上实现的第二web浏览器实例中执行。该计算机程序产品体现在非暂时性计算机可读介质上并且被配置成当在设备的处理器上被执行时在设备处实现控制模块以用于执行下述操作:接收来自伙伴web应用的用于发起伙伴web应用与服务提供商web应用之间的通信的信号,所述控制模块由服务提供商提供且安装在设备上并且使用源于设备平台的技术实现;使用服务提供商批准的伙伴列表来确定伙伴web应用是否被批准用于与服务提供商web应用通信;以及在控制模块确定了伙伴web应用被批准用于与服务提供商web应用通信的情况下,允许在伙伴web应用与服务提供商web应用之间进行通信。根据本发明的第三方面,提供一种被配置成控制在服务提供商web应用与伙伴web应用之间的通信的设备,其中所述服务提供商web应用在设备的设备平台上实现的第
一web浏览器实例中执行,所述伙伴web应用在该设备的所述设备平台上实现的第二 web浏览器实例中执行,该设备被配置成实现控制模块以便:接收来自伙伴web应用的用于发起伙伴web应用与服务提供商web应用之间的通信的信号,所述控制模块由服务提供商提供且安装在设备上并且使用源于设备平台的技术实现;使用服务提供商批准的伙伴列表来确定伙伴web应用是否被批准用于与服务提供商web应用通信;以及在控制模块确定了伙伴web应用被批准用于与服务提供商web应用通信的情况下,允许在伙伴web应用与服务提供商web应用之间进行通信。该设备可以进一步被配置成实现控制模块以便在控制模块确定了伙伴web应用未被批准用于与服务提供商web应用通信的情况下阻止伙伴web应用与服务提供商web应用之间的通信。该设备可以进一步被配置成实现用于第一和第二 web浏览器实例中的每一个的相应浏览器插件,其中每个浏览器插件可以被配置成在相应的web浏览器实例与控制模块之间通{目O 该设备可以进一步被配置成在服务提供商web应用和伙伴web应用中实现相应的应用编程接口以用于经由控制模块在服务提供商web应用与伙伴web应用之间的通信。该设备可以进一步包括被配置成存储由服务提供商批准的伙伴列表的存储器,其中该设备可以进一步被配置成从服务提供商的服务器下载由服务提供商批准的伙伴列表并且将所述列表存储在设备的存储器中。根据本发明的第四方面,提供一种系统,包括:一种设备,其被配置成执行在设备的设备平台上实现的第一 web浏览器实例中的服务提供商web应用,以及执行在该设备的所述设备平台上实现的第二 web浏览器实例中的伙伴web应用;以及服务提供商的服务器,其包括用于存储服务提供商批准的伙伴列表的存储器,其中该设备被配置成实现控制模块以便:接收来自伙伴web应用的用于发起伙伴web应用与服务提供商web应用之间的通信的信号,所述控制模块由服务提供商提供且安装在设备上并且使用源于设备平台的技术实现;通过经由网络与服务提供商的服务器通信来访问服务提供商批准的伙伴列表,从而确定伙伴web应用是否被批准用于与服务提供商web应用通信;以及在控制模块确定了伙伴web应用被批准用于与服务提供商web应用通信的情况下,允许在伙伴web应用与服务提供商web应用之间进行通信。服务提供商web应用和控制模块可以是从服务提供商的服务器下载到设备的混合型服务提供商客户端应用的部分。


为了更好地理解本发明并且示出本发明可以如何付诸实施,现在将通过举例参考附图,在附图中: 图1示出根据一个优选实施例的通信系统;
图2示出根据一个优选实施例的设备和服务提供商服务器的示意图;以及图3是根据一个实施例的控制服务提供商web应用与伙伴web应用之间的通信的过程的流程图。
具体实施例方式在一些现有技术的系统中,允许web应用相互通信的web混聚聚焦于纯web解决方案,其不被在设备处使用源于设备的设备平台的技术实现的任何安装组件支持,例如C++。这样的现有技术的系统的一个示例是Open Ajax Alliance设计的Open Ajax Hub。尽管web浏览器由于安全原因一般排除来源于不同因特网域的web应用之间的交互(SP,“跨域交互”),但是Open Ajax Hub系统实现了来源于不同因特网域的web应用之间的受控信号传输。为了实现这一点,Open Ajax Hub采用所谓的URL-片段消息传递来促进数据跨域传递。Open Ajax Hub系统依赖于web浏览器实例之间的某些关系,其中所述web浏览器实例托管跨域web应用以便跨域web应用能够相互通信:
(i)web浏览器实例必须来自相同的web浏览器类型(例如相同的厂商),比如Microsoft的IE浏览器或Mozilla的火狐浏览器;
(ii)web浏览器实例(例如框架)必须具有父子关系,该关系通过下述任一个体现:(a)一个web浏览器实例例如使用iFrame标签而被嵌入另一个web浏览器实例中,或者(b) —个web浏览器实例是由父web浏览器实例产生的弹出式子窗口。因此,在Open Ajax Hub系统中,可以对web实例加以限制,其可以被使用以便成功实现web混聚。现在仅通过举例来描述本发明的优选实施例,其移除了对Open Ajax Hub系统的限制,同时保持web应用之间的通信的安全性,即同时管理哪些web应用(例如来源于哪些域)可以相互通信。图1示出根据一个优选实施例的设备102在其中操作的系统100。设备102能够通过系统100的网络112通信。设备102与用户104相关联并且包括用于在设备102上处理数据的处理器(CPU) 106和用于在设备102上存储数据的存储器108。设备102可以是固定的或移动的设备。设备102可以是例如移动电话、个人数字助理(“PDA”)、个人计算机(“PC”)(包括例如Windows 、Mac OS 和Linux PC)、膝上型计算机、电视、游戏设备或能够连接到网络112的其他嵌入式设备。设备102被布置成从用户104接收信息以及向用户104输出信息。例如,设备102包括用于将视觉数据输出给用户104的显示器110。显示器110可以包括允许用户104经由显示器110将数据输入到CPU 106的触敏屏幕。设备102可以包括向用户104提供用户接口的另外的组件,其未在图1中示出。例如,设备102可以包括用于接收音频信号的麦克风;用于输出音频信号的音频输出装置210 ;和/或用于从用户104接收输入的键盘、键区、操纵杆或鼠标。设备102实现了可以在其上执行应用的设备平台。例如,该设备平台可以被调适以适合于移动设备或适合于固定设备。该设备平台描述了在设备102处实现应用的环境,并且可以包括:(i)在设备102上实现的操作系统,和/或(ii)特定类型的设备,例如具有小屏幕的移动设备或具有大屏幕的固定设备。
在本文描述的优选实施例中,网络112是因特网。如图1所示,系统100包括网络112上的四个服务器:由服务提供商操作的服务器SP 114、服务器X 116、服务器Y 118和服务器Z 120。系统100被布置成使得设备102可以通过网络112与服务器114、116、118和120通信,从而可以在设备102与服务器114、116、118和120之间传输数据。作为示例,服务提供商服务器114具有web地址(即域名)“sp.com”,服务器116具有web地址(即域名)“χ.com,,,服务器118具有web地址(即域名)“y.com,,,以及服务器120具有web地址(即域名)“z.com”。在本文所述的优选实施例中,服务提供商服务器114可以提供用于安装在设备102上的服务提供商客户端应用,其包括在本文中被称为服务提供商web应用的web组件,而服务器116、118和120是允许设备102下载用于在设备102处的web浏览器实例中执行的web应用的web服务器。例如,web应用可以是通过网络112下载的用于在设备102的显示器110上显示的web页面。服务提供商客户端应用是从服务提供商服务器114(在“sp.com”处)被下载到设备102的。本文描述的优选实施例涉及控制在设备102处执行的服务提供商web应用与其他web应用之间的通信。图2是根据一个优选实施例的设备102和服务提供商服务器222的示意图。服务提供商服务器222可以是与服务提供商客户端应用从中被下载到设备102的服务提供商服务器114相同的服务器。然而,服务提供商可以具有多于一个的服务器,并且服务器222可以是不同于服务器114的服务器,尽管在此情况下服务器222和114两者都由服务提供商操作。服务提供商可以向设备102的用户104提供任何适当的服务。例如,服务提供商可以向设备102的用户104提供因特网通信服务(比如Skype ),从而允许用户104通过因特网112参加与Skype 系统的其他用户的通信。如图2所示,第一 web浏览器实例202和第二 web浏览器实例210在设备102的设备平台上实现。如上文所描述,web浏览器实例202和210可以是用户可以与之交互的web浏览器的单独的接口,比如web浏览器的窗口、标签或框架,或者web浏览器实例202和210可以是来自不同厂商的不同web浏览器的实例,比如Microsoft的IE浏览器和Mozilla的火狐浏览器。服务提供商web应用204 (其是服务提供商客户端应用的部分)在第一 web浏览器实例202中执行。服务提供商web应用204包括小部件(widget)206,其为Javascript应用编程接口(API)。小部件206允许服务提供商web应用204使用发布-订阅信号传输方案通信。发布-订阅浏览器插件208在第一 web浏览器实例202中实现,如下文更详细地描述的。由服务提供商的伙伴提供的web应用212在第二 web浏览器实例210中执行。伙伴web应用212包括小部件214,其为Javascript应用编程接口(API )。小部件214允许伙伴web应用212使用发布-订阅信号传输方案通信。发布-订阅浏览器插件216在第
二web浏览器实例210中实现,如下文更详细地描述的。在本文中被称为发布-订阅守护进程(daemon)应用的控制模块218在设备102处实现。发布-订阅守护进程应用218是从服务提供商服务器114下载的服务提供商客户端应用的部分。发布-订阅守护进程应用218包括存储器220,例如高速缓冲存储器。高速缓冲存储器220可以是或可以不是设备102的主存储器108的一部分。驻留在网络112上的服务器222由服务提供商托管并且包括用于存储数据库224的存储器。数据库224包括受到服务提供商信任且由服务提供商维护并保持最新的域的列表。如果服务提供商的伙伴的域受到服务提供商的信任,则允许在设备102处在服务提供商web应用204与伙伴web应用212之间进行通信(即允许发生客户端侧的信号传输)。月艮务提供商的受信的伙伴的指示作为访问控制列表(ACL)被存储在数据库224中,该列表限定了哪些伙伴被允许在设备102处与服务提供商web应用混聚。如图2所示,发布-订阅守护进程应用218和发布-订阅浏览器插件208和216使用本地(native)技术实现,所述技术即源于设备102的设备平台的技术(例如C++)。发布-订阅守护进程应用218是服务提供商客户端应用的本地部分并且总是在服务提供商客户端应用已被下载到设备102且在其中实现时在设备102处后台运行。相反,web浏览器实例202和210、web应用204和212、小部件206和214以及服务提供商服务器222使用基于web的技术(例如根据HTML 5标准)实现。可以在发布-订阅守护进程应用218与发布-订阅浏览器插件208之间以及在发布-订阅守护进程应用218与发布-订阅浏览器插件216之间使用发布-订阅信号传输方案传输信号。这可以通过在发布-订阅守护进程应用218与发布-订阅浏览器插件208之间以及在发布-订阅守护进程应用218与发布-订阅浏览器插件216之间建立相应的传输控制协议(TCP)连接来实现。发布-订阅浏览器插件208和216在相应的web应用204和212与发布-订阅守护进程应用218之间提供了桥梁。发布-订阅守护进程应用218也被布置成通过因特网112与服务提供商服务器222通信。优选实施例在服务提供商web应用204与单独的伙伴web应用212之间提供了安全的客户端侧信号传输设施。发布-订阅模型被用来制定(frame) web应用之间的信号传输。发布-订阅信号传输对本领域技术人员而言是已知的。在发布-订阅信号传输方案中,web应用可以使用由发布-订阅服务提供给它们的下述两个操作来相互通信:
(i)发布操作,其具有两个参数:信道名称和数据有效载荷;以及 ( )订阅操作,其具有两个参数:信道名称和通知功能。
`
当发布者调用发布操作时,发布-订阅服务通过调用指示的信道的所有订阅者的通知功能向指示的信道的所有订阅者广播相关联的数据有效载荷,还存在取消订阅操作,其与订阅操作是互补的。给定简单且一般的设施(如发布-订阅信号传输方案),人们可以在它之上构建任意的信号传输。下面提供了示出API的细节的一些Javascrip代码的示例和发布-订阅信号传输方案的不例使用:
权利要求
1.一种控制在服务提供商Web应用(204)和伙伴web应用(212)之间的通信的方法,其中所述服务提供商web应用(204)在设备(102)的设备平台上实现的第一 web浏览器实例(202)中执行,所述伙伴web应用(212)在该设备(102)的设备平台上实现的第二 web浏览器实例(210)中执行,该方法包括: 在设备(102)处实现的控制模块(218)处接收来自伙伴web应用(212)的用于发起伙伴web应用与服务提供商web应用(204)之间的通信的信号,所述控制模块由服务提供商提供且安装在设备(102)上并且使用源于设备平台的技术实现; 使用服务提供商批准的伙伴列表,控制模块(218)确定伙伴web应用(212)是否被批准用于与服务提供商web应用(204)通信;以及 在控制模块(218)确定了伙伴web应用(212)被批准用于与服务提供商web应用(204)通信的情况下,控制模块允许在伙伴web应用与服务提供商web应用之间进行通信。
2.—种被配置成控制在服务提供商web应用(204)与伙伴web应用(212)之间的通信的设备(102),其中所述服务提供商web应用(204)在设备的设备平台上实现的第一 web浏览器实例(202)中执行,所述伙伴web应用(212)在该设备的设备平台上实现的第二 web浏览器实例(210)中执行,该设备被配置成实现控制模块(218)以便: 接收来自伙伴web应用(212)的用于发起伙伴web应用与服务提供商web应用(204)之间的通信的信号,所述控制模块(218)由服务提供商提供且安装在设备(102)上并且使用源于设备平台的技术实现; 使用服务提供商批准的伙伴的列表来确定伙伴web应用(212)是否被批准用于与服务提供商web应用(204)通信;以及 在控制模块(218)确 定了伙伴web应用被批准用于与服务提供商web应用通信的情况下,允许在伙伴web应用(212)与服务提供商web应用(204)之间进行通信。
3.权利要求1的方法或权利要求2的设备(102),进一步包括:在控制模块(218)确定了伙伴web应用(212)未被批准用于与服务提供商web应用(204)通信的情况下,控制模块阻止伙伴web应用与服务提供商web应用之间的通信。
4.权利要求1的方法或权利要求2的设备(102),其中针对第一和第二web浏览器实例(202,210)实现相应的浏览器插件(208,216),其中每个浏览器插件被实现用于在相应的web浏览器实例与控制模块(218)之间通信。
5.权利要求1的方法或权利要求2的设备(102),其中服务提供商web应用(204)和伙伴web应用(212)实现了相应的应用编程接口(206,214)以用于经由控制模块(218)相互进行通信,并且可选地其中应用编程接口从服务提供商的服务器(222)下载。
6.权利要求1的方法或权利要求2的设备(102),其中服务提供商批准的伙伴列表存储在服务提供商的服务器(222)处,并且其中使用服务提供商批准的伙伴列表的步骤包括:控制模块(218)通过网络(112)与服务提供商的服务器通信以访问服务提供商批准的伙伴列表,或者, 服务提供商批准的伙伴列表从服务提供商的服务器(222 )下载并且被存储在设备的存储器(108)中,并且其中使用服务提供商批准的伙伴列表的步骤包括:控制模块(218)从设备的存储器访问服务提供商批准的伙伴列表。
7.权利要求1的方法,其中服务提供商web应用(204)与伙伴web应用(212)之间的通信使用发布-订阅信号传输方案进行,并且其中在控制模块(218)处从伙伴web应用接收的信号是发布-订阅信号传输方案的订阅请求和发布-订阅信号传输方案的发布请求之O
8.一种系统(100),包括: 设备(102),其被配置成在设备的设备平台上实现的第一 web浏览器实例(202)中执行服务提供商web应用(204),以及在该设备的设备平台上实现的第二 web浏览器实例(210)中执行伙伴web应用(212);以及 服务提供商的服务器(222),其包括用于存储服务提供商批准的伙伴列表的存储器(224), 其中该设备被配置成实现控制模块(218)以便: 接收来自伙伴web应 用(212)的用于发起伙伴web应用与服务提供商web应用(204)之间的通信的信号,所述控制模块由服务提供商提供且安装在设备上并且使用源于设备平台的技术实现; 通过经由网络(112)与服务提供商的服务器(222)通信来访问服务提供商批准的伙伴列表,从而确定伙伴web应用(212)是否被批准用于与服务提供商web应用(204)通信;以及 在控制模块(218)确定了伙伴web应用被批准用于与服务提供商web应用通信的情况下,允许在伙伴web应用(212)与服务提供商web应用(204)之间进行通信。
9.权利要求1的方法或权利要求8的系统(100),其中服务提供商web应用(204)和控制模块(218)是从服务提供商的服务器(222)下载到设备(102)的混合型服务提供商客户端应用的部分。
10.一种用于控制在服务提供商web应用(204)与伙伴web应用(212)之间的通信的计算机程序产品,其中所述服务提供商web应用(204)在设备(102)的设备平台上实现的第一 web浏览器实例(202)中执行,所述伙伴web应用(212)在该设备的所述设备平台上实现的第二 web浏览器实例(210)中执行,该计算机程序产品体现在非暂时性计算机可读介质上并且被配置成当在设备的处理器(106)上被执行时在设备处实现控制模块以便执行下述操作: 接收来自伙伴web应用(212)的用于发起伙伴web应用与服务提供商web应用(204)之间的通信的信号,所述控制模块(218)由服务提供商提供且安装在设备(102)上并且使用源于设备平台的技术实现; 使用服务提供商批准的伙伴列表来确定伙伴web应用(212)是否被批准用于与服务提供商web应用(204)通信;以及 在控制模块(218)确定了伙伴web应用(212)被批准用于与服务提供商web应用(204)通信的情况下,允许在伙伴web应用与服务提供商web应用之间进行通信。
全文摘要
用于控制在服务提供商web应用和伙伴web应用之间的通信的方法、计算机程序产品、设备和系统,其中所述服务提供商web应用在设备的设备平台上实现的第一web浏览器实例中执行,所述伙伴web应用在该设备的设备平台上实现的第二web浏览器实例中执行。在设备处实现的控制模块处接收来自伙伴web应用的信号,该信号用于发起伙伴web应用与服务提供商web应用之间的通信。所述控制模块由服务提供商提供且安装在设备上并且使用源于设备平台的技术实现。服务提供商批准的伙伴的列表被控制模块用来确定伙伴web应用是否被批准用于与服务提供商web应用通信。如果控制模块确定了伙伴web应用被批准用于与服务提供商web应用通信,则控制模块允许在伙伴web应用与服务提供商web应用之间进行通信。
文档编号H04L29/08GK103167031SQ20131007261
公开日2013年6月19日 申请日期2013年3月7日 优先权日2012年3月7日
发明者J.科里基, A.罕纳 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1