Professional Documents
Culture Documents
• tModel目的及說明
tM d l目的及說明
• tModel結構
• tModel & UDDI
• Q S tModel
QoS
• QoS tModel實作
• 參考文獻
tModel目的及說明
• tModel設計的目的是希望讓使用者可以使
用更有意義的搜尋方式
– 不單侷限於商業名稱、分類或是服務的名稱
不單侷限於商業名稱 分類或是服務的名稱
– 藉由較清楚的技術規格描述讓使用者在使用
網路服務時 對人機之間的互動更加瞭解
網路服務時,對人機之間的互動更加瞭解
– tModel必須具備技術性規格的功能敘述,不
論是網路服務技術的說明 或是網路服務使
論是網路服務技術的說明,或是網路服務使
用上參數的說明
– 主要定義技術指紋(technical
主要定義技術指紋( h i l fifingerprint)和定
i )和定
義用於identifierBag與categoryBag結構的命
名空間
tModel目的及說明 (cont )
(cont.)
• tModel實體(instance)以keyedReference
呈現
• 透過鍵值(tModelKey)的參照,tModel成為
透過鍵值 的參照 成為
一個用於描述技術規格的參考系統
• 當欲發佈一筆網路服務時,可視該網路服
務的技術特性 向具關聯性的tModel註冊
務的技術特性,向具關聯性的tModel註冊
(register,意指去參考具有關聯性的
tModel) 當網路服務發佈成功後 便可使
tModel),當網路服務發佈成功後,便可使
用一些更具意義的搜尋條件
tModel結構
欄位名 描述 資料類型 長度
欄位名 描述 資料類型 長度
operator
p • 屬性。 stringg 48
• 管理和控制tModel資料的UDDI註
冊中心操作入口站點的名稱
(certified name)。
• 控制該資料的操作入口站點在資
料被保存時記錄它。
• 該資料是由操作入口指派的,同
時該資料不能在 save_tModel 操作
中指定。
name • 必要元素。 stringg 128
• 用於記錄tModel的名字。
• 透過 find_tModel 提供名字搜索。
• 名字不能為空,並且必須對於查
看tModel的用戶是有明確意義的。
tModel結構 (cont )
(cont.)
欄位名 描述 資料類型 長度
description
p • 可選的可重複元素。 stringg 255
• 一條或多條簡短的tModel描述。
• 每一條描述允許支援一種國家語
言代碼,但國際語言代碼不可重
複出現。
欄位名 描述 資料類型 長度
description
p • 可選的可重複元素。 stringg 255
• 對於被使用的特定tModel的簡短描
述性概覽資訊的具備語言代碼修
飾的零個或多文本描述。
overviewURL • 可選元素。 string 255
• 這個字串資料元素用於儲存一個
該URL引用了一個長
URL引用,該URL引用了一個長
URL引用
期穩定的概要描述文檔。
• 這個概要描述文檔詳細描述了在
整體
整體Web服務描述中使用到的以元
服務描述中使用到的以元
件形式存在的某個特定的tModel。
• 這個元素的內容的推薦格式是一
個URL,這個URL可用於通過Web
流覽器或HTTP-GET操作來獲取一
個基於HTML的描述文檔。
tModel結構 keyedReference
tModel結構-keyedReference
欄位名 描述 資料類型 長度
k N
keyName • 屬性。
屬性 string
i 255
• 用來描述UDDI類型分類法中的識
別字。
• 提供被選擇鍵值的附加資訊
提供被選擇鍵值的附加資訊。
tModel & UDDI
tModel & UDDI (cont )
(cont.)
protocol tModel 是 協定
• 在tM
在tModel中的overviewDoc指向一個外部
d l中的 i D 指向一個外部
的XML檔案,在XML檔案中以不同的tag
來代表所儲存的QoS屬性,tag中所包含的
值為實際的QoS Value,透過tag之間的關
a ue 透過 ag之間的關
聯性及階層性來表示各個屬性間的關係。
• 發佈web
發佈 eb service時,在bindingTemplate
ser ice時 在bindingTemplate
中去參考對應的QoS tModel,每一筆web
service都對應到一個獨立的tModel。
• 優點是簡單易實作,缺點是QoS的資料並
優點是簡單易實作 缺點是QoS的資料並
不實際存在UDDI中。
QoS tModel (1) (cont )
(cont.)
<tModel tModelKey=
tModelKey="uuid:5474CB60-
uuid:5474CB60-……..-… - "> >
<name>QoSInformation</name>
<description>Quality Rating Information</description>
<overviewDoc>
<description>Quality Rating Values in XML Files</description>
<overviewURL>http://www.example.com/qos.xml</overviewURL>
</overviewDoc>
/ i D
</tModel>
QoS tModel (2)
• 為每個不同的Q
為每個不同的QoS屬性建立一個tModel(每
S屬性建立一個tM d l(每
個tModel即為一種QoS類別)
• 發佈web service時,bindingTemplate中
中的categoryBag去參考這些可用的QoS
屬性,categoryBag中的keyedReference
參考一個QoS tModel的tModelKe 並將
tModel的tModelKey,並將
其對應的QoS value儲存在keyValue中。
• 缺點是會造成過多的tModel存在於UDDI
中 QoS類別過多複雜
中,QoS類別過多複雜。
QoS tModel (2) (cont )
(cont.)
QoS tModel (2) (cont )
(cont.)
<tModel tModelKey=
tModelKey="uuid:E5ED4570-
uuid:E5ED4570-……..-… - ">>
<name>QoSInformation</name>
<description>Quality Rating Information</description>
<overviewDoc>
<description>Quality Rating Information</description>
<overviewURL>http://www.example.com/qos.xml</overviewURL>
</overviewDoc>
/ i D
<categoryBag>
<keyedReference
keyName="uddi-org:types“
keyValue="QoSValueSet“
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/>
</categoryBag>
</tModel>
QoS tModel (2) (cont )
(cont.)
<tModel tModelKey=
tModelKey="uuid:E5ED457A-
uuid:E5ED457A-……..-… - ">
>
<name>PriceRating</name>
<description>Price Rating Information</description>
<overviewDoc>
<description>Price Rating Information</description>
<overviewURL>http://www.example.com/price.html</overviewURL>
</overviewDoc>
/ i D
<categoryBag>
<keyedReference
keyName="uddi-org:types"
keyValue="QoSInformation"
tModelKey="uuid:E5ED4570-……..-…"/>
! -- QoSInformation的tModelKey
<categoryBag>
</tModel>
QoS tModel (2) (cont )
(cont.)
<bindingTemplate bindingKey="
bindingKey ..." serviceKey
serviceKey="...">>
<description xml:lang="en"></description>
<tModelnstanceDetails>
<tModelnstanceInfo tModelKeyy ="uuid:E5ED4570-……..-…"></tModelnstanceInfo>
<tModelnstanceInfo tModelKey ="uuid:E5ED457A-……..-…"></tModelnstanceInfo>
<tModelnstanceDetails>
<categoryBag>
<keyedReference
keyName="QoSInformation"
keyValue="0.4"
tM d lK
tModelKey="uuid:E5ED4570-……..-…"/>
" id E5ED4570 "/
<keyedReference
keyName="PriceRating"
keyValue="0
keyValue= 0.6
6"
tModelKey="uuid:E5ED457A-……..-…"/>
</categoryBag>
</bindingTemplate>
QoS tModel (3)
• 增加各個不同的Q
增加各個不同的QoS屬性,每一個屬性皆
S屬性 每一個屬性皆
以一個tModel來表示,但與第二種方法不
同的是,在此作法下可以清楚地呈現出
QoS各個屬性間的關係與階層性
• 發佈web service時,在bindingTemplate
中去參考其對應的QoS tModel 真正的
tModel,真正的
QoS value存在tModel的categoryBag。
QoS tModel (3) (cont )
(cont.)
QoS tModel (3) (cont )
(cont.)
<tModel tModelKey="uuid:5474CB60-2EAA-11DB-A24E-CCA0C123053E">
<name>QoSInformation</name>
<description>Quality Rating Information</description>
<overviewDoc>
<description>Quality Rating Principles</description>
p g p
<overviewURL>http://uddi.org/specification.html</overviewURL>
</overviewDoc>
<categoryBag>
<keyedReference keyName="uddi-org:types“ keyValue="QoSValueSet"
tModelKey="uuid:C1ACF26D
tModelKey= uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4
9672 4404 9D70 39B756E62AB4"/> /> ! -- 定義用
<keyedReference keyName="uddi-org:types“ keyValue="PriceRating"
tModelKey=“uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4”/> ! -- 定義用
<keyedReference keyName="uddi-org:types“ keyValue="Seat_SizeRating"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/> ! -- 定義用
<keyedReference keyName="uddi-org:types“ keyValue="ComfortableRating“
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/> ! -- 定義用
keyedReference keyName
<keyedReference keyName="PriceRating“
PriceRating keyValue
keyValue="0.8"
0.8
tModelKey="uuid:E5ED4570-2EA7-11DB-A24E-8153F0886292"/>
<keyedReference keyName="Seat_SizeRating“ keyValue="0.3"
tModelKey="uuid:571E2B60-2EA8-11DB-A24E-CFEB6683478F"/>
<keyedReference keyName="ComfortableRating
keyName="ComfortableRating“ keyValue="0.3"
keyValue="0 3"
tModelKey="uuid:ACFD1720-2EA9-11DB-A24E-A76536B078BC"/>
</categoryBag>
</tModel>
QoS tModel (3) (cont )
(cont.)
<tModel tModelKey=
tModelKey="uuid:E5ED4570-2EA7-11DB-A24E-8153F0886292">
uuid:E5ED4570-2EA7-11DB-A24E-8153F0886292 >
<name>PriceRating</name>
<description>Quality Rating About Ticket Price</description>
<overviewDoc>
<description>Quality Rating Principles</description>
<overviewURL>http://uddi.org/specification.html</overviewURL>
</overviewDoc>
/ i D
<categoryBag>
<keyedReference
keyName="uddi-org:types"
keyValue="PriceQoSValueSet"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/>
</categoryBag>
</tModel>
QoS tModel (3) (cont )
(cont.)
<tModel tModelKey=
tModelKey="uuid:571E2B60-2EA8-11DB-A24E-CFEB6683478F">
uuid:571E2B60-2EA8-11DB-A24E-CFEB6683478F >
<name>Seat_SizeRating</name>
<description>Quality Rating About Airplane Seat-Size</description>
<overviewDoc>
<description>Quality Rating Principles</description>
<overviewURL>http://uddi.org/specification.html</overviewURL>
</overviewDoc>
/ i D
<categoryBag>
<keyedReference
keyName="uddi-org:types"
keyValue="Seat_SizeQoSValueSet"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/>
</categoryBag>
</tModel>
QoS tModel (3) (cont )
(cont.)
<tModel
tModel tModelKey
tModelKey="uuid:ACFD1720-2EA9-11DB-A24E-A76536B078BC">
uuid:ACFD1720 2EA9 11DB A24E A76536B078BC
<name>ComfortableRating</name>
<description>Quality Rating About Airplane Comfortable</description>
<overviewDoc>
<description>Quality Rating Principles</description>
<overviewURL>http://uddi.org/specification.html</overviewURL>
</overviewDoc>
<categoryBag>
<keyedReference keyName="uddi-org:types“
keyValue="ComfortableRatingQoSValueSet"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/> ! -- 定義用
keyedReference keyName
<keyedReference keyName="uddi-org:types“
uddi org:types keyValue
keyValue="PriceRating"
PriceRating
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/> ! -- 定義用
<keyedReference keyName="uddi-org:types“ keyValue="Seat_SizeRating"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/> ! -- 定義用
</ t
</categoryBag>
B >
</tModel>
QoS tModel (3) (cont )
(cont.)
<businessService
businessService serviceKey = "E5ED457A……"
E5ED457A…… businessKey = "25CD457C……">
25CD457C……
<name>Web Service Example</name>
<bindingTemplates>
<bindingTemplate bindingKey = "uddi:ACF4CB60-…-…-…“ serviceKey = "E5ED457A……">
<accessPoint URLType="http">http://www
URLType="http">http://www.google.com.tw/</accessPoint>
google com tw/</accessPoint>
<tModelInstanceDetails>
<tModelnstanceInfo
tModelKey ="uuid:5474CB60-2EAA-11DB-A24E-CCA0C123053E ">! -- QoSInfo
</tModelnstanceInfo>
<tModelnstanceInfo
tModelKey ="uuid:E5ED4570-2EA7-11DB-A24E-8153F0886292">! -- PriceRating
</tModelnstanceInfo>
<tModelnstanceInfo
tModelKey ="uuid:571E2B60-2EA8-11DB-A24E-CFEB6683478F">! -- Seat_Size
</tModelnstanceInfo>
<tModelnstanceInfo
tModelKey ="uuid:ACFD1720-2EA9-11DB-A24E-A76536B078BC ">! -- Comfortable
</tModelnstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
QoS tModel (4)
• 建立各個不同的Q
建立各個不同的QoS S tM d l 分別代表不
tModel,分別代表不
同的QoS屬性,彼此之間的關係在建立
tModel時便清楚地定義在各個QoS tModel
• 發佈web service時,將與此web service
相關的QoS tModel於businessService的
categor Bag中加以註冊 並將對應的
categoryBag中加以註冊,並將對應的
QoS value儲存於categoryBag中的
keyedReference。
QoS tModel (4) (cont )
(cont.)
QoS tModel (4) (cont )
(cont.)
<tModel
tModel tModelKey
tModelKey="uuid:5474CB60-2EAA-11DB-A24E-CCA0C123053E">
uuid:5474CB60 2EAA 11DB A24E CCA0C123053E
<name>QoSInformation</name>
<description>Quality Rating Information</description>
<overviewDoc>
<description>Quality Rating Principles</description>
<overviewURL>http://uddi.org/specification.html</overviewURL>
</overviewDoc>
<categoryBag>
<keyedReference
keyName="uddi-org:types"
keyValue="QoSValueSet"
uuid:C1ACF26D 9672 4404 9D70 39B756E62AB4 / ! 定義用
tModelKey=“uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4”/>!--
tModelKey
<keyedReference
keyName="uddi-org:types"
keyValue="PriceRating"
tM d lK " id C1ACF26D 9672 4404 9D70 39B756E62AB4”/>! 定義用
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4”/>!--
<keyedReference
keyName="uddi-org:types"
keyValue="ComfortableRating"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4”/>!-- 定義用
</categoryBag>
</tModel>
QoS tModel (4) (cont )
(cont.)
<tModel tModelKey=
tModelKey="uuid:E5ED4570-2EA7-11DB-A24E-8153F0886292">
uuid:E5ED4570-2EA7-11DB-A24E-8153F0886292 >
<name>PriceRating</name>
<description>Quality Rating About Ticket Price</description>
<overviewDoc>
<description>Quality Rating Principles</description>
<overviewURL>http://uddi.org/specification.html</overviewURL>
</overviewDoc>
/ i D
<categoryBag>
<keyedReference
keyName="uddi-org:types"
keyValue="PriceQoSValueSet"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/>
</categoryBag>
</tModel>
QoS tModel (4) (cont )
(cont.)
<tModel tModelKey=
tModelKey="uuid:ACFD1720-2EA9-11DB-A24E-A76536B078BC">
uuid:ACFD1720-2EA9-11DB-A24E-A76536B078BC >
<name>ComfortableRating</name>
<description>Quality Rating About Airplane Comfortable</description>
<overviewDoc>
<description>Quality Rating Principles</description>
<overviewURL>http://uddi.org/specification.html</overviewURL>
</overviewDoc>
/ i D
<categoryBag>
<keyedReference
keyName="uddi-org:types"
keyValue="ComfortableRatingQoSValueSet"
tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4"/>
</categoryBag>
</tModel>
QoS tModel (4) (cont )
(cont.)
<businessService serviceKey = "E5ED457A……" businessKey = "25CD457C……">
name Web Service Example</name>
<name>Web Example /name
<bindingTemplates>
<bindingTemplate bindingKey = "uddi:ACF4CB60-…-…-…"
serviceKey = "E5ED457A……">
<accessPoint URLType="http">http://www
URLType="http">http://www.google.com.tw</accessPoint>
google com tw</accessPoint>
</bindingTemplate>
<categoryBag>
<keyedReference
tModelKey="uuid:5474CB60-2EAA-11DB-A24E-CCA0C123053E"
keyName="QoSInformation"
keyValue="0.5"/>
keyedReference
<keyedReference
tModelKey="uuid:E5ED4570-2EA7-11DB-A24E-8153F0886292"
keyName="PriceRating"
keyValue="0.8"/>
<k
<keyedReference
dR f
tModelKey="uuid:ACFD1720-2EA9-11DB-A24E-A76536B078BC"
keyName="ComfortableRating"
keyValue="0.3"/>
</categoryBag>
</bindingTemplates>
</businessService>
QoS tModel (5)
i 的作法 透過修改UDDI
• UDDI extension的作法,透過修改UDDI
t
中的資料結構,來讓所允許的QoS value
可以明白地以XML tag來儲存(enclosing
ag)
with XML tag)。
• 這種作法雖然是最明顯地可以看出QoS及
其對應的 eb service,但有一個限制,便
其對應的web ser ice 但有一個限制 便
是client、server、及intermediary node皆
須是QoS-aware,意指這三個node必須都
能解析採用此方法的SOAP message,否 g
則會傳回錯誤訊息。
QoS tModel (5) (cont )
(cont.)
<?xml version=
version="1
1.0
0" encoding=
encoding="UTF-8"?>
UTF-8 ?>
<envelop xmlns= "http://schmas.xmlsoap.org/soap/envelop/">
<body>
<find service businessKey="*"
<find_service businessKey= * generic=
generic="11.0
0"
xmlns="urn:uddi-org:api" maxRows="5">
<name>car reservation</name>
<qosInfo>
I f
<availability>0.8</availability>
</qosInfo>
</find_service>
</body>
</enveolop>
tModel實作
• get_authToken(
t thT k ( )
• save_business(( )
• save_tModel( )
• save_service(( )
• find tModel( )
find_tModel(
tModel實作(juddi)-get_authToken
tModel實作(juddi) get authToken
tModel實作(Java)-get_authToken
tModel實作(Java) get authToken
AuthToken at = proxy.get_authToken(
proxy get authToken("004"
004 , "ChiHua");
ChiHua );
String aut = at.getAuthInfoString();
System.out.println("AuthInfo: " + aut);
tModel實作(juddi)-save_business
tModel實作(juddi) save business
tModel實作(Java)-save_business
tModel實作(Java) save business
String aut = "authToken:C1875DE0-6134-11DC-9DE0-B2FA95FC1AD7
TModelDetail
TM d lD t il tmod
t d = proxy.save_tModel(aut,
tM d l( t tModels);
tM d l )
String bo = tmod.getOperator();
System.out.println("operator: "+ bo);
tModel實作(juddi)-save_service
tModel實作(juddi) save service
tModel實作(Java)-save_business
tModel實作(Java) save business
String q = “QoS";
QoS ;
System.out.println ("Search tModel:" + q);
FindQualifiers
Q findQualifiers
Q = new FindQualifiers();
Q ();
Vector qualifier = new Vector();
qualifier.add(new FindQualifier("sortByNameAsc"));
findQualifiers.setFindQualifierVector(qualifier);
( )