摘 要:從市場經(jīng)濟(jì)模式下的網(wǎng)格服務(wù)模型出發(fā),研究滿足基于市場需求的網(wǎng)格計(jì)算為目的,先后討論了服務(wù)契約的三個內(nèi)容,首先給出粒度的概念,其次描述服務(wù)粒度化的必要性,然后闡述了服務(wù)契約的產(chǎn)生,最后按照企業(yè)建議的內(nèi)容提出一種格式化契約的形式。該服務(wù)契約適用于作為市場模式下網(wǎng)格計(jì)算的服務(wù)供需雙方的電子交易憑證。關(guān)鍵詞:網(wǎng)格計(jì)算;服務(wù)粒度; 服務(wù)契約; 電子交易憑證
中圖分類號:TN915-34文獻(xiàn)標(biāo)識碼:A
文章編號:1004-373X(2010)18-0087-04
Application of Service Contract in Grid Computation
ZHU Hui1,2
(1.Department of Computer Science and Technology, Xi’an University of Post Telecommunications, Xi’an 710121, China;
2.School of Computer Science Technology, Xidian University, Xi’an 710071, China)
Abstract: With the development of grid computation technology, the distributed resource scheduling and user certification become an important subject of network service. Service contract as a solution of resource certification and distribution, which is accepted by more and more network service systems. Proceeding from the grid service model under the market economy, aiming at the grid computation based on the market requirement, three contents of service contract are discussed in this paper. At first, the concept of granulation and service granularity are offered. Secondly, it describes what is service contrast. Finally, the form of a contract format is suggested in accordance with the recommendations of the enterprise. The concept of service contract can be applied to be the E-commerce proof between the service providers and service consumers in the grid computation of the market economy.Keywords: grid computer; service granularity; service contract; electronic trade evidence
0 引 言
網(wǎng)格計(jì)算(grid computing,GC)[1]作為分布式計(jì)算的一個分支,與傳統(tǒng)的分布式計(jì)算技術(shù)相比,網(wǎng)格計(jì)算的特點(diǎn)主要體現(xiàn)在三個方面,即協(xié)調(diào)非集中控制資源,網(wǎng)格整合各種資源,協(xié)調(diào)各種使用者;使用標(biāo)準(zhǔn),開放,通用的協(xié)議和界面解決認(rèn)證、授權(quán)、資源發(fā)現(xiàn)和資源存取等基本問題;網(wǎng)格允許它的資源被協(xié)調(diào)使用,以得到多種服務(wù)質(zhì)量,滿足不同使用者需求,如系統(tǒng)響應(yīng)時間,流通量,有效性,安全性,及資源重定位,使得聯(lián)合系統(tǒng)的功效比其各部分的功效總和要大得多。正由于它有如上特點(diǎn),網(wǎng)格計(jì)算已經(jīng)廣泛地被企業(yè)和政府用于IT優(yōu)化、分析加速、信息訪問、工程設(shè)計(jì)、設(shè)計(jì)協(xié)作和信息存取等領(lǐng)域。成功的網(wǎng)格應(yīng)用主要有:美國的Globus[2],Legion[3],Condor,IPG等;歐洲的CERN DataGrid[4],UNICORE,MOL等;澳大利亞的Nimrod/G[5],EcoGrid等;日本的Ninf[6],Bricks等。最新的歐洲電子對撞機(jī)的數(shù)據(jù)處理系統(tǒng)就是按照網(wǎng)格計(jì)算模式建立的三層數(shù)據(jù)處理交換機(jī)構(gòu)。
網(wǎng)格計(jì)算本質(zhì)上利用互聯(lián)網(wǎng)技術(shù),形成一個巨大的的資源和作業(yè)池。然而,大多數(shù)的網(wǎng)格服務(wù)都是在可信任的內(nèi)部網(wǎng)絡(luò)之上的,而不是與外部的合作者之間進(jìn)行資源調(diào)度,所以它存在著一定的局限性。網(wǎng)格服務(wù)商業(yè)化的需求將會隨著技術(shù)進(jìn)步而擴(kuò)大,當(dāng)企業(yè)把服務(wù)看作一個在商業(yè)中能夠發(fā)揮實(shí)際影響時,它會將本地服務(wù)資源進(jìn)行分割,并且提供給任何經(jīng)授權(quán)的作業(yè)使用。
1 粒度和服務(wù)粒度
粒度[7]即取不同大小的對象,將原來“粗粒度”的大對象分割為若干“細(xì)粒度”的小對象,或把若干小對象合并成一個大的粗粒度對象來進(jìn)行研討。人們在思考問題時,或者是先從總體進(jìn)行觀察,然后再逐步深入地研究各個部分的情況;或先從各個方面對同一問題進(jìn)行不同側(cè)面的了解,然后對它們進(jìn)行綜合;或是上面兩種方法的組合,即時而從各側(cè)面對事物進(jìn)行了解,然后進(jìn)行綜合觀察,時而綜合觀察后,對不甚了解的部分再進(jìn)行觀察。根據(jù)需要從不同側(cè)面、不同角度反復(fù)對事物進(jìn)行了解、分析、綜合、推理,最后得出事物本質(zhì)的性質(zhì)和結(jié)論。
Zadeh在討論模糊信息粒度理論時,提出人類認(rèn)知的3個主要概念,即粒度(granulation)、組織(organization)、因果(causation)。其中,粒度包括將全體分解為部分;組織包括從部分集成為全體;因果包括因果的關(guān)聯(lián)[8-9]。他還進(jìn)一步提出對粒度的計(jì)算,認(rèn)為粒度計(jì)算是一把大傘,它覆蓋了對所有有關(guān)粒度理論、方法論、技術(shù)和工具的研究,指出:“粗略地說,粒度計(jì)算是模糊信息粒度理論的超集,而粗糙集理論和區(qū)間計(jì)算是粒度數(shù)學(xué)的子集”。
在網(wǎng)格計(jì)算中, 粒度是指人們處理的文件或記錄的規(guī)模,即操作的規(guī)模和范圍,通過粒度組合可以解決一個復(fù)雜的作業(yè)。例如,一個在數(shù)百個處理器上運(yùn)行的大型仿真程序可能會將整個仿真內(nèi)容作為一個數(shù)百GB的文件進(jìn)行讀/寫,也可能會讓各進(jìn)程只讀/寫代表其各自負(fù)責(zé)那部分仿真數(shù)據(jù)的文件。這樣的應(yīng)用通常由GridFTP(網(wǎng)格文件傳輸協(xié)議)來承擔(dān),在網(wǎng)格上提供并行文件系統(tǒng)必須要克服兩個主要的挑戰(zhàn):其一是身份驗(yàn)證和用戶身份映射;其二是在重負(fù)載的情況下提供高性能的處理能力,此時可能會有數(shù)千臺機(jī)器同時訪問同一個文件系統(tǒng)。一般可采用統(tǒng)一的身份標(biāo)識和服務(wù)粒度化解決這兩個挑戰(zhàn)。
服務(wù)是公開的一組功能的集合,服務(wù)粒度指的是服務(wù)所公開功能的范圍。隨著網(wǎng)絡(luò)服務(wù)市場化和商業(yè)化,為數(shù)眾多的小型企業(yè)沒有充足資金構(gòu)建私有的信息處理平臺,必定會產(chǎn)生大量的小服務(wù)需求,這種需求對以提供服務(wù)而盈利的企業(yè)非常重要。當(dāng)Web服務(wù)在商業(yè)合作伙伴之間創(chuàng)建時,提供服務(wù)的企業(yè)可以將整塊資源進(jìn)行劃分,為每個請求創(chuàng)建單獨(dú)的服務(wù),使得公司銷售服務(wù)非常的容易,即服務(wù)的粒度化。例如,企業(yè)可能提供一個服務(wù),為更快地響應(yīng)一個用戶,需要對他收取更多的費(fèi)用;或者他也許會為更好的穩(wěn)定性而收取更多的費(fèi)用。因此企業(yè)可以與諸多消費(fèi)者之間為這個服務(wù)的公司簽訂兩類不同的協(xié)議:一是為那些需要更高層次服務(wù)簽訂原意付出多費(fèi)用的協(xié)議;二是為那些滿足于更低層次服務(wù)的公司簽訂不愿意付出過多費(fèi)用的協(xié)議。。
隨著公司的發(fā)展,業(yè)務(wù)模式不斷變化,以及對數(shù)據(jù)處理的不同需求,表明:“服務(wù)是動態(tài)的,須要根據(jù)需求相對頻繁地更新或者替代專項(xiàng)服務(wù)”。而服務(wù)功能和數(shù)據(jù)庫、操作系統(tǒng)、服務(wù)器與存儲綁定,這種緊耦合方式缺乏與其他系統(tǒng)的互操作性,初期需要大量的資金投入,往往會導(dǎo)致用戶對某個廠商的依賴。如何靈活地構(gòu)建這些服務(wù)粒度以滿足各類不同的需要,一般存在以下3種類型,如圖1所示。
圖1 網(wǎng)絡(luò)服務(wù)組合
基本服務(wù) 基本服務(wù)即是系統(tǒng)提供的最小粒度服務(wù),或者說是原子服務(wù)。這類服務(wù)考慮的是利用它們的可重用性,它們是組成一些較大粒度服務(wù)的基礎(chǔ)。基本服務(wù)可以說是原有系統(tǒng)跟業(yè)務(wù)需求細(xì)分的中間結(jié)合點(diǎn),它既是原有系統(tǒng)能夠提供的最細(xì)粒度服務(wù),同時也是要設(shè)計(jì)的系統(tǒng)最細(xì)粒度服務(wù)。
合成服務(wù) 合成服務(wù)是基本服務(wù)的簡單組合,只是為了把具有相同功能,但操作不同業(yè)務(wù)對象的基本服務(wù)組合到一起,形成一個對外提供相同功能的服務(wù)。它類似設(shè)計(jì)模式里面的工廠模式,只要告訴服務(wù)接口傳進(jìn)來的是哪一個業(yè)務(wù)對象,那么服務(wù)就能自動識別應(yīng)該調(diào)用哪一個基本服務(wù)。
組合服務(wù) 組合服務(wù)是系統(tǒng)里面最復(fù)雜的部分,它不是將基本服務(wù)簡單地堆積到一塊,而是最大粒度的服務(wù),里面各個基本服務(wù)的關(guān)系受到工作流程的控制。它是基本服務(wù)與工作流程的結(jié)合。
實(shí)現(xiàn)服務(wù)間松耦合的一個最重要思想就是服務(wù)粒度化,它可以降低服務(wù)的復(fù)雜性,提高服務(wù)的重用性,使服務(wù)能夠更好地適應(yīng)需求的變化。當(dāng)用戶需要更低成本的服務(wù)解決方案時,可以滿足他們從小規(guī)模的數(shù)據(jù)處理請求,并隨著業(yè)務(wù)的增長逐步擴(kuò)大規(guī)模,同時根據(jù)自身的需求增加服務(wù)質(zhì)量和其他功能等。與此同時,用戶可以使用點(diǎn)到點(diǎn)的通信方式,避免新增加昂貴的服務(wù)器。服務(wù)粒度劃分的本質(zhì)是通過重組、松耦合的方式來實(shí)現(xiàn)服務(wù)的重用。分布式服務(wù)的提供則把松耦合的優(yōu)勢發(fā)揮得淋漓盡致。它可以幫助用戶擺脫緊耦合的束縛,以較少的投資開始得到數(shù)據(jù)處理需求,用戶只配置需要的功能,并根據(jù)需要以漸進(jìn)的方式擴(kuò)大整合的規(guī)模。
2 服務(wù)契約
在WCF(Windows communiction foundation)中,一個服務(wù)契約是邏輯相關(guān)的操作組合。在網(wǎng)格服務(wù)中,最基本的交互是在服務(wù)提供者與服務(wù)用戶之間進(jìn)行的,服務(wù)契約是用于描述服務(wù)交互情況的一組規(guī)則。對于這兩者之間的每一次交互,其中一方提供數(shù)據(jù)和功能的某一組合,而另一方則使用它。在提供者能夠向用戶提供所有由該服務(wù)提供的數(shù)據(jù)功能之前,無論采用何種方法,這兩者必須達(dá)成共識,形成協(xié)議或者說建立契約,以此來指定提供者正在執(zhí)行的這個服務(wù)的詳細(xì)信息。就像是建立任何好的合法契約一樣,這兩者處于“正常交易關(guān)系”,它們?nèi)匀皇窍嗷オ?dú)立的個體,雙方不會互相干擾彼此的事務(wù)處理,除非契約明確規(guī)定需要這樣做。從本質(zhì)上而言,這個契約使提供者與用戶之間的關(guān)聯(lián)關(guān)系滿足松散耦合,松散耦合要求交互的雙方應(yīng)該含有盡量少的控制它們之間關(guān)聯(lián)關(guān)系的必要信息。軟件滿足松散耦合的全部原因在于:可以完全獨(dú)立地創(chuàng)建和控制每一個IT環(huán)境下的組件。選擇實(shí)現(xiàn)松散耦合的方法是:通過實(shí)現(xiàn)系統(tǒng)的契約接口,以及當(dāng)允許交互雙方的每一方都可以獨(dú)立改變它們實(shí)現(xiàn)契約的方式時,確保仍然保持那些已被契約約定的關(guān)聯(lián)關(guān)系。
在網(wǎng)格應(yīng)用中,契約是介于任何的Web服務(wù)提供者和任何的服務(wù)消費(fèi)者之間的,它是對服務(wù)內(nèi)容的描述,是對一系列的技術(shù)數(shù)據(jù)和可能的商業(yè)信息進(jìn)行了具體的規(guī)范。對于最簡單的情況,契約提供了關(guān)于一個服務(wù)被提供者創(chuàng)建的一些細(xì)節(jié),通過同意契約,雙方都能夠在實(shí)際編碼進(jìn)行之前就確定知道什么東西將被提供。所以,契約是對服務(wù)行為的可見內(nèi)容的表示,因此在契約中絕對不會包含提供者和用戶實(shí)際交換的數(shù)據(jù),或者任何關(guān)于提供者和用戶是如何滿足契約要求的說明。另外,由于用戶是隨著提供者的變化而變化的,那么對于一個簡單的服務(wù)就可能存在多個契約。既然,契約是使服務(wù)起作用的關(guān)鍵,因此它應(yīng)該包括的內(nèi)容是:
描述功能需求。提供者將向任何選擇遵守契約內(nèi)容的用戶提供的功能。契約應(yīng)該定義提供者所提供的函數(shù),返回?cái)?shù)據(jù)或者是這兩者的組合。
提供非功能需求。不僅是服務(wù)做什么,而是它針對業(yè)務(wù)如何做的詳細(xì)信息。這包括兩方面的信息,提供者為提供其功能以及數(shù)據(jù)的責(zé)任,同樣用戶提供其功能以及數(shù)據(jù)的期望責(zé)任,以及他們需要提供的返回,例如有效性、安全性和基于服務(wù)考慮的其他性能。
指定在用戶與提供者之間的約定規(guī)則,這就是通常所說的策略,控制誰可以訪問提供者,使用者必須遵守的安全規(guī)程,以及其他所有適用于這個交換的規(guī)則。
實(shí)際上,在服務(wù)交互過程中存在兩種不同性質(zhì)的契約。第一種,在兩個業(yè)務(wù)實(shí)體之間有合法的約定;第二種是這兩者之間旨在共同協(xié)作的技術(shù)關(guān)系。為了簡化這個技術(shù)關(guān)系,可以在契約中使用一個代表某些簡化的抽象,這些簡化是針對服務(wù)如何像個體一樣工作而言的。正像合法的契約是對一系列可執(zhí)行規(guī)則和約定進(jìn)行概述的文檔,這些規(guī)則和約定是由雙方都理解的語言編寫的,在IT業(yè)也需要以用戶和提供者都理解的標(biāo)準(zhǔn)化方式來定義一個保證IT“約定的規(guī)則”的契約,為每個使用者提供其相互交流所需要的信息。
3 契約的定義
如上所述,網(wǎng)格中的服務(wù)契約不是法律條文,它具備商業(yè)作用。這些契約通常涉及到商業(yè)牽連,而不只是技術(shù)牽連。例如,一個契約包括一個服務(wù)如何被認(rèn)證的細(xì)節(jié),具有關(guān)于認(rèn)證、加密和授權(quán)的細(xì)節(jié);它也可以包含服務(wù)層次協(xié)議(SLAs);同時它也可以包含商業(yè)信息,包括計(jì)帳、測量和監(jiān)管將如何開展。所以,契約包括的是服務(wù)信息而不是服務(wù)本身,服務(wù)只需要被創(chuàng)建1次。當(dāng)另一個不同的合作者使用這個服務(wù),只需要修改契約。這使得可以用一種輕松有效的方法快速地布置服務(wù)。例如,一個電訊提供商想要通過使用一個能夠產(chǎn)生麻煩的票據(jù)接口,訂購進(jìn)入、記賬以及綜合的方式為廣泛的消費(fèi)者提供網(wǎng)絡(luò)服務(wù),它可以通過創(chuàng)建一個服務(wù)來做這些,同時為不同的消費(fèi)者基于每一個消費(fèi)者的商業(yè)和技術(shù)的需求來創(chuàng)建不同的契約。
企業(yè)推薦執(zhí)行服務(wù)契約定義流程有3點(diǎn):
(1) 定義服務(wù):包括定義用戶類型和描述服務(wù)的功能,敘述服務(wù)品質(zhì)和適用性的約束條件,定義服務(wù)所提供給預(yù)期用戶的價(jià)值,以及其他使用要求的約束條件。
(2) 定義如何使用服務(wù):定義請求的消息和語義格式,識別特殊結(jié)果和行為的條件,確定產(chǎn)生結(jié)果的處理、活動和步驟的流程。
(3) 定義服務(wù)間如何交互:定義用戶如何與服務(wù)通信,描述可接受的通信協(xié)議,選定適合的調(diào)用風(fēng)格(請求/響應(yīng)、通知、事件驅(qū)動等等),設(shè)置你為服務(wù)預(yù)計(jì)的生命期。
完成上述步驟之后,將得到基于定義明確的契約,并且滿足松散耦合的服務(wù)。該契約是一個關(guān)于服務(wù)的元數(shù)據(jù)的集合,包含了很多可以操作的層次,從而表達(dá)如何交流和交流的期望目標(biāo)。結(jié)合Ian Foster于2001年提出了網(wǎng)格計(jì)算協(xié)議體系結(jié)構(gòu),設(shè)計(jì)格式化的契約,使服務(wù)雙方達(dá)成以契約方式作為憑證,如圖2所示。在這個結(jié)構(gòu)中,各域描述如下:
契約版本:為了保證隨著技術(shù)的發(fā)展,保證契約的兼容性而設(shè)定。
契約生命期:表示服務(wù)請求者和服務(wù)代理雙方達(dá)成服務(wù)的最長有效時間,這里不是和服務(wù)提供者達(dá)成的協(xié)議,原因在于服務(wù)內(nèi)容在不同服務(wù)資源上的開始和截至?xí)r間是不同的。
圖2 結(jié)構(gòu)化的契約格式
用戶信息:通常為用戶標(biāo)識ID。它有兩個作用,首先,作業(yè)可能會需要多個基礎(chǔ)服務(wù)設(shè)施的項(xiàng)目,為了避免用戶多重注冊錄多個服務(wù)而引發(fā)的信任危機(jī),采用單點(diǎn)登錄和代理委托,方便于管理,支持便利安全的通信。其次,可以通過這個用戶ID允許契約的持有者可以到用戶目錄進(jìn)行查詢。它和信任路徑由可信第三方提供。
信任路徑:該域描述用戶到服務(wù)者之間的信任傳遞關(guān)系,它利用網(wǎng)格中安全通信與認(rèn)證授權(quán)控制的核心協(xié)議,同本地安全策略的整合和基于用戶的信任策略等功能,實(shí)現(xiàn)授權(quán)認(rèn)證和安全控制的描述。
作業(yè)描述和業(yè)務(wù)流程:該域根據(jù)定義請求的消息和語義格式描述了作業(yè)內(nèi)容和業(yè)務(wù)流程,描述實(shí)現(xiàn)協(xié)調(diào)各種資源之間的交互。它將分配的受控資源匯集在一起,形成粒度服務(wù)環(huán),供虛擬組織的應(yīng)用程序共享和調(diào)用,識別特殊結(jié)果和行為的條件,確定產(chǎn)生結(jié)果的處理、活動和步驟的流程。作業(yè)定義和業(yè)務(wù)流程由作業(yè)所有者提供。
服務(wù)描述:由資源所有者提供的服務(wù)單位,用于某個作業(yè)所提供的服務(wù)內(nèi)容的描述,包括:定義服務(wù)類型和描述服務(wù)的功能,敘述服務(wù)品質(zhì)和適用性的約束條件,定義服務(wù)所提供給預(yù)期用戶的價(jià)值,以及其他使用要求的約束條件。它起到控制局部資源的作用,它與服務(wù)實(shí)體從資源池目錄中獲得。
服務(wù)實(shí)體:網(wǎng)絡(luò)所能提供的服務(wù)分兩類,物理資源包括計(jì)算資源、存儲系統(tǒng)、目錄、網(wǎng)絡(luò)資源等;邏輯資源包括分布式文件系統(tǒng)、分布計(jì)算池、計(jì)算機(jī)群等。它們均由物理或邏輯實(shí)體組成,可以提供計(jì)算、帶寬、數(shù)據(jù)、知識、存儲、軟件、信息的服務(wù)內(nèi)容。
該格式化契約用于描述服務(wù)交互情況的一組規(guī)則,為作業(yè)調(diào)度提供了一種作業(yè)資源管理依據(jù),它的目的在于:
(1) 利用網(wǎng)格資源管理機(jī)制隱藏異構(gòu)性,為用戶提供統(tǒng)一的訪問接口;
(2) 屏蔽資源的動態(tài)性,保證用戶使用的質(zhì)量;
(3) 尊重資源的本地管理機(jī)制和策略;
(4) 提供了作業(yè)網(wǎng)格用戶信任的審查機(jī)制,確保網(wǎng)格資源的安全和資源擁有者的權(quán)益。最后將網(wǎng)格提供給作業(yè)的各種分散資源聯(lián)系起來,協(xié)作完成作業(yè)要求。
4 結(jié) 語
隨著網(wǎng)絡(luò)服務(wù)市場化商品化的進(jìn)步,以契約為規(guī)范服務(wù)提供者與作業(yè)所有者之間合約關(guān)系的形式必將成為資源分配的首選。本文從分析網(wǎng)格計(jì)算應(yīng)用入手,并結(jié)合網(wǎng)格體系結(jié)構(gòu),先后介紹了粒度、服務(wù)粒度、服務(wù)契約等概念,隨后提出一個結(jié)構(gòu)化契約格式的設(shè)計(jì)方案以供討論。由于目前對于服務(wù)契約的定義和結(jié)構(gòu)還沒有達(dá)成一個統(tǒng)一標(biāo)準(zhǔn),所以本文提出的結(jié)構(gòu)化契約模型具有一定現(xiàn)實(shí)意義,筆者將在后續(xù)的文章中做進(jìn)一步的闡述,以實(shí)現(xiàn)該結(jié)構(gòu)化的契約。
參考文獻(xiàn)
[1]FOSTERI, KESSELMAN C, TUECKE S. The anatomy of the grid: enabling scalable virtual organizations[J]. International Supercomputer Applications, 2001, 21(3): 1-4.
[2]FOSTERI, KESSELMAN C. Globus: a metacomputing infrastructure toolkit[J]. Intl. Supercomputer Applications, 1997, 11(2):115-128.
[3]GRIMSHAW A S, WULF W A, Legion Team. The Legion vision of a worldwide virtual computer[J]. Communications of the ACM, 1997, 40(1): 39-45.
[4]SEGAL B. Grid computing: the European data project[C]//IEEE Nuclear Science Symposium and Medical Imaging Conference. Lyon: IEEE, 2000:15-20.
[5]BUYYA R, ABRAMSON D, GIDDY J. Nimrod/G: an architecture for a resource management and scheduling system in a global computational grid[C]//Proc. of 4th Int. Conf. on High Performance Computing in Asia-Pacific Region. Beijing: HPCAPR, 2000: 283-289.
[6]SATO M, NAKADA H, SEKIGUCHIS, et al. Ninf: a network based Information library for a global world-wide computing infrastructure[C]//Proceedings of HPCN'97.[S.l.]: HPCN, 1997: 491-502.
[7]Z PAWLAK. Rough sets theoretical aspects of reasoning about data[M]. Dordrecht: Kluwer Academic Publishers, 1991.
[8]ZADEH L A. Fuzzy logic=computing with words[J]. IEEE Transactions on Fuzzy Systems, 1996, 4: 103-111.
[9]ZADEH L A. Towards a theory of fuzzy information granulation and its centrality in human reasoning and fuzzy logic[J]. Fuzzy Sets and Systems, 1997,19:111-127.