zoukankan      html  css  js  c++  java
  • 分布式系统设计(8)

    分布式系统设计(8)

     

    再回忆一下我们前面介绍的几节:

    第一节介绍数据分布方式:http://www.cnblogs.com/jacksu-tencent/p/3405680.html

    第二节介绍副本控制协议:http://www.cnblogs.com/jacksu-tencent/p/3407712.html

    第三节介绍基于Lease的分布式cache系统:http://www.cnblogs.com/jacksu-tencent/p/3409646.html

    第四节介绍Lease机制本质以及判断节点状态:http://www.cnblogs.com/jacksu-tencent/p/3415529.html

    第五节介绍基于quorum机制选择primary:http://www.cnblogs.com/jacksu-tencent/p/3416531.html

    第六节介绍日志技术:http://www.cnblogs.com/jacksu-tencent/p/3416597.html

    第七节介绍MVCC:http://www.cnblogs.com/jacksu-tencent/p/3420553.html

    大家猜猜下面这幅图是干什么的,如果有接触过分布式理论的应该一看就知道;如果有正在使用分布式系统的,拿你的系统和图对比一下,了解一下你系统的理论;本节先上个图,大家好好研究一下,因为下午有公司嘉年华,只能随后整理好,预先预告一下,下节介绍设计分布式你不得不知道的理论,围绕该图展开的理论,让我们不要成为那个埋头制造永动机的烈士

    如果你愿意和我一起讨论技术,请点击下面的 关注我

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF Model Frist模式

    进行本次文章之前,我们可能需要补充一些基本知识。

    首先我们系统是基于接口编程的,我们为什么要使用借口编程,其实这是应用了一种企业应用架构模式

    Repository(仓储)

      一种用来封装存储,读取和查找行为的机制,它模拟了一个对象集合。

      支持在领域和数据映射层之间实现彻底分离和单向依赖关系的目标。

    接口编程

      最主要的目的是使关注点分离,让开发人员各司其职

      代码封存保密,分包开发,无需要给予逻辑结构代码,只需要给予接口文件

      缺点:设计困难,比传统的三层,单类模式困难,但是接口程序员工资都很高!

    AOP(面向方面编程)

      我们为了弥补面向对象缺陷,我们系统将引入面向方面编程

      主要用于日志记录,事务处理,异常处理等等。

    概念这种东西过于模糊,我们必须经历过一个大系统才能认识这些概念模型。我无法用文章来下详细解析此系统的深层概念,需要大家在日常工作中实践和意会,推荐一本.net的设计书籍《Microsoft .NET企业级应用架构设计》这本书详细的讲述了接口编程,面向方面编程

    通过上面我们需要构建项目的解决方案。

    虽然MVC的controller层包含了逻辑,但是对于一个大系统,我们不可能把业务和数据库底层包含在一起,虽然提供了Models模型文件夹,在第二讲我把他删除了,我们将这一层Model层提取出来,任何层的设计都好,都是从三层设计模式衍生出来的,本系统也不例外。我们是基于接口编程的仓储模式,所以我们必须有BLL,IBLL,DAL,IDAL的对应类库。

    好,现在我们右键我们的解决方案吧。分别建立

    • App.BLL (业务层)
    • App.IBLL (业务层接口)
    • App.DAL (数据层)
    • App.IDAL (数据层接口)
    • App.Models (模型)
    • App.Common(通用类库)
    • App.Core (核心类库)

    图:

    添加:EF5.0 VS2012旗舰版默认已经集成安装了EF5.0我们把他存放到App.Models类库下

    右键----添加新建项

    输入名称DB大家自己取名称,这里选择空模型,我们是模型优先模式,不是code frist模式要注意。对于系统来说我认为模型优先是有优势的

    展开DB.edmx删除DB.Context.tt和DB.tt才能正确使用Model Frist模式,看到DB.edmx的属性窗口,将代码生成策略一项的无改为默认值

    我们打开SQL Server如果你安装了VS2012我相信你的数据库也不老,我是SQL Server2008 R2版本

    我们建立一个简单的事例表吧:

    Create database DB 创建一个名称为DB的数据库

    复制代码
    use DB
    
    CREATE TABLE [dbo].[SysSample](
    [Id] [varchar](50) NOT NULL,
    [Name] [varchar](50) NULL,
    [Age] [int] NULL,
    [Bir] [datetime] NULL,
    [Photo] [varchar](50) NULL,
    [Note] [text] NULL,
    [CreateTime] [datetime] NULL,
    CONSTRAINT [PK__SysSampl__3214EC075AEE82B9] PRIMARY KEY CLUSTERED
    复制代码

    好了有了数据库和表,我们往数据库添加模型映射,说到这里我简单说说我们用EF的原理,EF是一个ORM框架,ORM是通过描述对象和关系数据库之间的映射,将程序中的对象自动持久化到关系数据库中,简单易用、性能突出的泛型持久化支持,则将使您能够将更多注意力集中到业务开发,所以大家懂要懂得什么是事务,加入我们从数据库取出10条数据,我删除了1条,过一会在删除1条,只要我提交事务才到数据库执行删除,否则将是删除内存的数据库,所以数据库的压力小了,内存的压力大了。

    新建连接-----选择Microsoft Sql server


    相信你此时已经看到了效果了,我可能写得太详细了,文章有点乱。

    如果你用过熟悉三层架构,那现在可以动手对项目之间的关系进行引用了。

    下面给出一个引用流程:按照这个来进行引用,有了更清楚的让大家看出注入,我们目前这样引用

    App.Admin-------------App.Models,App.Common,App.Core,App.IBLL,App.BLL,App.DAL,App.IDAL,System.Data.Entity

    App.BLL-----------App.Models,App.IBLL,App.DAL,App.IDAL,System.Data.Entity

    App.BLL--------------App.IBLL,System.Data.Entity

    App.DAL--------------App.IDAL,System.Data.Entity

    App.IDAL--------------System.Data.Entity

    下一讲我们将利用接口编程我们实现一个增删改代码,一些糟糕的代码

    当前标签: MVC4

     
  • 相关阅读:
    程序员修炼之道阅读笔记02
    第十五周课堂练习-查找最长单词链
    文件读写总结
    第十五周
    暑假总结1
    软件工程课程总结
    第十六周总结
    用户场景分析
    学期课后个人总结
    第十五周总结
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3427337.html
Copyright © 2011-2022 走看看