軟體的社交能力
來源:互聯網
上載者:User
兩個人之間互不相識,則無法交往,兩個系統之間相互不能識別,那麼也就不可能相互連訊。但是人有一種社交能力,這種能力可以保證兩個不相識的人,相互認識,開始交往。兩個系統之間沒有這種能力,所以不能通訊,為了實現任意系統之間的通訊,則所有系統必須都具備社交能力。在網路上的一個具備社交能力的系統,可以在滿足某些條件的情況下(比如閑的無聊,比如需要協助等等),自動尋找和自己一樣具備社交能力的系統,找到之後,可以相互“握手”,相互“交談”,進而可能開始通訊。兩個模組之間可以自由的調用,也同樣必須具備社交能力方可,一個模組可以自動找到附近的(比如某個或某些目錄下)的具備社交能力的模組,詢問這些模組能夠實現什麼功能,如果是自己需要的,則調用這些功能,否則繼續尋找。
人為甚麼具備社交能力,因為人首先具備一些統一的介面,這些介面就是眼睛、耳朵、嘴巴、肢體、容貌等等,其次還具有一些社交的常識,例如見面之後的你好,握手,微笑,談論簡單的感興趣的話題,等等,然後根據交流的內容決定是否繼續交往,還是就此打住;兩個系統或模組之間要進行通訊,應該具備社交能力,首先也必須具備一些一致的介面,具備一些系統之間通訊的常識,兩個系統相遇之後,通過常識進行應答,應答之後決定是否繼續交往。一個模組可以搜尋自己的周圍,看十分有具備“社交能力”的模組,如果有,則跟這些模組進行初步的“社交活動”,初步的社交活動之後,決定是否相互調用,也就是進一步的交往。
這裡的系統可以是同一個機器上的進程,也可以是不同機器上進程,系統之間的通訊,可以理解為進程間的通訊。 模組可以理解為一個個的DLL,或COM組件,或.NET組件,模組之間的交往,也就是進程內部模組之間的通訊。
0):確定通訊方式,是使用Socket通訊,還是使用SendMessage,還是使用MailSlot,或者是,Net Remoting。首先以第一種方式Ask,如果沒有人回答,再使用第二種方式Ask。知道收到回覆。這就像你在大街上需要協助,或者希望跟別人聊天,你首先用漢語Ask,“誰能夠協助我?”,結果沒有人聽得懂;接著你用英語Ask,結果還是沒有人聽得懂,直到你用德語Ask,才有一個漂亮的小姐回答你。
1):確定系統基本的初步介面。例如Ask(bool bBroadcast,),Reply(),OnHeard()
2):確定系統社交的常識。A系統Ask之後,B系統安裝什麼方式回答,每一種回答具有哪些意義?A系統OnHeard()之後,應該如何回答,每一種回答又哪些意義。
3):兩個系統經過初步交往之後,發現有共同語言,A系統希望B系統提供自己關於青藏鐵路售票的資訊,B系統恰好有這些資訊,則兩個系統開始交換資料。
具備社交能力的軟體很有趣,要實現這樣的軟體,在系統整合方面將非常有用。或許,我會將這種軟體的設計模式,寫入我的關於UniObject有關的設計之中。