专利名称:一种界面发布方法和装置的制作方法
技术领域:
本发明涉及计算机领域,尤其涉及一种界面发布方法和装置。
背景技术:
随着计算机和网络技术的飞速发展,各种计算机应用工具已经成为人们 日常生活和工作中不可或缺的帮手。人们对各种应用工具的性能和界面的美 观也提出了越来越高的要求。
人们在安装和使用计算机应用工具时,例如即时通信工具(Instant Messenger, IM)等,赏心悦目的客户端界面能够给客户端良好的使用体验, 同时,界面的创建速度也直接影响着人们的使用感受。
目前,计算机应用工具在发布时,主要将描述其客户端界面的界面描述 文件提供给客户端。为了灵活地描述界面,通常采用一些脚本语言来描述界 面,例如可扩展标记语言(Extensible Markup Language, XML)脚本等,界 面的各种属性信息都编写在脚本文件中,脚本文件中通常采用统一的形式描 述各种类型的数据,如采用字符串的形式来描述整型、浮点型的数据,界面 的各种属性,包括各种界面组件、以及各界面组件的属性(名称、长、宽、 位置、颜色等)也均用字符串来描述。客户端在创建界面时需要从脚本语言 描述的界面描述文件中解析出各个界面组件的数据,由于界面数据的类型 多、数量大,界面创建过程比较复杂,使得界面的整体创建速度较慢,并且 对客户端的设备性能要求较高。
发明内容
有鉴于此,本发明实施例提供了一种界面发布方法,包括
获取至少 一个界面组件的属性信息,将所述属性信息转化为所述属性对应类型的数据提供给至少 一个客户端以供客户端生成所述界面。
本发明实施例还提供了一种界面发布装置,包括 属性获取模块,用于获取一个界面的至少一个属性信息; 数据转化模块,用于将所述属性获取模块获取的所述属性信息转化为所
述属性对应类型的数据;和
客户端接口模块,用于将所述数据转化模块转化得到的数据提供给至少
一个客户端。
由上述的技术方案可见,本发明实施例提供的一种界面发布方法通过将 界面数据以相应的数据类型进行保存,客户端无需再对界面描述文件中的信 息进行数据类型的转化,加快了界面的创建速度。本发明实施例提供的一种界面发布装置通过将界面数据以相应的数据 类型进行保存,客户端无需再对界面描述文件中的信息进行数据类型的转 化,加快了界面的创建速度。
图1示出本发明实施例的界面发布装置结构示意图。 图2为本发明实施例中界面发布方法的流程图。
具体实施例方式
为l吏本发明的实施例的目的、技术方案及优点更加清楚明白,以下参照 附图并举实施例,对本发明实施例进一步详细说明。
各种计算机应用工具,尤其是发展迅速的即时通信工具(IM)已经成 为网民客户端中日常生活中不可缺少的工具之一,由于客户端越来越注重个 性的表达,对于界面的要求也越来越高,希望能够获得各种类型丰富的界面 资源,界面的设计和发布工作以及界面的性能越来越得到重视。
因此,本发明实施例提供了一种界面发布方法,将界面描述文件中的各 属性信息转化为该属性对应类型的数据后再提供给客户端,客户端的客户端装置可以直接读取这些数据来创建界面,使得界面的创建速度大大提高。
将界面描述文件转化为界面数据时,需要获取界面描述文件中包含的各 属性信息,将这些属性信息转化为其这些属性对应类型的数据。
这里的界面属性信息包括各种界面组件信息及组件的属性信息,界面组 件信息为组件的类型或名称,例如窗体、文本、按钮、图片等,组件的属性 包括组件的大小、形状、位置、颜色等。在转化和保存界面组件的数据时, 可以将各界面组件按树形结构组织成树的结构,例如将窗体作为树根节点, 其它界面组件作为根节点的子节点,如果界面组件中还包含其他组件,则以 这些组件作为该界面组件的子节点,各组件的属性数据保存在相应的节点数 据中。这样可以使得整个界面的结构更加清晰、有组织。客户端获取界面的 属性信息时,则可以根据各种现有的树遍历算法依次获取所述界面树各个节 点以获取节点数据,例如深度优先遍历算法、广度优先遍历算法等,这里不 再赘述。如果界面描述文件中已经按照树形结构对各界面组件进行描述,在 数据转化和保存时,就可以直接根据界面描述文件中各界面组件的关系将其 数据组织成树形结构。
将各属性信息转化为相应类型的数据后,可以通过一个事先定义的数据
接口将数据提供给客户端。只要客户端也支持相同的数据接口,就可以通过 这个数据接口读取各种组件的属性数据用于创建界面了 。使用这种数据接口 可以将界面数据有序地组织起来,便于读取。
这里需要说明的是,由于界面描述文件中,对界面各属性信息的描述通 常都采用一种统一的形式来描述,例如都采用字符串型的数据来描述,但是 各界面组件的属性则对应各种类型,例如,组件的长和宽应该对应整型的数
据、组件的颜色对应RGB颜色型(COLOREF)数据,创建界面时,必须将 用字符串描述的各种大小、颜色、位置等属性信息转化为这些属性对应类型 的数据才能使用。
本发明的实施例还提供了一种界面发布装置,可以将界面描述文件转化 为界面数据提供给客户端。图1为本发明实施例的界面发布装置结构示意图。如图1所示,该装置
包括属性获取模块、数据转化模块和用户接口模块。其中属性获取模块用 于获取至少一个界面组件的属性信息;数据转化模块用于将所述属性获取模 块获取的所述属性信息转化为所述属性对应的类型的数据;用户接口模块, 用于将所述数据转化模块转化得到的数据提供给客户端。
数据转化模块的组成如图l所示,包括类型识别单元和多个类型转换单 元,其中,每个类型转换单元对应一种简单类型的数据,例如整型、颜色型、 布尔型(BOOL)、区域型(RECT)等。类型识別单元用于识别所述属性 获取模块获取的属性信息对应的数据类型,并将所述属性信息发送到该数据 类型对应的类型转换单元,再将各类型转换单元转换成的数据输出到用户接 口模块;类型转换单元,用于将所述类型识别单元发送的所述属性信息转化 为本类型转换单元对应的类型的数据,返回给类型识别单元。
本发明另 一实施例的界面发布装置中,用户接口模块将数据转化模块转 化得到的数据通过数据接口提供给所述至少一个客户端。通过定义和使用统 一的数据接口 ,使客户端可以更加方便快捷地获取创建界面所需的各界面组 件的属性数据。
下面举一个具体的例子来对本发明实施例进行说明。
图2为本发明实施例中界面发布方法的流程图。下面结合图2对本实施 例的界面发布方法进行说明。
201,.定义类型表。为了将界面描述文件中描述的各界面组件及其属性 识别并转化为各自对应的类型的数据,需要确定界面描述文件中对属性类型 的描述对应于哪种属性类型。
数据转换模块首先需要定义一个数据类型表,从而建立界面描述文件中 对数据类型的描述与该数据的类型的对应关系。
数据类型可以分为简单的数据类型与复杂的数据类型。筒单的数据类型 主要有整型(INT),布尔型(BOOL),无符号整型(DWORD) , RGB 颜色型(COLOREF ),大小型(SIZE ),区域型(RECT ),数组型(ARRAY)等等。复杂的数据类型主要有枚举型(Enum),复杂数组型(ComplexArray), 结构型(Stract),接口型(Interface),控件型等。凄t据类型表的每一项对应一 种具体的数据类型,每一项的标签说明了该类型所属的大类,例如下面例子 中的simpleType、 Interface 。
简单数据类型的每一项至少包括两个字段, 一个表示界面描述文件中使 用的类型描述,另一个表示该属性对应的类型名称。
如下面的简单类型定义的例子中,id就是界面描述文件中使用的类型名 称,mdtype是用于客户端读取的该属性对应的数据类型名称。simpleType 表示这些筒单类型所属的大类。 <XtmlDescription〉
<simpleType id="BSTR" mdtype="BSTR7>
<simpleType id="value" mdtype="value"/〉
<simpleType id="int" mdtype="int"/〉
<simpleType id="INT" mdtype="int"/>
<simpleType id="BOOL" mdtype="bool7〉
<simpleType id="bool" mdtype="bool7>
<simpleType id="COLORREF" mdtype="COLORREF7>
<simpleType id="LONG" mdtype="long"/>
<simpleType id="UINT" mdtype="DW0RD7>
〈simpleType id="double" mdtype="double'V>
〈simpleType id="DOUBLE" mdtype="double'V>
<simpleType id="RECT" mdtype="RECT7〉
<simpleType id="POINT" mdtype="P0INT7>
<simpleType id="SIZE" mdtype="SIZE7>
<simpleType id="ITXArray" mdtype="ITXArray"/〉
<simpleType id="ITXData" mdtype="ITXData'V>
<simpleType id="BYTE" mdtype="BYTE"/〉
<simpleType id="DWORD" mdtype="DW0RD7〉 </XtmlDescription>复杂数据类型的每项一般包括多个子项,各个子项可以是标识名称、数 据类型等。每一类界面组件,例如窗口、按钮、图片等,都对应一种复杂数 据类型,每类界面组件包括至少一个属性,例如组件名称、类型、大小、位 置、颜色等,每个子项可以是简单数据类型,也可以是复杂数据类型。由于 同一种类型的界面组件具有的属性基本相同,因此可以在界面组件类型的定 义中定义该类型的界面组件的各个属性的类型,也就是建立复杂类型的属性 与其子属性之间的关联关系。下面的例子中定义的IGFFont是一个具体的属性类型字体类型,属于 复杂数据类型。<XtmlDescription〉<array id="configprop" itemname="prop"〉<field value="field" type="BSTR" /><field value="value" type="value" /〉 </array〉〈interface id="208308FE-CD22-4420-BF71-80396E326181"label="Font" id="IGFFont"〉<prop field="height" type="int" /〉 <prop field="width" type="int" /> <prop field= "orientation" type="int" /〉 <prop field="weight" type="int" /〉 <prop field="italic" type="BOOL" /〉 <prop field="underline" type="BOOL" /〉 <prop field="charSet" type="BYTE" /> <prop field="facename" type="BSTR" /> </interface> <XtmlDescription>其中的,interface id="208308FE-CD22-4420-BF71-80396E326181" label="Font" id="IGFFont" >这一段中,interface表示IGFFont所属的大类,即接口型,label表示界面描述文件中使用的属性类型,即界面描述文件中 对字体类型的描述是"Font" , id是该属性对应的数据类型。之后的内容是 对该属性的子属性的定义,例如,height是字体类型的一个子项(字体类型 的一个属性),int是height这个属性的数据类型。通过上面数据类型表的定义,数据转换模块就可以根据该数据类型表对 各属性进行数据类型转换了 。202,将各属性信息转换为各属性对应的类型的数据。可以在数据转换模块中为各种类型的数据分别设置 一 个数据转换单元。 可以针对上面定义的数据类型表中的各个类型与该类型对应的数据转换单 元建立关联关系,例如建立一个关联关系表等。所有的数据转换单元都可以 将界面描述文件中的一部分描述,例如一个字符串,转换成该凄t据转换单元 对应的类型的数据。例如,当界面描述文件为XML脚本文件时,界面组件及其属性的描述 一般为字符串类型。读取到一串描述一个界面组件及其属性的字符串时,因 为每类界面组件都对应一个数据类型,而描述该界面组件的字符串中也包含 对这个界面组件的类型及其属性类型的描述,因而可以根据类型表调用该数 据类型相关联的数据转换单元对该界面组件信息进行数据转化。转化时,如 果该数据转换单元发现该数据类型不是简单的数据类型时,则进一步调用该 复杂数据类型中各子属性的类型对应的数据转换单元对该界面组件的各属 性信息进行转化,即对该复杂数据类型的各个子项进行转化。例如当数据转 换模块从一 串字符串中提取的属性类型信息是上面的IGFFont类型的界面组 件时,则根据复杂数据类型表中IGFFont类型的定义来根据IGFFont类型的 定义将该字符串中的属性内容信息转化为IGFFont各子属性类型的数据,例 如对height这个属性,数据类型表中其数据类型是int型,因此调用int型的 数据转换单元将界面描述文件中描述height这个属性的内容的字符串转换 成int型数据。数据类型转化完成后,就可以将转化得到的数据包含在发布的界面信息中提供给客户端。这些界面数据可以以普通的数据文件,或数据库文件,或 二进制数据文件等的形式提供给客户端,界面发布者可以根据具体需要来决 定界面数据的组织形式。其中,二进制数据文件是比较好的一种实现方式, 界面发布者可以将界面数据在计算机存储器,例如内存,当中的二进制数据 保存为一个二进制数据文件提供给客户端,客户端只需要将该文件中的二进 制数据拷贝到本地的内存当中就可以得到所有的界面数据。
较佳地,为了方便客户端获取这些界面数据,可以提供一个事先定义好 的数据接口 ,以供客户端通过这个数据接口来获取各种类型的界面数据。
举一个数据接口的例子,该数据接口支持存取丰富类型的数据,为了描
述简单,将该数据接口称作Metadata。
本实施例的Metadata支持设置及读取各种类型的数据,其中记录了各 个数据的对应的类型,可以采用如下所示的形式
Interface IMetadata
〃设置数据
HRESULT Setlnt(BSTR bsName, INT nValue); HRESULT SetStr(BSTR bsName, BSTR bsValue) HRESULT SetBool(BSTR bsName, Bool bValue); 〃……
〃读取数据
HRESULT Setlnt(BSTR bsName, INT * pnValue);
HRESULT GetStr(BSTR bsName, BSTR* pbsValue); HRESULT SetBool(BSTR bsName, BOOL* pbValue); 〃……
利用该数据接口可以存储简单类型数据,也可以读取简单类型的数据。 例如可以存4诸一个整凄史pMetadata-〉Setlnt( "id" ,100);也可以读取一个整数pMetadata-〉Getlnt( "id" , &nld)。203,将转换后的简单数据类型的数据保存在数据接口中。 这些数据可以根据具体情况采用任意的组织方式,例如罗列各界面组件 的属性数据。举个具体的例子,可以依次排列各界面组件的属性信息,如组 件名称、长度、宽度、位置等。这种组织方式下,客户端的界面生成装置可 以通过数据接口依次读取各界面组件的名称,并调用该类型界面组件的生成 单元读取该界面组件的其它属性信息并生成该界面组件。较佳地,在保存各界面组件的数据时,可以将各界面组件按照某种顺序 组织成树形结构;根据类型表调用相应的数据转换单元将界面组件的属性信 息转换成相应类型的数据并存储为该树形结构中该界面组件对应的节点的 数据。例如,以界面窗体组件为该树形结构中的一个节点,界面中的其它界 面组件作为该节点的子节点,如果一个界面组件又包括至少一个组件,则将 这些组件作为这个界面组件的子节点,各界面组件的属性数据保存在对应的 节点数据中,以供客户端按照树遍历算法依次读取各节点的数据生成所述界 面。举个具体的例子,以界面窗体作为根节点,根节点数据为这个窗体的大 小、形状、位置等数据;如果界面窗体中包含一个按钮,则可以以该按钮为 该界面窗体的子节点,子节点的数据为该按钮的组件类型、大小、形状、颜 色、位置等,如果该按钮上有一幅图片,则可以将该图片作为该按钮的子节 点,如果该图片中还有文字,可以将该文字作为该图片的子节点。采用这种 数据组织方式,客户端的界面生成装置可以通过数据接口读取这棵界面树的 根节点的数据,再通过数据接口依次获取该根节点的各子节点,并分别读取 各子节点的数据,如果某个子节点还包含子节点,则重复上述过程,直到读 取了该界面树中所有节点的数据,并根据这些数据创建界面。这里,读取界 面树各节点的数据的顺序可以根据任意的树遍历方法进行,例如现有的深度优先遍历方法、广度优先遍历方法等。 204,将数据接口提供给客户端。至此,界面数据的解析和类型转换就完成了。客户端装置可以从数据接口读取数据.,生成各界面组件并最终完成整个界面的创建。
由于各界面组件的数据已经以各界面组件的属性对应的数据类型保存,
客户端无需再对数据类型进行转化,只要从Metadata中读取到数据就可以 完成界面创建过程了 所以步骤201至203均可以在界面发布前预先进行。 加快客户端界面的创建速度,并使得界面描述更清晰,方便开发人员或者界 面设计者编写界面。
较佳地,可以把生成的数据接口保存成二进制数据文件作为发布的界面 数据,客户端可以直接根据该文件中的二进制数据恢复出数据,这样可以进 一步加快界面的创建速度。另外,由于发布的界面数据文件由二进制数据组 成,所以对界面的形式也有一定的保密作用。
本发明实施例的界面发布方法和装置利用类型定义优化界面数据的方 案,可以去掉客户端装置对界面描述文件,例如各种脚本等的依赖,提高界 面的创建速度,同时可以在界面发布前通过将界面描述文件转换成中间数 据,对界面数据的组织形式也有一定的保护作用。
本发明实施例的界面发布方法和装置可以应用在各种计算机应用工具 中,尤其是发展迅速的IM中。客户端无论在生活还是工作都大量的使用IM 与朋友,同事以及同学交流与沟通,IM已经成为网民客户端中曰常生活中 不可缺少的工具之一,采用本发明提供的技术可以进一步增强IM工具的性 能。
应用本发明实施例的界面发布方法和装置,客户端装置只需要设置一个 简单类型表及一个界面生成模块就能方便地创建界面,进一步降低了对客户 端性能和功能的要求。
综上所述,以上仅为本发明的部分实施例而已,并非用于限定本发明的 保护范围。凡在本发明的范围之内所作的任何修改、等同替换、改进等,均 应包含在本发明的保护范围之内。
权利要求
1、一种界面发布方法,其特征在于,包括获取一个界面的至少一个属性的信息,将所述属性信息转化为所述属性对应类型的数据提供给至少一个客户端以供客户端创建所述界面。
2、 如权利要求l所述方法,其特征在于, 所述属性信息为字符串类型;所述将所述属性信息转化为所述属性对应类型的数据包括将所述属性 信息转化为所述属性对应的简单类型的数据;所述简单类型包括以下中的至 少一个整型、字符串型、布尔型、无符号整型、颜色型、大小型、区域型、 数组型。
3、 如权利要求2所述方法,其特征在于,将所述数据提供给至少一个 客户端包括提供数据接口给所述至少一个客户端,所述数据接口用于将所述属性对 应简单类型的数据提供给所述客户端。
4、 如权利要求2或3所述方法,其特征在于,所述属性信息包括所述属性的类型信息和所述属性的内容信息, 所述将所述属性信息转化为所述属性对应的类型的数据包括建立所述 属性信息中的类型信息与所述属性对应类型的对应关系表,将所述信息中的 属性内容的信息转化为所述对应关系表中所述信息中的属性类型信息对应 的所述类型的数据。
5、 如权利要求4所述方法,其特征在于,所述至少一个属性中至少一个属性对应的类型为复杂类型,所述复杂类 型的属性包括至少一个简单类型或复杂类型的子属性,所述复杂类型包括以 下中的至少一个结构型、枚举型、复杂数组型、接口型、控件型;所述将所述属性值的信息转化为所述属性类型信息对应的简单类型的 数据包括建立所述复杂类型的属性与其包含的各子属性的关联关系,如果根据所述对应关系表判断所述属性对应的类型是简单类型,则将所述属性内容的信息转化为所述简单类型的数据;如果根据所述对应关系表判断所述属性对应的类型是复杂类型,则根据所述复杂类型的属性与其包含的各子属性 的关联关系和所述对应关系表对所述属性的子属性分别进行类型转化,如果 一个子属性对应的类型为复杂类型,则对该子属性的子属性进行类型转化, 直到得到的所述属性的数据全部是简单类型的数据。
6、 如权利要求2或3所述方法,其特征在于,所述至少一个属性包括至少一个界面组件及其属性信息,将所述界面组 件的数据以树形结构保存,以所述至少 一个界面组件中的一个界面组件为根 节点,其它界面组件分别为所述根节点的子节点;如杲所述界面组件包括至 少一个子组件,则以所述子组件作为所述界面组件的子节点,各组件的属性 数据保存在对应的节点数据中,以供客户端按照树遍历算法依次读取各节点 的数据生成所述界面。
7、 如权利要求2或3所述方法,其特征在于, 所述数据为二进制数据文件或数据库文件。
8、 一种界面发布装置,其特征在于,包括 属性获取模块,用于获取一个界面的至少一个属性的信息; 数据转化模块,用于将所述属性获取模块获取的所述属性信息转化为所述属性对应类型的数据;和用户接口模块,用于将所述数据转化模块转化得到的数据提供给至少一 个客户端。
9、 如权利要求8所述装置,其特征在于,所述客户端接口模块将所述数据转化模块转化得到的数据通过数据接 口提供给所述至少一个客户端。
10、 如权利要求8或9所述装置,其特征在于,所述数据转化模块包括 类型识别单元和至少一个类型转换单元,其中所述类型识别单元用于识别所述属性获取模块获取的属性信息中的属性类型信息,并将所述属性信息中的属性值信息发送到所述属性类型信息对应的类型转换单元;所述类型转换单元,用于将所述类型识别单元发送的所述属性值信息转 化为本类型转换单元对应的类型的数据。
全文摘要
本发明实施例提供了一种界面发布方法和装置。该界面发布方法包括获取一个界面的至少一个属性的信息,将所述属性信息转化为所述属性对应类型的数据提供给至少一个客户端以供客户端创建所述界面。本发明实施例提供的一种界面发布方法和装置通过将界面数据以相应的数据类型进行保存,客户端无需再对界面描述文件中的信息进行数据类型的转化,加快了界面的创建速度。
文档编号G06F9/44GK101295251SQ20081012713
公开日2008年10月29日 申请日期2008年6月19日 优先权日2008年6月19日
发明者梁芝成, 谢昕虬 申请人:腾讯科技(深圳)有限公司