專利名稱:用于一個可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
所描述的技術(shù)通常涉及數(shù)據(jù)通信,并且更具體而言涉及一個用于可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)。
背景技術(shù):
不同的通信應(yīng)用程序和協(xié)議使得在軟件程序和用戶之間的通信成為可能。例如,諸如“MICROSOFT WINDOWS MESSENGER”和基于Internet協(xié)議(VoIP)的實時通信應(yīng)用程序使得用戶之間進行通信,互相發(fā)送文本,視頻,或聲音數(shù)據(jù)。這些應(yīng)用程序可以使用多種協(xié)議,例如會話啟動協(xié)議(“SIP”),實時傳輸協(xié)議(“RTP”),以及實時控制協(xié)議(“RTCP”),以建立會話和發(fā)送通信相關(guān)信息。SIP是一個應(yīng)用層控制協(xié)議,設(shè)備可以通過其來發(fā)現(xiàn)另一個設(shè)備,并且在設(shè)備間建立,修改,和中止會話。RTP是一個用于在Internet上傳送聲頻和視頻的協(xié)議,并且通常與其他協(xié)議,例如RTCP和H.323,用于流媒體系統(tǒng)和視頻會議中。RTCP是一個使得客戶應(yīng)用程序監(jiān)視和控制使用RTP發(fā)送和接收的數(shù)據(jù)的協(xié)議,并且與RTP一起使用,SIP和RTP/RTCP被稱為Internet提議的標準。它們的規(guī)范,“RFC3261”和“RFC 3550”分別可通過Internet在www.ietf.org的/rfc/rfc3261.txt以及www.faqs.org的/rfcs/rfc3550.html上得到,并且其整體包括在此作為參考。
應(yīng)用程序可以附加地使用其他協(xié)議。應(yīng)用程序可以使用上述指出的協(xié)議的增強型版本或與其他被分配來承載特定數(shù)據(jù)的協(xié)議一起工作。舉例來說,當一個新的或是改進的用于承載視頻會議信息的的改進的協(xié)議變得可用時,建立或改變一個應(yīng)用程序的開發(fā)者可能期望使用新的或改進的協(xié)議,例如,提高性能或提供其他的特性。為了使用新的或改進的協(xié)議,應(yīng)用程序開發(fā)者可能需要修改與通信協(xié)議交互的部分,因為一個協(xié)議的改進或一個新的協(xié)議可能具有與現(xiàn)在正在使用的協(xié)議不同的接口。舉例來說,當一個協(xié)議可具有NewSession接口來建立新的會話時,改進的版本可能具有一個StartSession方法來建立和開始一個會話,并接受附加的參數(shù)。由于StartSession接受附加的參數(shù),它的接口不同于NewSession,并且這樣可能需要修改使用NewSession的應(yīng)用程序以使用StartSession。當一個協(xié)議具有不同接口,應(yīng)用程序開發(fā)者可能需要了解不同的接口并修改他們的協(xié)議以使這些接口使用該協(xié)議。
應(yīng)用程序開發(fā)者可能需要熟悉他們在他們開發(fā)的應(yīng)用程序中使用的多種通信協(xié)議的每一個的細節(jié)。舉例來說,當一個應(yīng)用程序開發(fā)者使用SIP和RTP/RTCP,應(yīng)用程序開發(fā)者將需要熟悉所有的三個協(xié)議,以提供與協(xié)議相關(guān)的程序邏輯。不熟悉這所有三個協(xié)議的應(yīng)用程序開發(fā)者將需要附加的培訓(xùn)和時間來了解這些協(xié)議。此外,當將要修改應(yīng)用程序以與其他的或者改進的協(xié)議一起工作時,應(yīng)用程序開發(fā)者將需要修訂或增加程序邏輯,使得應(yīng)用程序可以與這些協(xié)議一起運行。這將導(dǎo)致附加的開發(fā)費用和難度。
此外,不同的協(xié)議表現(xiàn)出不同的復(fù)雜度。例如,為了在應(yīng)用程序中提供視頻會議功能,該應(yīng)用程序的開發(fā)者將必須熟悉多種協(xié)議,并提供邏輯以協(xié)調(diào)這些協(xié)議來增加視頻會議功能。將其他的協(xié)作性能增加到一個應(yīng)用程序,例如文本消息,語音消息等,表現(xiàn)出其他類似的復(fù)雜度。
這樣,一個用于可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)將具有重大的實用性,其中該結(jié)構(gòu)使得在應(yīng)用程序中加入?yún)f(xié)作性能而不需要巨大的開發(fā)者培訓(xùn)投資。
發(fā)明內(nèi)容
提供了一個用于可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)。該結(jié)構(gòu)提供了一個單一的應(yīng)用程序接口(“API”)。該結(jié)構(gòu)具有活動對象,端點對象,以及多個媒體棧。這些對象可以使用多種通信協(xié)議,例如會話啟動協(xié)議或?qū)崟r傳送協(xié)議,以發(fā)送和接收包含信息的消息?;顒訉ο?,端點對象,以及多個媒體??梢跃哂幸粋€或多個API,應(yīng)用程序開發(fā)者可以使用這些API來接入或提供協(xié)作相關(guān)的功能。這些對象將API映射到由其他對象提供的基礎(chǔ)設(shè)施上。使用活動對象使得開發(fā)者提供更少的應(yīng)用程序邏輯,否則將需要提供復(fù)雜的協(xié)作服務(wù)。
圖1是說明一個實施例中用于一個可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)的組件的框圖。
圖2是說明一個實施例中的可擴展實時協(xié)作系統(tǒng)的端點對象的組件的框圖。
圖3是說明一個實施例中的可擴展實時協(xié)作系統(tǒng)的活動對象的組件的框圖。
圖4是說明一個實施例中的創(chuàng)建服務(wù)器端點例程的流程圖。
圖5是說明一個實施例中用于一個可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)的結(jié)構(gòu)圖。
具體實施例方式
在一個實施例中,提供了一種用于可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)。該結(jié)構(gòu)提供了一個高級應(yīng)用程序編程接口(“API”),用于編寫使用通信協(xié)議以提供協(xié)作服務(wù)的應(yīng)用程序。應(yīng)用程序開發(fā)者可以通過使用API來給應(yīng)用程序增加協(xié)作服務(wù),而不需要了解與若干個執(zhí)行該服務(wù)的基礎(chǔ)協(xié)議相關(guān)的復(fù)雜度。
該結(jié)構(gòu)包括活動對象,端點對象和多個媒體棧。這些這些對象可以使用多種通信協(xié)議,例如SIP或RTP/RTCP,以發(fā)送和接收包含信息的消息。每個活動對象,端點對象,以及多個媒體棧可以具有一個或多個API,應(yīng)用程序開發(fā)者可以使用這些API來接入或提供由對象提供的功能。應(yīng)用程序開發(fā)者可以選擇提供一個使用由端點對象提供的API的應(yīng)用程序邏輯,或者可以選擇提供一個使用由活動對象提供的API的應(yīng)用程序邏輯。通過使用有端點對象和媒體棧提供的API,應(yīng)用程序開發(fā)者可以行使高度的靈活性,但是可能必須提供比如果僅僅使用活動對象的API更多的應(yīng)用程序邏輯。一個應(yīng)用程序開發(fā)者可以因為很多原因選擇使用活動對象的API?;顒訉ο蟮腁PI提供了一個比端點對象和媒體棧更高級的接口。此外,活動對象協(xié)調(diào)端點對象和媒體棧,并且這樣可以不需要提供應(yīng)用程序邏輯以執(zhí)行協(xié)調(diào)。
活動對象向應(yīng)用程序和其他對象提供服務(wù)?;顒訉ο笫鞘沟脩?yīng)用程序參與多個特定活動的對象,并且可以包括,例如,瞬時消息,電話會議,視頻會議,應(yīng)用程序共享,以及其他活動?;顒訉ο罂梢詾檎J為是“包裝”對象,其提供基礎(chǔ)對象的功能,基礎(chǔ)對象包括端點對象和媒體棧。尤其是活動對象調(diào)節(jié)端點對象和媒體棧,以使用活動對象,例如應(yīng)用程序,提供無縫和集成的會話到另一個對象。
下面的例子提供了使用活動對象的優(yōu)點的另一個例子。應(yīng)用程序開發(fā)者可能期望在應(yīng)用程序里提供視頻會議性能。為了這樣,應(yīng)用程序開發(fā)者將首先對信令協(xié)議,例如SIP,以及媒體協(xié)議,例如RTP/RTCP非常熟悉。接下來,應(yīng)用程序開發(fā)者需要提供應(yīng)用程序邏輯以創(chuàng)建會話,確定所期望的與之進行視頻會議的人是否當前在線,發(fā)送一個加入視頻會議的邀請,協(xié)商與視頻會議相關(guān)的各種參數(shù),從聲音和視頻捕捉硬件中捕捉音頻和視頻,并且最終使用RTP/RTCP交換音頻/視頻數(shù)據(jù)。相反的,通過使用該結(jié)構(gòu)的視頻會議活動對象,許多這樣的步驟被取消了,因為是視頻會議活動對象是特別設(shè)計來將該應(yīng)用程序邏輯合并到多個更高級接口中的。該接口具有類似的多種用于其它協(xié)作活動的活動對象。此外,該接口以供將來增加附加活動對象的支持。
一個端點對象提供管理服務(wù),例如信令。端點對象包括簡檔,公布/預(yù)定,信令,和協(xié)議棧組件。簡檔組件可以包括通過一個API的用戶的摘錄。公布/預(yù)定組件提供跟蹤關(guān)用戶的存在和可用性信息的接口。信令組件可以用來提供或接收與建立或控制會話有關(guān)的稀有的事務(wù)處理消息。信令組件還可以用于協(xié)商,例如,帶寬限制的媒體參數(shù)。協(xié)議棧組件被簡檔,公布/預(yù)定,信令組件使用,以發(fā)送和接收數(shù)據(jù),并支持不同的協(xié)議,包括SIP。
如前所述,活動對象提供了一個是應(yīng)用程序開發(fā)者很容易地將協(xié)作服務(wù)加到應(yīng)用程序的軟設(shè)備(facility)。例如,一個期望在應(yīng)用程序中增加視頻會議的應(yīng)用程序開發(fā)者可能提供建立(或“啟動”)一個視頻會議活動對象的邏輯。該視頻會議活動對象可能然后啟動一個用于信令(例如SIP端點對象)的端點對象,以及一個用于承載音頻/視頻數(shù)據(jù)的消息媒體棧。在隨后的視頻會議活動中(例如,當發(fā)送或接收一個音頻/視頻流),活動對象可以調(diào)節(jié)其創(chuàng)建和啟動的對象。在一個實施例中,該應(yīng)用程序可以建立對象,并且優(yōu)選地,向該活動對象提供一個對象指示。在這樣的情況下,活動對象不需要創(chuàng)建這些對象。
媒體棧對象提供內(nèi)容通信服務(wù),例如處理音頻/視頻數(shù)據(jù)流。舉例來說,媒體棧對象可能使用RTP/RTCP來發(fā)送或接收有關(guān)視頻會議的視聽信息。
現(xiàn)在轉(zhuǎn)到附圖,圖1是說明一個實施例中用于可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)的組件的框圖。該用于一個可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)包括一個協(xié)作服務(wù)對象102,多端點對象104,活動對象106,以及多個媒體協(xié)議棧108。一個或多個應(yīng)用程序110可以同過接入不同的與該結(jié)構(gòu)有關(guān)的方法,屬性和事件利用該結(jié)構(gòu)。寫應(yīng)用程序的程序開發(fā)者可能可以通過使用一個單一的API而不需要學習和使用該應(yīng)用程序或該結(jié)構(gòu)可能使用的用于每一個媒體棧、協(xié)議或其他組件的不同API,來利用該結(jié)構(gòu)。
該協(xié)作服務(wù)對象102提供一個用于應(yīng)用程序的軟設(shè)備,來共享多端點對象,并且可以提供一個通過多個端點對象的相容API。例如,如果端點對象1提供了一個與接收(或發(fā)送)信息相關(guān)的接口,并且端點對象2類似地提供一個與接收(或發(fā)送)信息相關(guān)的接口,但是該兩接口使用不同的名稱,但卻執(zhí)行類似的功能,該協(xié)作服務(wù)對象可以為兩個接口提供一個通用的名字。當應(yīng)用程序開發(fā)者在應(yīng)用程序中使用這個通用的名字時,并且當該協(xié)作服務(wù)對象正在使用一個提供具有不同的名稱的接口的新的或修訂的對象時,該應(yīng)用程序開發(fā)者可不需要修改這個應(yīng)用程序。
端點對象104提供了一個用于發(fā)信號給其他對象的軟設(shè)備。例如,在兩個進行會話的端點對象之間可以使用信令,這樣一個端點對象可以邀請或請求其他的端點對象去實施活動或交換與該會話相關(guān)的信息。例如,一個端點對象可邀請會話的另一個端點對象進入一個瞬時消息對話,并且隨后可以發(fā)送與該對話有關(guān)的文本消息。下面將參考圖2詳細描述端點對象。
活動對象是使得應(yīng)用程序參加多個協(xié)作相關(guān)活動的組件。這些組件提供一個應(yīng)用程序開發(fā)者可以用來協(xié)調(diào)端點對象和媒體棧的API。下面將參考圖3詳細描述活動對象106。
媒體棧對象108提供內(nèi)容通信服務(wù),例如,處理數(shù)據(jù)流,并且提供用于其它對象的API已發(fā)送或接收數(shù)據(jù)。該結(jié)構(gòu)能夠通過該結(jié)構(gòu)不需要分辨數(shù)據(jù)或媒體類型的事實,來實際上支持無限數(shù)量的媒體棧。結(jié)果,可以如需求變化,增加新的媒體?;蛐薷拿襟w棧。媒體棧的一個例子是RTP/RTCP。該媒體??捎糜诎l(fā)送視聽信息。
圖2是說明一個實施例中的可擴展實時協(xié)作系統(tǒng)的端點對象的組件的框圖。端點對象提供管理服務(wù),例如向其他對象發(fā)信號的軟設(shè)備。在兩個進行會話的端點對象之間可以使用信令,這樣一個端點對象可以邀請或請求其他的端點對象去實施活動或交換與該會話相關(guān)的信息。例如,一個端點對象可邀請會話的另一個端點對象進入一個瞬時消息對話,并且隨后可以發(fā)送與該對話有關(guān)的文本消息。
該結(jié)構(gòu)可以支持多種不同的端點對象,并且每一種端點對象可以多次啟動。例如,可以存在一種與用戶的個人Internet服務(wù)供應(yīng)商賬號相關(guān)的端點對象(例如,MSN.COM),以及另一種與用戶的公司Internet賬號相關(guān)的端點對象(例如,MICROSOFT.COM)。用戶可以在多種設(shè)備(例如,手提計算設(shè)備和桌上計算設(shè)備)上使用個人賬號登陸到服務(wù)供應(yīng)商,并且可以在一些設(shè)備(例如桌上計算設(shè)備)上使用公司帳號登陸。這樣,可以存在兩種關(guān)于與個人賬號相關(guān)的URI的情況。則端點對象的個人情況可以由統(tǒng)一資源定位器(“URI”)和一個端點標示符(“EID”)。例如,端點對象可以由URI user@MSN.COM以及由EID“1234”來識別。如前所述,EID可以用來特別地將一個端點對象情況和另一個與相同URI相關(guān)的端點對象的情況區(qū)別開來。
端點對象可以提供一個“數(shù)據(jù)”接口以及一個“信令”接口。該數(shù)據(jù)接口可以包括與由該端點對象公布或預(yù)定的數(shù)據(jù)有關(guān)的方法,事件和屬性。通過公布和預(yù)訂該數(shù)據(jù),應(yīng)用程序可以提供數(shù)據(jù)或被通知數(shù)據(jù)的變化。信令接口可以提供與端點對象的信令控制有關(guān)的方法,事件和屬性。例如,信令特性可以包括創(chuàng)建或參加會話,加入或離開會話,接受或拒絕邀請,以及其他信號。
所說明的端點對象200包括一個簡檔組件201,公布和預(yù)定組件202,信令組件204,以及協(xié)議棧組件206。
簡檔組件可以通過API提供用戶的摘錄。其為用戶維護服務(wù)有關(guān)的信息,例如,電子地址(例如,URI),用于服務(wù)供應(yīng)商的信用證,服務(wù)供應(yīng)商的狀態(tài),性能,以及政策。用戶可以具有多個與不同服務(wù)供應(yīng)商的簡檔。當創(chuàng)建與其他用戶的會話時,可以使用該簡檔,例如,來提供用戶的URI。簡檔組件可以提供方法以登陸或退出與服務(wù)供應(yīng)商有關(guān)的用戶。
公開/預(yù)定組件提供跟蹤有關(guān)用戶的存在和可用性的信息的接口。在場信息涉及用戶是否在一個特定計算設(shè)備上存在。可用性信息是涉及存在的用戶是否可用于接收一個消息或樂意這么做。舉例來說,蜂窩電話的用戶可能在蜂窩電話接通在場,但是當時用戶正在接聽一電話而無法進行消息會話。類似的,已經(jīng)在MICROSOFT WINDOWS MESSENGER中設(shè)置了“忙”指示的用戶可能在場,但是無法發(fā)送消息。
作為另外的例子,在場的對象可提供有關(guān)在場的且能夠使用一個計算設(shè)備參與MICROSOFT WINDOWS MESSENGER對話,并且能夠使用一個蜂窩電話村與一個視頻會議的用戶的信息。當用戶不再登陸到MICROSOFT WINDOWS MESSENGER時,在場的對象可以更新該信息,以便使用在場的對象的應(yīng)用程序能夠確定用戶不再在場或能夠參與MICROSOFT WINDOWS MESSENGER對話。這樣,在場信息指示用戶或其他對象是否在場。不同的服務(wù)供應(yīng)商或協(xié)議可以使用不同的機構(gòu)來產(chǎn)生或提供在場信息。這樣,應(yīng)用程序開發(fā)者不需要知道產(chǎn)生或者提供在場信息的多種方式,應(yīng)用程序開發(fā)者可以使用端點對象來產(chǎn)生或使用在場信息。
公布/預(yù)定組件提供了一個預(yù)定接口來創(chuàng)建對另一個對象的公開的預(yù)定,一個公布接口來提供對其他對象的預(yù)定,并且通知該接口來接收有關(guān)誰的公布已經(jīng)被預(yù)訂了的服務(wù)。這些接口使得應(yīng)用程序使用組件來提供,接收,或跟蹤在場信息。例如,當用戶使用個人計算機參與MICROSOFT WINDOWS MESSENGER會話時,并且使用蜂窩電話參與一個電話會議時,公布/預(yù)定組件可檢測和報告用戶在兩個位置的存在。一個URI和EID可以共同唯一地識別端點對象的情況。由于用戶可以同時在多個位置上出現(xiàn),該用戶的URI可以被指示為在這多個位置處存在。增加的與給定URI有關(guān)的EID提供了一個機構(gòu)來唯一指示一個特定的存在情況。
可以提供關(guān)于多種不同信息的通知。舉例來說,可以提供關(guān)于用戶是否在線,忙,可用,出去吃午飯等的通知。也可以提供關(guān)于用戶地理位置(例如由全球定位系統(tǒng)或“GPS”提供的),接觸信息,日歷信息,出辦公室消息,音頻/視頻性能等的通知。
信令組件可以用來提供或接收有關(guān)建立或控制會話的稀有的,事務(wù)處理消息。該組件也可用于協(xié)商,例如每秒幀的媒體流。
協(xié)議棧對象負責使用協(xié)議來發(fā)送和和接收消息。例如,SIP可以被用來發(fā)送或接收信令信息。在多個實施例中,可以同等地使用其他協(xié)議。在一個實施例中,一個端點對象可能與多種協(xié)議兼容。在這種情況下,根據(jù)需要,端點對象可以使用多種協(xié)議來發(fā)送和接收信息??商娲?,該結(jié)構(gòu)可以如分離的端點對象一樣支持多端點對象協(xié)議。在這樣的情況下,一個端點對象可以用于SIP,另一個用于其他的協(xié)議。
圖3是說明一個實施例中的可擴展實時協(xié)作系統(tǒng)的活動對象的組件的框圖?;顒訉ο笙驊?yīng)用程序和其他對象提供服務(wù)?;顒訉ο笫鞘箲?yīng)用程序參與到多個特定活動的對象,并且可以包括例如瞬時消息,電視會議,視頻會議,應(yīng)用程序共享以及其他活動。活動對象可以被認為是“包裝”對象,其提供基礎(chǔ)對象,包括端點對象和媒體棧的功能。尤其是,活動對象調(diào)整端點對象和媒體棧來提供無縫和綜合會話到使用活動對象的對象,例如應(yīng)用程序。
每個活動對象提供使得一個應(yīng)用程序使用該對象來參與多種活動的功能。舉例來說,活動對象可以封裝信令或媒體信息。在這其中,活動對象可以用作為信令和媒體之間的橋梁,這樣向使用活動對象的應(yīng)用程序提供了綜合視圖。例如,應(yīng)用程序?qū)H僅請求一個視頻會議而不是需要建立一個分離的SIP和RTP/RTCP連接和會話。將在下面說明描述活動的例子。
一個協(xié)作會話活動對象304使得應(yīng)用程序向應(yīng)用程序用戶提供協(xié)作服務(wù)。作為一個例子,協(xié)作會話活動對象將可以使得兩個用戶通過創(chuàng)作一個共享文檔來協(xié)調(diào)兩個不同的計算機。
一個應(yīng)用程序共享活動對象310使得一個使用應(yīng)用程序共享活動對象的應(yīng)用程序來提供有關(guān)在使用不同計算設(shè)備的用戶之間應(yīng)用的共享的功能。舉例來說,兩個用戶可以共享一個“白板(whiteboard)”應(yīng)用程序,例如,用戶使用該應(yīng)用程序提供其他用戶可以觀看和操作的可視信息。
一個消息活動對象306提供了使應(yīng)用程序向應(yīng)用程序的用戶提供消息性能的能力。舉例來說,應(yīng)用程序開發(fā)者可能希望能夠在其創(chuàng)建的應(yīng)用程序中進行信息傳遞。舉例來說,當兩個用戶通過同時創(chuàng)建一個文檔來在一個文檔上協(xié)作,用戶可能希望能夠在協(xié)作期間互相發(fā)送文本消息或參與一個視頻會議。在這樣的情況下,應(yīng)用程序開發(fā)者可以使用一個協(xié)作會話活動對象,并且使用消息傳遞或視頻會議活動對象來使得用戶在協(xié)作期間協(xié)作或互相交換消息。
視頻會議活動對象308向應(yīng)用程序提供視頻會議軟設(shè)備。視頻會議可以涉及發(fā)送和接收視聽信息。
也設(shè)計了附加活動對象,并且被表示為活動對象312。
應(yīng)用程序開發(fā)者可以通過利用這些對象提供的API來使用上述的對象結(jié)構(gòu)(以及那些沒有列出和描述的結(jié)構(gòu))。這些對象可以提供一個容易使用的API,這樣應(yīng)用程序開發(fā)者可不需要參考由基礎(chǔ)組件提供的API,這些基礎(chǔ)組件提供與活動對象相關(guān)的服務(wù)。舉例來說,消息傳遞服務(wù)供應(yīng)商可以提供一個開發(fā)者能夠使用的API。為了這樣,該開發(fā)者可能需要花費時間來了解API,該API可能非常復(fù)雜。替代的,該開發(fā)者可能希望使用一個由該結(jié)構(gòu)的對象提供的簡單的API。此外,該對象可能包括被要求使用多種不同的對象步驟。舉例來說,應(yīng)用程序開發(fā)者希望在兩個計算機之間交換消息,這些計算機可能需要利用一個由SIP提供的API,以及由另一個提供消息傳遞服務(wù)的另一個低級對象暴露(expose)的API。相反,該應(yīng)用程序開發(fā)者將僅僅需要使用消息傳遞活動對象,并且由此能夠更容易地將應(yīng)用程序增加消息傳遞功能。此外,該構(gòu)架可以操作為協(xié)調(diào)多個對象,由此需要應(yīng)用程序開發(fā)者更少的編程邏輯。
在一個實施例中,協(xié)作會話包含和使用活動對象。
圖4是說明一個實施例中創(chuàng)建服務(wù)器端點例行程序的流程圖。該例行程序由一個應(yīng)用程序調(diào)用以創(chuàng)建一個連接到服務(wù)器的端點對象。當創(chuàng)建一個連接到服務(wù)器的端點時,其公布的信息對于預(yù)定的對象是可用的,甚至在創(chuàng)建的端點不再操作之后。這樣,連接到服務(wù)器的端點可以提供一個“per-URI”信息,該信息意味著在該對象的生命周期之后該信息仍維持可用。
例行程序在方框402開始。在方框404,例行程序建立一個新的端點對象,并指示端點與一個應(yīng)用程序有關(guān)??梢詫⒃撝甘镜膽?yīng)用程序作為參數(shù)來創(chuàng)建建立端點的功能。當創(chuàng)建一個端點時,將提供一個“友好的”名稱,以便該端點可以由友好的名稱來指示。可選的,新近創(chuàng)建的端點可以由一個與端點相關(guān)的唯一標示符來指示。當創(chuàng)建對象時,該唯一的標識符可以由系統(tǒng)來產(chǎn)生。
在方框406,基于創(chuàng)建的端點,該應(yīng)用程序可以注冊該新近創(chuàng)建的端點對象到服務(wù)器,以允許服務(wù)器將該消息路由到該端點。一接收到來自該端點對象的注冊請求,該服務(wù)可以向該端點發(fā)出一個詢問。該詢問可以包含一由用戶使用的“領(lǐng)域”。領(lǐng)域可以指示與服務(wù)器相關(guān)的域名。例如,服務(wù)器可以發(fā)出具有領(lǐng)域“MICROSOFT.com”的詢問。
在方框408,例行程序響應(yīng)由于應(yīng)用程序相關(guān)的信用證提供的詢問(例如,用戶ID和密碼)。這些信用證可以由一個用戶或者自動地提供。服務(wù)器可以驗證例行程序提供的信用證。該信用證可以與領(lǐng)域相關(guān)。例如,如果應(yīng)用程序提供與服務(wù)器領(lǐng)域(“MICROSOFT”)不相關(guān)的信用證,該服務(wù)器可能不鑒別該應(yīng)用程序。
如果,注冊成功,該端點可以很容易地從其他對象接收消息。否則,端點不能接收消息。
在412例行程序返回到它的調(diào)用程序。1在一個實施例中,服務(wù)器可以使用一個沒有成功注冊的端點發(fā)送消息但是不接收消息??蛇x的,在一個更差安全性的模型中,服務(wù)器可以使得任何端點發(fā)送和接收消息。
在一個實施例中,當端點嘗試發(fā)送消息時服務(wù)器可以詢問一個端點,但是當其接收消息時不詢問。
在可選例行程序中(未示出),可以創(chuàng)建一個對等的端點。對等端點是不與服務(wù)器相關(guān)的端點。當端點不與服務(wù)器相關(guān)時,該一旦端點停止操作,端點公布的信息可能不可用。
圖5是說明一個實施例中用于一個可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)的結(jié)構(gòu)圖。該結(jié)構(gòu)包括一個活動對象502,端點504,以及一個多個媒體棧對象506。這些對象已經(jīng)很詳細的討論過了。該結(jié)構(gòu)圖表明了一個實施例中活動對象,端點對象,以及媒體棧對象之間的關(guān)系。特別的,該結(jié)構(gòu)圖表明了由活動對象提供的功能包括又端點和媒體棧對象提供的功能。
在一個實施例中,多活動對象可能相應(yīng)于媒體棧對象來使用。
應(yīng)用程序調(diào)用該結(jié)構(gòu)的對象的方法(or程序method),或者可以直接調(diào)用執(zhí)行功能的基礎(chǔ)對象的方法。通過調(diào)用結(jié)構(gòu)對象的方法,應(yīng)用程序開發(fā)者只需要提供更少的邏輯,并且當基礎(chǔ)組件改變時,不需要改變應(yīng)用程序的邏輯。
下面說明了一些由該結(jié)構(gòu)提供的API。
應(yīng)用程序可以通過創(chuàng)建一個新的“協(xié)作端點”來創(chuàng)建一個端點對象。該應(yīng)用程序可以提供下列參數(shù)一個與端點對象有關(guān)的URI,一個與端點對象相關(guān)的服務(wù)器,以及一個網(wǎng)絡(luò)信用證的指示。
NetworkCredential方法提供了網(wǎng)絡(luò)信用證的指示。該方法接受用戶賬戶的指示,密碼,以及與該賬戶相關(guān)的域。
一個Enter方法注冊該端點,并提供成功或失敗的指示。該方法不需要參數(shù)。
一個公布方法公布在場的信息。例如,應(yīng)用程序可以表明用戶在線,下線,忙,在打電話等。該結(jié)構(gòu)足夠靈活以提供虛擬的無限數(shù)量的在場指示。例如,應(yīng)用程序可以選擇公布用戶的GPS位置。
相反,Subscribe方法預(yù)定一個端點的對象公布。
Invite方法邀請一個用戶協(xié)作會話。該方法接收應(yīng)當被邀請的URI的指示。
一個Accept方法接收一個邀請。相反地,一個Decline方法拒絕該邀請。
一個消息傳遞活動對象可以從一個InstantMessagingActivity組中創(chuàng)建。該活動對象支持不同的方法,包括,例如,發(fā)送消息的方法,Sendmessage。
Sendmessage方法發(fā)送一個消息。其接收一個消息串作為參數(shù)。
方法可以由多個結(jié)構(gòu)的對象提供。該結(jié)構(gòu)可以附加地提供方法,屬性,和與提取一個用戶簡檔,將用戶增加到聯(lián)系人列表,從對話中增加或刪除參與者有關(guān)的事件。
在其上實現(xiàn)該結(jié)構(gòu)的計算設(shè)備可以包括一個中央處理單元,存儲器,輸入設(shè)備(例如,鍵盤和定點設(shè)備)。存儲器和存儲設(shè)備是可包含執(zhí)行該系統(tǒng)的指令的計算機可讀媒體。此外,數(shù)據(jù)結(jié)構(gòu)和消息結(jié)構(gòu)可以通過數(shù)據(jù)傳輸媒介存儲或傳送,例如在傳輸鏈路上的信號??梢允褂枚鄠€通信鏈路,例如Internet,局域網(wǎng),廣域網(wǎng),或點到點撥號連接。
該結(jié)構(gòu)可以在多種操作環(huán)境下執(zhí)行,包括運行了MICROSOFT WINDOWS操作系統(tǒng)的計算設(shè)備。該操作環(huán)境僅僅是一個適合的操作環(huán)境的例子,并且不作為使用和系統(tǒng)功能的范圍的限制。其他已知的計算系統(tǒng),環(huán)境,以及可以適用于使用包括個人計算機,服務(wù)器計算機,包括“智能”蜂窩電話的手持或膝上電腦設(shè)備,微處理器系統(tǒng),基于微處理器的系統(tǒng),可編程消費電子設(shè)備,網(wǎng)絡(luò)PC,迷你計算機,主機計算機,包括上述任何一個系統(tǒng)或設(shè)備的分布式計算環(huán)境,等等。
該結(jié)構(gòu)可以在由一個或多個其它設(shè)備執(zhí)行的通用的計算機可執(zhí)行指令設(shè)備環(huán)境中描述,例如程序模塊。通常,程序模塊包括例行程序,程序,對象,組件,數(shù)據(jù)結(jié)構(gòu)等等,其執(zhí)行特定的任務(wù)或執(zhí)行特定的提取數(shù)據(jù)類型。典型地,程序模塊的功能可以如上述多個實施例所描述的進行組合或分離。
從上述可知,可以理解為了說明的目的,描述了本發(fā)明的特定實施例,但是在不偏離本發(fā)明的精神和范圍的前提下,可以作出許多不同的改變。因此,本發(fā)明僅僅由所附的權(quán)利要求來限制。
權(quán)利要求
1.一種由計算系統(tǒng)執(zhí)行的用于在應(yīng)用程序中提供實時協(xié)作服務(wù)的方法,包括例示活動對象,該活動對象具有用于提供協(xié)作服務(wù)的應(yīng)用程序接口;以及調(diào)用應(yīng)用程序接口的方法,調(diào)用的方法在正在傳遞協(xié)作服務(wù)的信息的應(yīng)用程序之間提供管理服務(wù)和內(nèi)容通信服務(wù)。
2.根據(jù)權(quán)利要求1的方法,其特征在于,端點對象提供管理服務(wù)。
3.根據(jù)權(quán)利要求2的方法,其特征在于,端點對象使用會話啟動協(xié)議。
4.根據(jù)權(quán)利要求1的方法,其特征在于,媒體棧對象提供內(nèi)容通信服務(wù)。
5.根據(jù)權(quán)利要求4的方法,其特征在于,媒體棧對象使用實時傳輸協(xié)議。
6.根據(jù)權(quán)利要求4的方法,其特征在于,媒體棧對象實時控制協(xié)議。
7.根據(jù)權(quán)利要求1的方法,其特征在于,管理服務(wù)包括提供在場信息。
8.根據(jù)權(quán)利要求1的方法,其特征在于,內(nèi)容通信服務(wù)包括提供媒體。
9.一種可擴展實時協(xié)作系統(tǒng),其特征在于,包括多個媒體棧對象端點對象,該端點對象用于提供或接收信令信息;以及多個活動對象,其中所述活動對象向應(yīng)用程序提供應(yīng)用程序接口,并且使用多個媒體棧對象和端點對象來提供協(xié)作服務(wù),此外,該應(yīng)用程序使用應(yīng)用程序接口,并且不需要提供邏輯來協(xié)調(diào)媒體棧對象和端點對象。
10.根據(jù)權(quán)利要求9的可擴展實時協(xié)作系統(tǒng),其特征在于,即使當兩個實際上提供相關(guān)功能的基礎(chǔ)對象使用不同接口名稱時,應(yīng)用程序接口也提供一致的接口名稱。
11.根據(jù)權(quán)利要求9的可擴展實時協(xié)作系統(tǒng),其特征在于,協(xié)作服務(wù)的其中之一是消息傳遞。
12.根據(jù)權(quán)利要求9的可擴展實時協(xié)作系統(tǒng),其特征在于,協(xié)作服務(wù)的其中之一是視頻會議。
13.根據(jù)權(quán)利要求9的可擴展實時協(xié)作系統(tǒng),其特征在于,協(xié)作服務(wù)的其中之一是應(yīng)用程序共享。
14.根據(jù)權(quán)利要求9的可擴展實時協(xié)作系統(tǒng)增加媒體棧對象。
15.根據(jù)權(quán)利要求9的可擴展實時協(xié)作系統(tǒng),其特征在于,端點對象包括一個簡檔組件,一個公布和預(yù)定組件,一個信令組件,以及一個協(xié)議棧組件。
16.根據(jù)權(quán)利要求15的可擴展實時協(xié)作系統(tǒng),其特征在于,協(xié)議棧組件使用會話啟動協(xié)議。
17.根據(jù)權(quán)利要求15的可擴展實時協(xié)作系統(tǒng),其特征在于,協(xié)議棧組件使用信令協(xié)議。
18.根據(jù)權(quán)利要求9的可擴展實時協(xié)作系統(tǒng),其特征在于,多個媒體棧對象的其中之一使用實時傳輸協(xié)議。
19.根據(jù)權(quán)利要求18的可擴展實時協(xié)作系統(tǒng),其特征在于,協(xié)議棧組件使用會話啟動協(xié)議。
20.根據(jù)權(quán)利要求18的可擴展實時協(xié)作系統(tǒng),其特征在于,協(xié)議棧組件使用信令協(xié)議。
21.根據(jù)權(quán)利要求18的可擴展實時協(xié)作系統(tǒng),其特征在于,活動對象在應(yīng)用程序的指導(dǎo)下協(xié)調(diào)多個媒體棧對象的其中之一和端點對象。
22.一種計算機可讀媒介,具有用于提供可擴展實時協(xié)作系統(tǒng)的計算機可執(zhí)行指令,包括提供與具有實現(xiàn)方式的實時協(xié)作組件有關(guān)的應(yīng)用程序接口;接收具有另一個實現(xiàn)方式的另一個實時協(xié)作組件;以及即使實時協(xié)作組件的實現(xiàn)方式與另一個實時協(xié)作組件的實現(xiàn)方式不一致,提供與該另一個實時協(xié)作組件有關(guān)的應(yīng)用程序接口。
23.根據(jù)權(quán)利要求22的計算機可讀媒介,其特征在于,位于實時協(xié)作組件之下的一個組件具有與其他實時協(xié)作組件不同的應(yīng)用程序接口名稱。
24.根據(jù)權(quán)利要求22的計算機可讀媒介,其特征在于,包括基于來自應(yīng)用程序的協(xié)作請求協(xié)調(diào)兩個實時協(xié)作組件。
全文摘要
提供了一個用于可擴展實時協(xié)作系統(tǒng)的結(jié)構(gòu)。該結(jié)構(gòu)提供了一個單一的應(yīng)用程序接口,用于編寫使用通信協(xié)議的應(yīng)用程序。該結(jié)構(gòu)具有活動對象,端點對象,以及多個媒體棧。這些對象可以使用多種通信協(xié)議,例如會話啟動協(xié)議或?qū)崟r傳送協(xié)議,以發(fā)送和接收包含信息的消息?;顒訉ο螅它c對象,以及多個媒體??梢跃哂幸粋€或多個API,應(yīng)用程序開發(fā)者可以使用這些API來接入或提供協(xié)作相關(guān)的功能。這些對象將API映射到由其他對象提供的基礎(chǔ)實現(xiàn)上。使用活動對象使得開發(fā)者提供比提供復(fù)雜協(xié)作服務(wù)所必需的應(yīng)用邏輯更少的應(yīng)用邏輯。
文檔編號G06F9/38GK1668038SQ20041009019
公開日2005年9月14日 申請日期2004年10月22日 優(yōu)先權(quán)日2003年10月23日
發(fā)明者A·保德拉, K·甘尼桑, M·韓, N·P·鮑勃德, A·P·奇突利, B·H·奧斯特格倫, R·J·奧斯勃尼, W·V·巴克利 申請人:微軟公司