WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(3):中看不中用的解... 阅读

适合C# Actor的消息执行方式(3):中看不中用的解决方案

 2010-09-30 20:50:26 来源:WEB开发网   
核心提示:在前两篇文章中,我们了解到Erlang中灵活的模式匹配,适合C# Actor的消息执行方式(3):中看不中用的解决方案,以及在C#甚至F#中会都遭遇的尴尬局面,那么现在就应该来设计一个解决方案了,“消息”其实是这么一种东西:“消息”表示“发送方”和

在前两篇文章中,我们了解到Erlang中灵活的模式匹配,以及在C#甚至F#中会都遭遇的尴尬局面。那么现在就应该来设计一个解决方案了,我们如何才能在C#这样的语言里顺畅地使用Actor模型呢?不仅如此,最好我们还能获得其它一些优势。

“消息”、“协议”和“接口”

Actor模型中的对象如果要进行交互,唯一的手段便是发送消息。不同语言/平台上的消息有不同的表现形式,但是它们所传递的信息是一致的:

做什么事情

做这件事情需要的数据

例如,Erlang中往往会使用Tag Message的格式作为消息:

{doSomething, Arg1, Arg2, Arg3, ...}

其中,原子doSomthing表示“做什么”,而后面的ArgN便是一个个的参数,使用Erlang中的模式匹配可以很方便地捕获消息中的数据。在C#等语言中,由于并非专为了Actor模型设计,因此一个Message往往只能是一个对象。但是这个对象的职责并没有减轻,因此我们需要自己处理的事情就多了。我们可能会这样做:

学Erlang的Tag Message,但是这样会产生大量丑陋的类型转换操作,并且丧失了静态检查功能。

为每种消息创建不同的Message类型,但是这样会产生大量类类型,每个类型又有各种属性,非常麻烦。

这两种做法在上一篇文章里都有过讨论,感兴趣的朋友可以再去“回味”一番。那么,究竟什么是消息呢?根据我的理解,“消息”其实是这么一种东西:

“消息”表示“发送方”和“接受方”之间的“通信协议”(例如Erlang中的“模式”)。

“消息”表示“发送方”要“接受方”所做的事情,但是并没有要求“接受方”需要怎么做。

1 2 3 4 5 6  下一页

Tags:适合 Actor 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接