软件的社交能力

两个人之间互不相识,则无法交往,两个系统之间相互不能识别,那么也就不可能相互通讯。但是人有一种社交能力,这种能力可以保证两个不相识的人,相互认识,开始交往。两个系统之间没有这种能力,所以不能通讯,为了实现任意系统之间的通讯,则所有系统必须都具备社交能力。在网络上的一个具备社交能力的系统,可以在满足某些条件的情况下(比如闲的无聊,比如需要帮助等等),自动查找和自己一样具备社交能力的系统,找到之后,可以相互“握手”,相互“交谈”,进而可能开始通讯。两个模块之间可以自由的调用,也同样必须具备社交能力方可,一个模块可以自动找到附近的(比如某个或某些目录下)的具备社交能力的模块,询问这些模块能够实现什么功能,如果是自己需要的,则调用这些功能,否则继续寻找。
    人为甚么具备社交能力,因为人首先具备一些统一的接口,这些接口就是眼睛、耳朵、嘴巴、肢体、容貌等等,其次还具有一些社交的常识,例如见面之后的你好,握手,微笑,谈论简单的感兴趣的话题,等等,然后根据交流的内容决定是否继续交往,还是就此打住;两个系统或模块之间要进行通讯,应该具备社交能力,首先也必须具备一些一致的接口,具备一些系统之间通讯的常识,两个系统相遇之后,通过常识进行应答,应答之后决定是否继续交往。一个模块可以搜索自己的周围,看十分有具备“社交能力”的模块,如果有,则跟这些模块进行初步的“社交活动”,初步的社交活动之后,决定是否相互调用,也就是进一步的交往。
    这里的系统可以是同一个机器上的进程,也可以是不同机器上进程,系统之间的通信,可以理解为进程间的通信。 模块可以理解为一个个的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有关的设计之中。 
posted @ 2006-08-21 21:36  爱生活,爱编程  阅读(178)  评论(0编辑  收藏  举报