带着问题去思考,大家好!

前几天了解到EF Core的开发模式:DB First(数据库优先),Model First(模式优先),Code First(代码优先)。

我所接触的大多是DB First。如果大家了解的话,有些开源后台项目,基本都会有后两者,因为方便大家更快的去使用部署起来后台。

在建议的Layered ['leɪəd] Architecture [ˈɑːrkɪtektʃər]模式中,---表示层,业务层和数据层,其后Evans分析并引入两个关键变化。

一:将关注点放到layer上,而不是tier。layer是应用程序组件之间的逻辑分隔,而tier是物理上不同的应用程序和服务器。

二:识别的层数分为4各层-表示层-应用层-领域层和基础结构层

整体式应用程序

  我们都知道程序都是自底向下设计,我们都是围绕着数据模型来进行开发设计,其中的过程以及尤其依赖数据模型的用户界面和体验。

   在整体式应用程序中,数据从底部的持久化存储到前端,然后在返回。

  根据分层架构,我们都知道,从存储到前端以及从前端到存储。我们不应该考虑把应用程序堆栈分成两部分吗?独立处理命令堆栈和读堆栈对于开发是不是更加有效果呢?所以NOSql存储来了,使得经典的RDBMS系统开始支持XML和JSON。这也正式Command and Query Responsibility Segregation(CQRS)模式的使用。

以上是结合CQRS设计的分层架构模式

CQRS方法

CQRS不是万能的,重要的是他的思想。

  有经验的开发人员知道。创建一个理想的数据模型,使其能够将关系数据模型的原则和最终用户实际需要的视图的复杂性结合起来是很困难的。如果只有一个应用程序堆栈,就只能有一个面向持久化的数据模型,但是需要调整这个模型,使其能够有效的满足前端的需求。特别是与某种方法学(如领域驱动设计的额外的抽象层结合起来时),后端(业务逻辑和数据访问逻辑)的设计很容易变得一团乱。

  以上问题。CORS通过将设计问题分解为两个较小的问题,新应用程序架构设计解决问题,并不释施加外部约束,使设计变得更加简单。具有不同的堆栈的好处是,容易为实现名利和查询使用不同的对象模型。有必要,可以为命令使用一个完整的领域模型,为表示使用一个定制的普通的数据传输对象,可能这些对象从SQL查询具体化的,需要多个表示前端,只需要额外创建读模型。整体复杂度是个体复杂度的和,而不是笛卡尔积。

  1:不同的数据库

  分解成不同的堆栈有一些问题,两个堆栈同步问题,数据命令写入能够被一致地读回?根据自身业务,CQRS实现可以基于一种两种数据库,如果使用一个共享数据库,共享数据库确保了经典的ACID一致性,只需要在读堆栈中的普通查询做一些额外的工作。

  性能和扩展行,可以考虑为命令堆栈和读堆栈使用不同的持久化端点。

  

什么时候用CQRS?

这是一种模式,CQRS架构模式主要是被设计来解决高并发业务场景的性能问题。

基础结构层的构成

基础结构层是与使用具体的技术相关的所有东西,包括数据持久化O/RM框架(EF),外部的Web服务,特定的安全API,日志记录,跟踪,IOC容器,缓存等。最突出的是组件的持久化层,也就是数据访问层。

持久化层 缓存层 外部服务这些已经非常成熟,不在这里赘述。

EF Core-1的更多相关文章

  1. EF Core 数据库迁移(Migration)

    工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用  Pomelo.EntityFrameworkCore.MySql   源代码地址(https://github. ...

  2. Asp.net Core 通过 Ef Core 访问、管理Mysql

    本文地址:http://www.cnblogs.com/likeli/p/5910524.html 环境 dotnet Core版本:1.0.0-preview2-003131 本文分为Window环 ...

  3. EF Core 杂记

    本系列文章,将介绍本人在学习和使用EF Core的过程中的收获与心得. 或许有的地方讲的错误 欢迎大家批评指出. 1.EF Core 数据库迁移(Migration)

  4. MySQL官方.NET Core驱动已出,支持EF Core

    千呼万唤始出来MySQL官方.NET Core驱动已出,支持EF Core. 昨天MySQL官方已经发布了.NET Core 驱动,目前还是预览版,不过功能已经可用. NuGet 地址:https:/ ...

  5. EF Core 1.0 和 SQLServer 2008 分页的问题

    EF Core 1.0 在sqlserver2008分页的时候需要指定用数字分页. EF Core1.0 生成的分页语句中使用了 Featch Next.这个语句只有在SqlServer2012的时候 ...

  6. EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

    官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大 ...

  7. EF Core CodeFirst实践 ( 使用MS SqlServer)

    这里使用 MS SQLSERVER ,网上大多使用 SQLite 先来一个CodeFirst 新建项目 这里我们选择  ASP.NET Core Web Application (.NET Core) ...

  8. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

    ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...

  9. ASP.NET Core 开发 - Entity Framework (EF) Core

    EF Core 1.0 Database First http://www.cnblogs.com/linezero/p/EFCoreDBFirst.html ASP.NET Core 开发 - En ...

  10. 再谈EF Core内存数据库单元测试问题

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:在用EF Core的内存数据库进行单元测试的时候遇到"无法访问已释放的对象& ...

随机推荐

  1. 实现api开发实例页面

    主要实现功能: 1.通过点击不同的option选项,自动生成不同的代码. 功能分析: 1.点击不同的option选项,这里其实就是使用了一个事件即onchange,把这个事件放在<select& ...

  2. tomcat——nginx负载均衡

    Tomcat一般应用在这种小型系统中应用非常广泛,是开发调试jsp的首先应用.Tomcat和其他web软甲一样具有解析HTML语言的功能,但是处理效率远不及Apacge和Nginx,所以Tomcat一 ...

  3. 垃圾回收GC

    ​ 每种语言都有自己的垃圾回收机制.接下来我们来讲一下python的垃圾回收机制. 小整数对象池:python对小整数的定义为[-5,257),这些整数对象是提前建立好的,不会被垃圾回收.单个字母也一 ...

  4. 阿里云Confluence无法发送邮件修复

    阿里云屏蔽外网的25端口,防止发送垃圾邮件,所以导致阿里云上的ecs无法发送邮箱 采用腾讯邮箱,端口25和465都试了好几遍,最终改成587即可 参考https://blog.csdn.net/qq_ ...

  5. OSX编译安装Python3及虚拟开发环境Virtualenv

    0X00.前言 因为工作原因,最近主要做Python开发,刚好电脑系统重装之后所有的东西都需要重新配置.此文主要记录OSX下通过源码编译安装Python3以及安装虚拟开发环境Virtualenv. 0 ...

  6. 安装Redis内存分析工具rdbtools

    一.安装Python2.7 1. wget http://10.12.29.98:8090/tools/Python-2.7.11.tgz 2. ln -s /usr/local/python2.7/ ...

  7. 事务以及Spring的事务管理

    一.什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行 二.事务的特性(ACID) 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用: 一致性 ...

  8. WiredTiger运行时参数优化

    MongoDB的WiredTiger存储引擎,用了一段时间,遇到了一些问题,通过优化WT参数,也解决了一些问题,做个小结. cache_size 指定WT存储引擎内部cache的内存用量上限. 需要注 ...

  9. C++扬帆远航——6(三色球)

    /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:sanseqiu.cpp * 作者:常轩 * 完成日期:2016 ...

  10. 达拉草201771010105《面向对象程序设计(java)》第八周学习总结

    达拉草201771010105<面向对象程序设计(java)>第八周学习总结 实验六接口的定义与使用 实验时间 2018-10-18 1.实验目的与要求 (1) 掌握接口定义方法: (2) ...