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注入漏洞检测。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述