如何在Akka.Net中建模DDD业务对象结构?

时间:2015-09-04 02:58:59

标签: akka.net

对于一个模拟为:

的想象层次结构
(defn map
  ([f coll]
     (lazy-seq
      (when-let [s (seq coll)]
        (if (chunked-seq? s)
          (let [c (chunk-first s)
                size (int (count c))
                b (chunk-buffer size)]
            (dotimes [i size]
              (chunk-append b (f (.nth c i))))
            (chunk-cons (chunk b) (map f (chunk-rest s))))
          (cons (f (first s)) (map f (rest s))))))))

或许层次结构可以更简单地实现为:

Tenancy

    TenancyUser

        TenancyUserAccounts

            TenancyUserAccount

                TenancyUserAccountItems

                    TenancyUserAccountAccountItem

我如何在代码中将其表示为Akka.net中Actors的层次结构?

我来自DDD背景,我确信一旦我理解它,这是一个直截了当的飞跃。实际上,要问这样一个根本简单的问题感觉有点尴尬但是你去了。新的闪亮和所有。

谢谢! R上。

1 个答案:

答案 0 :(得分:6)

很难说,因为DDD需要至少某种程度的专业知识而不是域名,这是建模的。通常,您通常以1-1的方式将聚合根实例映射到actor,即假设您的var orgExpandNode = $.fn.jqGrid.expandNode, orgCollapseNode = $.fn.jqGrid.collapseNode; $.jgrid.extend({ expandNode : function(rc) { if(this.getNodeChildren(rc).length===0){ $.ajax({ url : "http://localhost:8080/xx/", success : function(data) { var result = data; for(var i=0;i<result.length;i++){ grid.addChildNode(result[i].id,result[i].parent,result[i]); } result=[]; } }); } return orgExpandNode.call(this, rc); }, }); 是聚合根,它恰好由当时的一个有状态的actor扮演。它下面的所有实体都不是演员,只是普通的对象。

将每个域实体映射到单独的actor是没有意义的,因为相应于DDD原则,所有对依赖于聚合的实体的操作都应该通过聚合根本身来完成。