ATK-DataPortal 设计框架(一)
无论是简单的还是复杂的框架,总需要一个开始的原点,ATK-DataPortal中包含了所有基础类的定义。
一、业务框架基础类
1、BusinessBase:所有业务类的根类,要使用ATK库的类,必需继承此类。
2、BusinessEditBase:可编辑业务类根类;
3、BusinessListBase<D>:所有业务列表类的基类,要使用ATK库的列表类,必需继承此类,此类与BusinessBase。
(一)、业务类的基类 BusinessBase
[Serializable]
public abstract class BusinessBase : IBusinessObject, IBusinessTrace, IBusinessContext
{
}
由于此类是所有业务类的根类,要使其能适应大多应用场景,其功能不能定义过多,否则易形成藕合。框架本身是需要支持分布环境,因此定义了一些基本的能携带访问信息的属性。
1、AccessPath:当前访问是一个简单三层设计时,其值一为本地“Local-out”,当是通过WCF服务访问时,其值为WCF终结点名;
2、AccessAddress:当访问为本地访问时,其值为“Local Access”,当是通过WCF服务访问时,其值为WCF终结点设置的访问地址信息;
3、State:携带类访问数据时的附加信息,如数据访问记录数,是否访问成功,如果未访问成功,携带回访问错误信息。
4、Context:上下文管理,由DataPortalContext提供在客户端和服务器之间提供一致的上下文信息数据门户对象。
5、Criteria:类访问参数,为BusinessCriteria定义,是数据访问的重要信使;
6、Op:用户访问权限,由RecordOperater定义
这个类基本定义就这么多。
(二)、可编辑业务类 BusinessEditBase
此类直接继承于BusinessBase,没有增加更多的定义,为后期扩展时使用;
[Serializable]
public abstract class BusinessEditBase : BusinessBase
{
}
(三)、业务列表类的基类 BusinessListBase<D>
[Serializable]
public class BusinessListBase<D> : List<D>, IBusinessListObject, IBusinessTrace, IBusinessListContext
where D : BusinessBase
{
}
此类是所有业务列表类的根类,其中除其是列表业务类外,大多属性与业务类BusinessBase相同。
以上三个类型为整个框架的基本类型,定义简单,尽量设置成与用户界面无关类型。
二、基类是否过于简单
我们在设置框架时,需定义一些基础类型,我们并非是从一个毫无基础的情况下设置,不论是基于.Net的哪个版本,还是java还是其他别的语言等都有相应的非常丰富的基础框架库,这些基本框架定义了足够多功能的类型让我使用。
设计一个满足大多场景的框架,几乎是不太可能的,在面对不同的操作系统,不同的硬件交互,不同的交互协议。应用的本身是一系列消息的交互,这些消息要么显示出来让人类理解,要么转换成硬件所能理解的指令,本质上都是各种消息的传递和转换。我们所设计的类型、各种功能库,不过是去如何处理好这此消息,并将这些消息转化成各方理解的指令、信息。
当我们在经验尚少时,总是想设计出一个一蹴而就的类或库,最终在各种需求变化和技术变化中变得难以修改和使用,在不断的类型增加和修加,系统代码变得越来越难以维护,加之文档的缺失、开发人员的变动,最终变得无约可救,一功又回归重构,新的一次轮回再次上演。 低藕合、高内聚、分离关注点这些观点现在在大多数据开发人员熟悉,但要做到确实是一件较难的事,技术的传承本就是一件难事,企业的兴衰、市场的逐利,让我们不断的重复制造着轮子。
三、辅助类
1、BusinessCriteria:参数类
2、BusinessTraceSign:数据访问跟踪类;
----
1、一个完整支持分布式服务框架;
2、代码生成工具,可快速生成基于服务框架的应用;
3、其他支持库
4、完整代码可在GitHub的https://github.com/azthinker ;开源中国 https://gitee.com/azthinker
目标:使应用开发,低代码、高效率、快迭代
有兴趣的请在QQ群中参与讨论、联系作者 QQ群名称:ATK高效开发 ,QQ群号:747049962
也可发邮件至:azthinker@sina.com
Demo中的数据库、编译好的代码工具链接:https://pan.baidu.com/s/1B9RQm7_-SFyhLb_HLIGs0w 密码:85q6
ATK Demo使用的数据库 : https://download.csdn.net/download/xftyyyyb/10675497
ATK自动代码工具 :https://download.csdn.net/download/xftyyyyb/10675490
ATK-DataPortal 设计框架(一)的更多相关文章
- Origami – 用于 Quartz 的免费的交互设计框架
Origami 是一个为 Quartz Composer 开发的免费的工具包——由Facebook设计团队创建,让交互设计原型更加简单,不需要编程. 如今,大多数设计师通过创建静态原型来表达要实现的应 ...
- SOA之(2)——SOA架构基础概念与设计框架
SOA的设计框架 设计框架与架构相关的概念紧密相连,原则.模式和架构始终是与设计共舞的. SOA服务设计的原则中记录了一个基础的设计框架: 设计特性(Design Characteristic)——由 ...
- 仿知乎app登录界面(Material Design设计框架拿来就用的TexnInputLayout)
在我脑子里还没有Material Design这种概念,就我个人而言,PC端应用扁平化设计必须成为首选,手当其冲的两款即时通讯旺旺和QQ早就完成UI扁平化的更新,然而客户端扁平化的设计本身就存在天生的 ...
- Spark ML源码分析之一 设计框架解读
本博客为作者原创,如需转载请注明参考 在深入理解Spark ML中的各类算法之前,先理一下整个库的设计框架,是非常有必要的,优秀的框架是对复杂问题的抽象和解剖,对这种抽象的学习本身 ...
- 基于事件驱动的DDD领域驱动设计框架分享(附源代码)
原文:基于事件驱动的DDD领域驱动设计框架分享(附源代码) 补充:现在再回过头来看这篇文章,感觉当初自己偏激了,呵呵.不过没有以前的我,怎么会有现在的我和现在的enode框架呢?发现自己进步了真好! ...
- ATK 设计框架 之 Atk.CustomExpression
在ATK-DataPortal框架中的xxxHandel中常用到的一种类型,形如: 1.protected virtual D ItemHandle(D item, Func<E, E> ...
- ATK 设计框架辅助工具-代码生成器
在 ATK框架代码中的示例,是用代码生成器生成的. 示例中有三个项目DemoTools.BLL 业务层,DemoTools.UIServer 前端服务层,DemoTools.WebUI 前端是ASP. ...
- ATK-DataPortal 设计框架(三)
边界清晰.服务自治.契约共享.基于策略的兼容性,是面向对向设计时四个基本原则,我们的应用可能分布在不同的环境之中,应用可能在同一服务器中,也可能在不同的网络环境中,保证框架的基类能在不同环境中仍然可用 ...
- 十大响应式Web设计框架
http://www.csdn.net/article/2014-05-13/2819739-responsive-frameworks-for-web-design 对于设计师而言,网站设计中的任意 ...
随机推荐
- 如何设计一个“高大上”的 logo
前不久,我们老大写的一篇博客< Coding,做一个有情怀的产品 >中有提到设计 Coding logo 的大致由来,今天我就设计 Coding 猴头的过程具体说说如何设计一个 logo. ...
- 10 个最佳的 Node.js 的 MVC 框架
补充:http://nokit.org/ https://thinkjs.org/zh-cn/doc/index.html Node.js 是一个基于Chrome JavaScript 运行时建立的一 ...
- Sql批处理语句
同时写3个批处理,如果前2个批处理没有问题,最后一个有错误那么3个批处理都不会执行需要注意列如: use Materl GO select * from t_icitem GO inset into ...
- 02.List泛型集合
List泛型可以转换成数组 List泛型和数组的相同点: List泛型的数据类型必须是指定的,数组的数据类型也必须是指定的. List泛型和数组的不同点: List泛型的长度是随意的,而数组的长度必须 ...
- 深入Java字符串
深入Java字符串 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 一.从根本上认识java.lang ...
- css 平行四边
在视觉设计中,平行四边形往往给人一种动感. 要生成一个平行四边形,只要通过css变形,就可做到: -webkit-transform: skewX(-45deg); 那么生成一个平行四边形的按钮呢?列 ...
- python数据分析工具安装集合
用python做数据分析离不开几个好的轮子(或称为科学棧/第三方包等),比如matplotlib,numpy, scipy, pandas, scikit-learn, gensim等,这些包的功能强 ...
- SharePoint 2013 - Upgrade
1. 升级到SP2013时,需要对data connection文件(UDCX文件)进行修改: 1. Mark all UDCX File (Ctrl + A) and open them. 2. F ...
- 【JS 综合】JS综合
视频教程链接:http://www.xuexi111.com/s/javascript/ 张孝祥:http://www.21edu8.com/pcnet/programming/26685/
- jquery-tags-input 使用经历
源代码里有这么一段,是在tagsInput这里,第一次初始化的时候是正常的,但当第二次初始化的时候就会出现问题,id的值会组合为 id+new Date().getTime() 暂时不清楚作用是什么 ...