ATK-DataPortal 设计框架(三)
边界清晰、服务自治、契约共享、基于策略的兼容性,是面向对向设计时四个基本原则,我们的应用可能分布在不同的环境之中,应用可能在同一服务器中,也可能在不同的网络环境中,保证框架的基类能在不同环境中仍然可用,也就是在分布式环境中仍然可用,是框架设计的一个目标。
为保证业务逻辑和数据访问能正确分离,框架设计了数据门户,以使在必要时,保证数据层和业务层分布在不同的逻辑环境中时业务访问仍然可用。
框架设计了两个数据门户,一是支持本地访问,二是支持WCF服务访问
数据门户的通过IDataPortal接口的类DataPortal<E>来实现的
一、IDataPortal接口
public interface IDataPortal<E> where E : BusinessBase, IBusinessBaseContext
{
OperateState Insert(E obj);
OperateState Delete(E obj);
OperateState Update(E obj);
E Fetch(E obj);
OperateState Execute(E obj);
}
实现了增删改查的基本数据方法,同时也定义了支持执行类型的数据操作Execute(E obj);方法。
二、DataPortal<E>类,是门户类的实现
public class DataPortal<E> : IDataPortal<E> where E : BusinessBase, IBusinessBaseContext
{
}
DataPortal<E>类简单的实现的IDataPortal接口所定义的方法,其实际的操作在两个代理类
三、LocalProxy<T>本地代理
本地代理主要是为当前前端和服务器端布署在应用服务中,此时,前端可直接访问到数据层,不需要复杂的操作。
四、WcfProxy<T> WCF代理
WCF代理类处理业务层和数据层不能直接访问,数据层中的业务是通过WCF服务向其他应用公开的,WcfProxy<T> 提供了一个一至的服务访问,所有基于ATK-DataPortal的基类实现的类,都可通过WcfProxy<T> 提供的方法正确访问。
----
ATK
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 设计框架(三)的更多相关文章
- 基于python的接口测试框架设计(三)接口测试的框架
基于python的接口测试框架设计(三)接口测试的框架 其实我这里用到的是unittest单元测试框架,,这个框架好就好在比较清楚,,setup terdown都可以处理一些初始化及完成后的工作 主要 ...
- MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...
- Origami – 用于 Quartz 的免费的交互设计框架
Origami 是一个为 Quartz Composer 开发的免费的工具包——由Facebook设计团队创建,让交互设计原型更加简单,不需要编程. 如今,大多数设计师通过创建静态原型来表达要实现的应 ...
- MVC实用架构设计(三)——EF-Code First(1):Repository,UnitOfWork,DbContext
前言 终于到EF了,实在不好意思,最近有点忙,本篇离上一篇发布已经一个多星期了,工作中的小迭代告一段落,终于有点时间来继续我们的架构设计了,在这里先对大家表示歉意. 其实这段时间我并不是把这个系列给忘 ...
- [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
本文转自:http://www.cnblogs.com/guomingfeng/p/mvc-ef-t4.html 〇.目录 一.前言 二.工具准备 三.T4代码生成预热 (一) 单文件生成:Hello ...
- 从零开始实现一个简易的Java MVC框架(三)--实现IOC
Spring中的IOC IoC全称是Inversion of Control,就是控制反转,他其实不是spring独有的特性或者说也不是java的特性,他是一种设计思想.而DI(Dependency ...
- 手把手和你一起实现一个Web框架实战——EzWeb框架(三)[Go语言笔记]Go项目实战
手把手和你一起实现一个Web框架实战--EzWeb框架(三)[Go语言笔记]Go项目实战 代码仓库: github gitee 中文注释,非常详尽,可以配合食用 本篇代码,请选择demo3 这一篇文章 ...
- MVC实用构架设计(三)——EF-Code First(6):数据更新最佳实践
前言 最近在整理EntityFramework数据更新的代码,颇有体会,觉得有分享的价值,于是记录下来,让需要的人少走些弯路也是好的. 为方便起见,先创建一个控制台工程,使用using(var db ...
- MVC实用架构设计(三)——EF-Code First(5):二级缓存
前言 今天我们来谈谈EF的缓存问题. 缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象.EF4开始会把查询语句编译成存储过程缓存在Sql Server中,据说 ...
- MVC实用架构设计(三)——EF-Code First(4):数据查询
前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...
随机推荐
- HTML的注释方式对JSP的JSTL不管用
<fmt:parseNumber var="y" integerOnly="true" type="number" value=&qu ...
- [转]NLog学习笔记二:深入学习
本文转自:http://www.cnblogs.com/CCHUncle/p/5207735.html 配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. ...
- flask-SQLAlchemy的ORM
1.创建表 import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import de ...
- PAT 1021 Deepest Root
#include <cstdio> #include <cstdlib> #include <vector> using namespace std; class ...
- PHP性能检测与优化—XHProf 数据阅读
PHP性能检测与优化—XHProf 数据阅读 一. 效果如下 请求总揽 函数调用情况 二. 参数含义 Inclusive Time 包括子函数所有执行时间 ...
- 如何才能快速入门python3?
一些朋友自学python过程中,发现书也能看懂,书上的玩具代码也能看懂,但为啥自己不能做习题,不能写代码解决问题,自己不能动手写代码? 原因是初学者没有学会计算思维.解决问题的方法.编程思路. 编程思 ...
- css浮动布局小技巧
父元素如何围住浮动的子元素的三种办法: 一.为父元素应用overflow:hidden. overflow真正用途是防止包含元素被大的内容撑开,设定了宽度之后,包含元素将超过容器的内容减掉:而它还有另 ...
- 我是一只IT小小鸟读书笔记3
Part6: 一. 无论在什么时候,师兄师姐都是我们最好的资源,遇到不会的问题一定要及时向他们请教,善于利用身边的人脉关系也是一个基本的技能. 二. 爱好很多,但特长一定要有.仔细思考一下 ...
- mvc页面间的传值
本文大致讲解mvc前后端的传值方式,包括control向view.view向control.以及action向action. 回顾 我们回顾下在ASP.NET WebForms中,页面之间最常用的传值 ...
- mongodb 3.4 学习 (五)备份&恢复
备份恢复命令 mongodump -h 127.0.0.1 -p 27017 -o /opt/backup -u app -p '@app' --collection demo --db app -- ...