WF4.0实战(八):实现一套图形化的数据访问层
现在,估计三层架构仍然被程序员广泛使用。先列出这三层,不是怕大家不知道这三层,而是下文的需要,:)。
1、数据访问层
2、业务逻辑层
3、表示层
还有就是数据交换的实体层
很多程序员都用代码生成器,我也不另外。一般的代码生成器会帮助程序员生成数据访问层和业务逻辑层。由于表示层是千变万化的,是很难通过生成器生成出来的。当固定生成的业务层不能满足需求的时候。往往需要去手动的修改代码,这篇文章教你如何通过图形化的界面定制流程化的业务逻辑,无需修改你的代码。
先看下我的这套数据数据访问层的截图:
数据访问层:
订购产品的业务逻辑:
实体层:
应用层调用:
2 {
3 { "Request" , ListItem }
4 };
5
6 WorkflowInvoker.Invoke(new yewuloji(), input);
以上看了我的数据访问层的一个大概。
说明1:除了订购产品的业务逻辑,其他都是从代码生成器中生成的;
说明2:我的数据表操作都是sp。
下面叙述一下如何实现:
数据访问层:以一个添加操作为例,看下图:
这是微软新发布的WF4.0中的ado.net操作的活动,这里我用于调用已经生成好的基本存储过程。一个数据访问的xaml文件对应数据库中的一个sp。xaml文件以及对应数据库中的sp都是生成器自动生成的。
存储过程:自动产生的存储过程
这个例子的数据表结构:
Order是订单表,Item是订单项表,我要将要制定的业务是:订购一批产品,如果代码实现,方式是:在数据中Order表中新增一笔记录,接着将所有的订单项添加到Item表中,在此过程中要统计所有项的数量和价格,最后修改新增的Order表中的那笔记录的ItemCount和OrderPrice。
而在我的这套数据访问层中有下面两幅图的活动供你选择。第一副图是自定义的数据访问层的活动,第二副图是IF、Foreach等进行判断和循环还有事务等功能的WF4.0内置的活动。
通过拖拽上面两幅图的活动,我们就可以定制任意的复杂的业务逻辑,如下图。
调试和运行:
Demo使用代码:
2 i1.Price = 18;
3 i1.ProductName = "鼠标";
4 ItemInfo i2 = new ItemInfo();
5 i2.Price = 32;
6 i2.ProductName = "键盘";
7
8 ItemInfo i3 = new ItemInfo();
9 i3.Price = 5;
10 i3.ProductName = "键盘垫";
11
12
13 List<ItemInfo> li = new List<ItemInfo>();
14 li.Add(i1);li.Add(i2);li.Add(i3);
15
16 IDictionary<string, object> input = new Dictionary<string, object>
17 {
18 { "ItemList" , li }
19 };
20
21 WorkflowInvoker.Invoke(new Test2(), input);
结果:
优点:
1、业务逻辑用图形化表示,非常清晰。
2、可扩张性强,可以把常用的业务流程存放在DB中
3、容易维护,如果你的业务逻辑需要改动的时候。可以把业务逻辑的xaml文件拿出来。在vs或者宿主在windowsform、wpf中的wf4.0流程设计器进行修改。而无需从新修改和编译你的代码。
4、代码量少。由于sp、数据访问层、一般的业务逻辑都是自动生成的。只有一些复杂和特殊的业务逻辑需要人工去定制。
.......
缺点:
由于在普通的三层上加了工作流的思想,效率可能会有些损耗。有多少我没有测试过。
总结:这套数据访问层是从我现在的使用的数据访问层演变过来的。我将以前的代码统统的工作流化了。将.cs文件更改成了.xaml文件,但是还没有完善好。
代码:/Files/zhuqil/WorkflowConsoleApplication12.rar
(全文完)
以下为广告部分
您部署的HTTPS网站安全吗?
如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!
快速了解HTTPS网站安全情况。
安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。
安装部署SSL证书变得更方便。
SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。
让服务器远离SSL证书漏洞侵扰
TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。