兩個(gè)人之間互不相識(shí),則無(wú)法交往,兩個(gè)系統(tǒng)之間相互不能識(shí)別,那么也就不可能相互通訊。但是人有一種社交能力,這種能力可以保證兩個(gè)不相識(shí)的人,相互認(rèn)識(shí),開(kāi)始交往。兩個(gè)系統(tǒng)之間沒(méi)有這種能力,所以不能通訊,為了實(shí)現(xiàn)任意系統(tǒng)之間的通訊,則所有系統(tǒng)必須都具備社交能力。在網(wǎng)絡(luò)上的一個(gè)具備社交能力的系統(tǒng),可以在滿足某些條件的情況下(比如閑的無(wú)聊,比如需要幫助等等),自動(dòng)查找和自己一樣具備社交能力的系統(tǒng),找到之后,可以相互“握手”,相互“交談”,進(jìn)而可能開(kāi)始通訊。兩個(gè)模塊之間可以自由的調(diào)用,也同樣必須具備社交能力方可,一個(gè)模塊可以自動(dòng)找到附近的(比如某個(gè)或某些目錄下)的具備社交能力的模塊,詢問(wèn)這些模塊能夠?qū)崿F(xiàn)什么功能,如果是自己需要的,則調(diào)用這些功能,否則繼續(xù)尋找。
人為甚么具備社交能力,因?yàn)槿耸紫染邆湟恍┙y(tǒng)一的接口,這些接口就是眼睛、耳朵、嘴巴、肢體、容貌等等,其次還具有一些社交的常識(shí),例如見(jiàn)面之后的你好,握手,微笑,談?wù)摵?jiǎn)單的感興趣的話題,等等,然后根據(jù)交流的內(nèi)容決定是否繼續(xù)交往,還是就此打住;兩個(gè)系統(tǒng)或模塊之間要進(jìn)行通訊,應(yīng)該具備社交能力,首先也必須具備一些一致的接口,具備一些系統(tǒng)之間通訊的常識(shí),兩個(gè)系統(tǒng)相遇之后,通過(guò)常識(shí)進(jìn)行應(yīng)答,應(yīng)答之后決定是否繼續(xù)交往。一個(gè)模塊可以搜索自己的周圍,看十分有具備“社交能力”的模塊,如果有,則跟這些模塊進(jìn)行初步的“社交活動(dòng)”,初步的社交活動(dòng)之后,決定是否相互調(diào)用,也就是進(jìn)一步的交往。
這里的系統(tǒng)可以是同一個(gè)機(jī)器上的進(jìn)程,也可以是不同機(jī)器上進(jìn)程,系統(tǒng)之間的通信,可以理解為進(jìn)程間的通信。 模塊可以理解為一個(gè)個(gè)的DLL,或COM組件,或.NET組件,模塊之間的交往,也就是進(jìn)程內(nèi)部模塊之間的通信。
1):確定通訊方式,是使用Socket通信,還是使用SendMessage,還是使用MailSlot,或者是,Net Remoting。首先以第一種方式Ask,如果沒(méi)有人回答,再使用第二種方式Ask。知道收到答復(fù)。這就像你在大街上需要幫助,或者希望跟別人聊天,你首先用漢語(yǔ)Ask,“誰(shuí)能夠幫助我?”,結(jié)果沒(méi)有人聽(tīng)得懂;接著你用英語(yǔ)Ask,結(jié)果還是沒(méi)有人聽(tīng)得懂,直到你用德語(yǔ)Ask,才有一個(gè)漂亮的小姐回答你。
2):確定系統(tǒng)基本的初步接口。例如Ask(bool bBroadcast,),Reply(),OnHeard()
3):確定系統(tǒng)社交的常識(shí)。A系統(tǒng)Ask之后,B系統(tǒng)安裝什么方式回答,每一種回答具有哪些意義?A系統(tǒng)OnHeard()之后,應(yīng)該如何回答,每一種回答又哪些意義。
4):兩個(gè)系統(tǒng)經(jīng)過(guò)初步交往之后,發(fā)現(xiàn)有共同語(yǔ)言,A系統(tǒng)希望B系統(tǒng)提供自己關(guān)于青藏鐵路售票的信息,B系統(tǒng)恰好有這些信息,則兩個(gè)系統(tǒng)開(kāi)始交換數(shù)據(jù)。
具備社交能力的軟件很有趣,要實(shí)現(xiàn)這樣的軟件,在系統(tǒng)集成方面將非常有用。