2011年11月22日

使用Action表驱动代替switch…case语句

摘要: 大家都知道,代码中出现过多的if…else嵌套语句时很难读,所以常用switch…case语句进行代替,代码的可读性就好了很多。举个简单的例子:view sourceprint?01public void DoSomeThing(string str) 02{ 03if (str == "A") { 04DoSomethingForA(str); 05} 06else if (str == "B") { 07DoSomethingForB(str); 08} 09else if (str == "C") { 10DoSomething 阅读全文

posted @ 2011-11-22 23:59 Amos.Liu 阅读(245) 评论(0) 推荐(0)

6_CSLA.Net3.6中CommandBase类实践 .

摘要: CommandBase用来建立一个命令对象,就是执行一个批处理的命令来完成一个业务逻辑。它可以运行在客户端和服务器端。UI可以直接调用Command对象的方法。书中给的使用例子为判定业务对象是否存在,只有单一的功能。我为了把和此业务对象有关的所有操作都放到此类中,可能的操作有,根据属性判定业务对象是否存在、删除业务对象前的数据完整性检查、成批更新业务对象集合等。为此我采用了和ReadOnlyListBase相同的方法,增加一个操作类型,在调用参数中使用ReadOnlyBase的业务对象,这样可以传递尽可能多的参数,如果参数超出这个范围,你在特殊处理参数的传递和状态结果的返回。状态结果的返回采用 阅读全文

posted @ 2011-11-22 23:53 Amos.Liu 阅读(204) 评论(0) 推荐(0)

3_CSLA.Net中BusinessBase类实践 .

摘要: 下面以一个表为例详细说明数据库表单位信息表(SHOP_INFO)CREATE TABLE SHOP_INFO( SHOP_ID VARCHAR2(13) NOT NULL, UP_SHOP_ID VARCHAR2(13), SHOP_NAME VARCHAR2(40) NOT NULL, SHOP_ABBRE VARCHAR2(20), POST_ADDR VARCHAR2(50), SHOP_TYPE VARCHAR2(32), POST_CODE VARCHAR2(10), PRINCIPAL VARCHAR2(10), TELEPHONE VARCHAR2(15), MOBILE VAR 阅读全文

posted @ 2011-11-22 23:52 Amos.Liu 阅读(272) 评论(0) 推荐(0)

5_CSLA.Net3.6中ReadOnlyListBase类实践 .

摘要: ReadOnlyListBase类主要用来管理业务对象集合,并且是个只读的,在Web开发中比较适合,我们一般很少有可编辑的业务对象集合。ReadOnlyListBase返回的是强类型的业务对象实体集合。可以作为任何需要数据绑定的web控件上。ReadOnlyListBase与CSLA.NET的数据访问接口通过DataPortal.Fetch来得到数据。因为只一个Fetch方法,当继承此类的业务对象时有许多得到数据的方法,比如得到所有数据GetALL、得到某个部门下的所有子部门等,既对业务对象要求从不同角度来得到数据。为了解决这个问题,让我伤了点脑筋。先看下DataPortal.Fetch的声明 阅读全文

posted @ 2011-11-22 23:50 Amos.Liu 阅读(163) 评论(0) 推荐(0)

CSLA服务端如何使用多线程的解决方案

摘要: 前篇说到了使用异步线程来实现数据的预加载,以提高系统性能。 这样的操作一般是在客户端执行,用以减少用户的等待时间。客户端发送多次异步请求,到达服务端后,如果服务端不支持多线程处理操作,线性处理各个请求,必然导致客户端的异步请求变得没有意义。 大家肯定会说,谁会把服务端设计成单线程的啊,那不是明显的错误吗?是的!但是我们的系统使用了CSLA来作为实现分布式的框架,而它的服务端程序却只能支持单线程……这个问题我们一直想解决,但是查过CSLA官方论坛,作者说由于GlobalContext和ClientContext的一些原因,暂时不支持多线程。火大,这还怎么用啊!无奈目前系统已经极大地依赖了这个框架 阅读全文

posted @ 2011-11-22 23:47 Amos.Liu 阅读(190) 评论(0) 推荐(0)

和我一起学CSLA.NET----创建业务对象1

摘要: 我们已经准备好了环境,下面我们就来介绍CSLA业务对象的创建,如果你还没有下载CSLA,请在这里下载CSLA.NET,我们使用的是3.8.2版本(本来想使用4.0版本,后来发现是针对framework 4.0的)。 建立类库项目CSLADemo.Library,引用下载的Csla.dll和System.Windows.Interactivity.dll(CSLA依赖),另外还需要引用我们的linq项目。在这一节我们先介绍CSLA业务对象一些基础的东西的实现,在这里包括业务属性,基本业务方法,基本数据验证,以及基本的数据门户. 在这之前,先介绍一下CSLA的其中的几个主要的业务基类: C... 阅读全文

posted @ 2011-11-22 23:19 Amos.Liu 阅读(198) 评论(0) 推荐(0)

和我一起学CSLA.NET----设计模型及数据访问

摘要: 上一节和大家说了些CSLA.NET的一些功能,以及对这些功能提出一些疑问,从这一节开始,我们就带着这些问题,来学习CSLA 框架怎么使用。我并不打算在这里介绍CSLA框架的一些概念,如果你对面向对象这些概念仍然不是很熟悉的话,建议你还是大概看一下作者的书,我们还是采用CSLA.NET来结合实际使用完成一个简单的例子. 有很多人是先把数据库建好了再来用CSLA来写业务代码,有的是用Codesmith根据数据库生成。其实说实话这也未尝不可,不管黑猫白猫抓到耗子就是好猫嘛,呵呵,不过我个人认为这并不是最合理的,起码你在设计数据库时也应该考虑一下CSLA的业务对象怎么写,尤其是要考虑这些对象之间的.. 阅读全文

posted @ 2011-11-22 23:18 Amos.Liu 阅读(165) 评论(0) 推荐(0)

和我一起学CSLA.NET----创建业务对象2

摘要: 上一节我们已经创建了我们业务对象的属性和简单的验证规则,这一节我们主要来实现数据门户 ,首先先大概介绍一下CSLA数据访问相关的概念: Csla框架的数据门户通过通道适配器模式和消息路由模式合并起来,提供了对服务器上所有数据访问操作的一个简单明了的入口点。实际上,数据门户完全隐藏了服务器的参与,这就使得应用程序能在不改变代码的情况下,在两层和三层物理部署之间自由切换。数据门户有以下特点: 实现了移动对象 隐藏了网络传输(通道适配器) 暴露了对服务器的唯一入口点(消息路由) 暴露了服务器端资源(数据库引擎、分布式事务等) 统一了上下文(在客户端和服务器之间传递上下文) 数据门户强... 阅读全文

posted @ 2011-11-22 23:17 Amos.Liu 阅读(181) 评论(0) 推荐(0)

和我一起学CSLA.NET----创建业务对象3

摘要: 到现在为止, 我们已经为业务对象创建了属性,验证规则,数据门户.除了属性我们会直接使用,验证规则和数据门户我们不会手动直接调用的,而最通常调用的是我们的业务对象的工厂方法,在这一节,我们就为Product对象添加了些通用的工厂业务方法,并且介绍一下工厂方法调用的内部细节,以及业务对象的相关细节。 首先我们必须要了解一下业务对象的Save方法,这个方法是CSLA约定的基本业务对象BusinessBase<T>内置实现的,源代码如下:隐藏行号 复制代码 ? BusinessBase.Savepublic virtual T Save(){ T result; if (this.IsCh 阅读全文

posted @ 2011-11-22 23:16 Amos.Liu 阅读(156) 评论(0) 推荐(0)

转.如何在CSLA框架中,使用状态机工作流

摘要: 最近的一个项目里,使用了CSLA框架。CSLA有一个基本的设计原理,就是充分利用数据代理(同时规定BussinessObject is serializable),这个代理保证了csla的5层构架对各种物理部署构架的适应性。从它的框架可以看见,它的数据操作都是在DataPotol中定义,所以我们如果要在csla中使用工作流,切不可违反它的这一规定。DataPortalClient.IDataPortalProxy proxy; proxy = GetDataPortalProxy(method.RunLocal);普通的WebApplication的做法是在globel文件里加载工作流... 阅读全文

posted @ 2011-11-22 23:11 Amos.Liu 阅读(180) 评论(0) 推荐(0)

导航