关于CSLA的问题2

非常感谢phenixIII关于CSLA详细的回复!

数据绑定的确很棒, 大大减少了界面的代码量。

服务器和客户端之间的通讯,CSLA利用"数据门户"进行了封装,达到了透明化,并通过配置可以动态更改,这一点确实做得也不错。

我还是有些问题,下面我举一个例子,假设我要添加一个User, 并且记录操作日志, 以前的分布式程序(采用WebService)大约是这样的.

    public class UserManagerService : WebService

    {

        public void AddUser(User user, int operatorId)

        {

            using (TransactionScope ts = new TransactionScope())

            {

                //做添加用户的具体事情

                DbHeper.Insert(user);



                //记录操作日志

                Log.Add("添加用户" + user.Name, operatorId);



                ts.Complete();

            }

        }



        public User[] GetUserList()

        {

            //...

        }

    }

 客户端调用是这样的:

User user = new User(); 

user.Id = GetId(); 

user.Name = txtName.Text; 

//... 

UserManagerService service = new UserManagerService(); 

service.AddUser(user, GetCurrentOperatorId());

采用CSLA,大致是这样

public class User : BusinessBase<User>

{    

      //工厂方法    

      public static User NewUser()    

      {    

      }

     public static void SaveUser(User user, int operatorId)    

     {        

             user.Save();

             Log.Add("添加用户" + user.Name, operatorId);    

    }

}

请问,事务控制的代码放在哪里? 不能放在工厂方法里,因为工厂方法SaveUser是在客户端进程中执行的. 我觉得CSLA中, 客户端和服务器之间的接口不够明确, 不象一般的分布式程序,把界面和服务器之间的接口专门作为服务的形式提供出来, 在服务层中就可以进行事务的控制,还可以做一些别的操作.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值