加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

关于CSLA的问题2

发布时间:2020-12-17 02:41:28 所属栏目:安全 来源:网络整理
导读:非常感谢phenixIII关于CSLA详细的回复! 数据绑定的确很棒,大大减少了界面的代码量。 服务器和客户端之间的通讯,CSLA利用"数据门户"进行了封装,达到了透明化,并通过配置可以动态更改,这一点确实做得也不错。 我还是有些问题,下面我举一个例子,假设我要

非常感谢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中,客户端和服务器之间的接口不够明确,不象一般的分布式程序,把界面和服务器之间的接口专门作为服务的形式提供出来,在服务层中就可以进行事务的控制,还可以做一些别的操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读