[原创].NET 分布式架构开发实战五 Framework改进篇

时间:2022-08-28 22:58:04

原文:[原创].NET 分布式架构开发实战五 Framework改进篇

.NET 分布式架构开发实战五 Framework改进篇

  前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变。之前的文章,园子里的朋友给出了不少的反馈,特别感谢金色海洋和Virus两位朋友的一些反馈。周末的这两天,对文章中开发的那个Framework做了一些改进,虽然说系列文章会慢慢的给出代码,但是这两天的一些想法让我很兴奋,迫不及待的和大家分享一下,也当是对文章中以后给出的Framework先睹为快吧。

  系列文章链接:

[原创].NET 分布式架构开发实战之一 故事起源

[原创].NET 分布式架构开发实战之二 草稿设计

[原创].NET 分布式架构开发实战之三 数据访问深入一点的思考

[原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇)

[原创].NET 分布式架构开发实战五 Framework改进篇

[原创].NET 业务框架开发实战之六 DAL的重构

[原创].NET 业务框架开发实战之七 业务层初步构想

[原创].NET 业务框架开发实战之八 业务层Mapping的选择策略

[原创].NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略

[原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(前篇)

[原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇)

  本篇文章涉及技术不多,主要是些想法(代码部分正在实现)。

  最主要的改进主要在于业务层开发的简化。

  大家都知道系统的核心就是业务逻辑层了,业务逻辑的代码往往得我们一行行的敲代码,而且不同的系统,每次都得一行一行的重头来写,这样的开发的效率可想而知了。基于这个原因,所以很有必要用一些工具和方法来加速开发。

  经过这两天的思考,个人认为最大的改进就是:业务逻辑类的图形化配置。我先给出图的示例,然后再详细的说明这个思想。

[原创].NET 分布式架构开发实战五 Framework改进篇

  大家知道,在一个BLL类中包含了大量的业务规则和验证规则,而且这些规则往往需要手工来写,特别是一个业务类的一些属性,要对他们的数据类型,长度,格式,状态更改跟踪,是否可以读写等进行验证,虽然说现在已经有了一些类库可以使用,如Enterprise Library中的Validation组件,但是我们还是要写代码,如果把这些规则通过图形化的拖拽的方式,或者图形的配置方式来生成C#代码,然后需要定制的部分再手动的修改,这样开发就简化多了(甚至可以把自动生成的代码和需要手写的代码分别放在partial类中,大家可以想想VS中开发Window程序时,VS就把那些自动生成的代码放到了另外的一个partial类中)。用过Enterprsie Library的朋友已经很清楚那个图形化配置工具的威力。

  首先,来看第一个图(设计的草图)。

[原创].NET 分布式架构开发实战五 Framework改进篇

  当我们新添加了一个业务类的以后,假设这个业务类的为 Product,在”解决方案”管理器中点击右键,选择”配置业务类”,就会弹出图形化的配置窗体,从草图中可以看出:

1.       Properties,为业务类添加的属性。

2.       DataProvider,这个配置表明了业务类使用哪个数据提供者:AdoDotNetProvider,LinqProvider,EntityFrameworkProvider.(这些Provider就是之前DAL系列文章最终会完成的那些Provider)

3.       MappingType这个业务类和那个数据来源体映射,这里有两个选择:DataTable,DataEntity(Linq实体或者EF实体,DataTable 的改进是来源于金色海洋和virus,thanks)

4.       MappingTypeName:这个配置项就表明这个业务类会和哪个数据来源体的属性进行映射,如,在上面选择了MappingType为DataEntity,而且选择DataEntity的名字MS_Product(通过Linq生成的实体,对应数据库中的MS_Product表)。当然,一个业务类的属性字段可能来自多个DataEntity的组合,所以,这里的MappingTypeName是多个。

  下面来看第二个草图。

[原创].NET 分布式架构开发实战五 Framework改进篇

这个图的出现时当点击了第一个图中的Properties出现的,这个界面就是专门来配置业务类的具体的属性的。

    Name:就是属性的名字。

    MappingTo:就是指出要和哪个数据实体的哪个属性映射。(之前第一个界面已经制定的数据实体)。

    ValidationRules:用来指定为这个属性使用哪些规则。

    下面就来看看第三个草图。

[原创].NET 分布式架构开发实战五 Framework改进篇

    这个草图和之前的第二个草图类似,只补过这个界面是专门用来给特定的属性配置验证规则的。

    就介绍到这里了,希望大家以后多多提出意见,便于进一步的改进,最后开发的Framework会以源代码的形式给出的。

    

   版权为小洋和博客园所有,转载请标明出处给作者。

    http://www.cnblogs.com/yanyangtian

[原创].NET 分布式架构开发实战五 Framework改进篇的更多相关文章

  1. [原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇)

    原文:[原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇) .NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇) 前言:上一篇文章讲述了一些实现DAL的理论,本 ...

  2. [原创].NET 分布式架构开发实战之三 数据访问深入一点的思考

    原文:[原创].NET 分布式架构开发实战之三 数据访问深入一点的思考 .NET 分布式架构开发实战之三 数据访问深入一点的思考 前言:首先,感谢园子里的朋友对文章的支持,感谢大家,希望本系列的文章能 ...

  3. [原创].NET 分布式架构开发实战之二 草稿设计

    原文:[原创].NET 分布式架构开发实战之二 草稿设计 .NET 分布式架构开发实战之二 草稿设计 前言:本篇之所以称为草稿设计,是因为设计的都是在纸上完成的.反映了一个思考的过程. 本篇的议题如下 ...

  4. [原创].NET 分布式架构开发实战之一 故事起源

    原文:[原创].NET 分布式架构开发实战之一 故事起源 .NET 分布式架构开发实战之一 故事起源 前言:本系列文章主要讲述一个实实在在的项目开发的过程,主要包含:提出问题,解决问题,架构设计和各个 ...

  5. NET 分布式架构开发项目实战

    .NET 分布式架构开发项目实战 从头到尾,一步一步讲述一个真实的项目实战,关注点主要是架构的思考和实现,以及如何解决平时项目遇到的一些问题. 同时也司公布源代码. 如何构建高性能,稳定SOA应用之- ...

  6. [原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇)

    原文:[原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) .NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) 前言:接着上篇来. 系列文章链接: [ ...

  7. [原创].NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略

    原文:[原创].NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略 .NET 业务框架开发实战之九 Mapping属性原理和验证规则的实现策略 前言:之前的讨论一直关注在怎么从D ...

  8. [原创].NET 业务框架开发实战之八 业务层Mapping的选择策略

    原文:[原创].NET 业务框架开发实战之八 业务层Mapping的选择策略 .NET 业务框架开发实战之八 业务层Mapping的选择策略 前言:在上一篇文章中提到了mapping,感觉很像在重新实 ...

  9. [原创].NET 业务框架开发实战之七 业务层初步构想

    原文:[原创].NET 业务框架开发实战之七 业务层初步构想 .NET 业务框架开发实战之七 业务层初步构想 前言:本篇主要讲述如何把DAL和BLL衔接起来. 本篇议题如下: 1.       DAL ...

随机推荐

  1. LVS原理详解

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  2. Python爬虫学习笔记——豆瓣登陆(一)

    #-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import html5lib import re import ...

  3. iOS开发——数据持久化Swift篇&(三)SQLite3

    SQLite3 使用 //******************** 5.3 SQLite3存储和读取数据 func use_SQLite3() { //声明一个Documents下的路径 var db ...

  4. 关于Android API的理解

    举个例子: 比如程序中用到了android.content.ClipboardManager这个类, 而该类是在API 11才添加到 “库”. (原谅我,不理解Google API 文档里的 adde ...

  5. canvas实现俄罗斯方块

    好久没使用canvas了,于是通过写小游戏"俄罗斯方块"再次熟悉下canvas,如果有一定的canvas基础,要实现还是不难的.实际完成的Demo请看:canvas俄罗斯方块 . ...

  6. MySql 双主多从配置指导

    MySql 双主多从配置指导 一.背景 互联网项目为了数据的可靠性和架构的可拓展性经常会用到双主多从的数据库,来实现数据的备份.负载均衡和突发状况时数据库切换. 二.思路 配置两台数据库A.B互为主从 ...

  7. Mawawa CSS 学习之旅 Display

    CSS 类型之 Display 更新时间: 2018-2-10: 一个良好的布局结构从 display 开始! 分类:外部值.内部值.列表值.属性值.混合值.显示值.全局值: 一.外部值 作用:主要用 ...

  8. DBC格式解析(以文本形式打开)

    我们先来看一段数据 BO_ 1024 VOLTAGE01: 8 BMS2 SG_ V01 : 7|16@0+ (0.001,0) [0|0] "" Vector__XXX SG_ ...

  9. Head First HTML和CSS(一)

    Web语言 HTML和CSS是我们用来创建网页的语言. Web服务器存储并提供由HTML和CSS创建的网页,浏览器获取页面,并根据HTML和CSS显示网页的内容 HTML是超文本标记语言(HyperT ...

  10. 【Leetcode】【Medium】Word Break

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...