框架总分2个项目:Web开发项目、帮助类项目 (ZyCommon、Zy.Utilities)

1、ZyCommon,是Web开发项目结构。新建一个空解决方案,再建Data、Service、ZyWeb解决方案文件夹,把数据层、接口服务层、Web层区分开

1.1、Data解决方案下----Zy.Xn.Model 数据模型项目,设计好System下 组织机构、菜单、角色、角色菜单、角色用户、用户实体类,Models是系统使用的一些DTO基类,比如ztree控件需要的一些实体字段,角色菜单DTO,BaseModel是一个基类,存放一个Id自动增长的字段,供System下的多个实体引用

1.2 、Data解决方案下----Zy.Xn.Entity 实体项目,用来管理实体上下文的,添加Entity Framework的引用,添加 Zy.Xn.Model  的引用,把实体类放到上下文类中,在App.config配置好连接数据库,然后使用Code First创建表,以后每次更新数据库表字段,只需要更新Model项目中的实体类,使用Code First Migrations 命令更新即可,初始时需要 Enable-Migrations ,启用迁移后会在实体项目下生成 Migrations文件夹,存放每次迁移的记录,至此Data层的功能大致是如此的

命令:工具--NuGet包管理器--程序包管理器控制台--默认项目选择Zy.Xn.Entity 上下文项目

添加迁移报告:add-migration 20160911

更新到数据库:update-database

迁移至指定版本(包括后退):Update-Database –TargetMigration: $InitialDatabase

得到SQL脚本(部署到服务器时很有用) : Update-Database -Script -SourceMigration: 最开始版本号-TargetMigration: 结束版本号

1.3、Service解决方案下 ---- Zy.Xn.IServices 服务接口层,面向接口编程,好处多多

1.4、Service解决方案下 ---- Zy.Xn.Services 服务实现层

1.5、Web项目,新建Areas,多个项目只要在Areas下建多个项目即可,后台管理系统放在Admin文件夹下,系统所用的JS、CSS、Images等存放在Content文件夹下

2、Zy.Utilities 所有帮助类、依赖注入、基类控制器等再此项目下实现

2.1、Zy.Utility.Core项目提供所有的帮助类,如:异常类、日志类、IOHelper、ImageHelper,PageModel(列表基类) 等等系统可能用到的帮助类,日志类会专门开一篇文章讲解,如何在项目配置Log4日志,报错后怎么把错误信息写入日志

2.2、Zy.Utility.ServicesProvider项目是服务代理提供者,也就是 Autofac依赖注入的实现

2.3、Zy.Utility.WebFramework项目提供控制器基类、接口服务帮助类、Bundles帮助类(读取js、css配置节点)

2.3.1、控制器基类,重写异常捕获方法并把错误信息写入日志,获取当前登录用户,Session失效后重定向的控制器等功能,给Web项目使用

2.3.2、bundles在web项目中的实现,新建一个admin.bundles文件,使用它的好处是可以压缩js、css,减少网络流量,当然,也可以在项目中App_Start--BundleConfig中配置,不过没有自定义实现方便

从零开始写C# MVC框架之--- 项目结构的更多相关文章

  1. 从零开始写C# MVC框架之--- 配置log4日志

    在框架中配置日志分2步,一个是在帮助项目Zy.Utilities--Zy.Utility.Core中新建log类,封装写入日志方法,还需要在Zy.Utility.Core添加 log4net 的引用 ...

  2. 读《架构探险——从零开始写Java Web框架》

    内容提要 <架构探险--从零开始写Java Web框架>首先从一个简单的 Web 应用开始,让读者学会如何使用 IDEA.Maven.Git 等开发工具搭建 Java Web 应用:接着通 ...

  3. 手写Spring MVC框架(一) 实现简易版mvc框架

    前言 前面几篇文章中,我们讲解了Spring MVC执⾏的⼤致原理及关键组件的源码解析,今天,我们来模仿它⼿写⾃⼰的mvc框架. 先梳理一下需要实现的功能点: tomcat加载配置文件web.xml: ...

  4. 自己动手写PHP MVC框架

    自己动手写PHP MVC框架 来自:yuansir-web.com / yuansir@live.cn 代码下载: https://github.com/yuansir/tiny-php-framew ...

  5. 【EatBook】-NO.3.EatBook.3.JavaArchitecture.2.001-《架构探险:从零开始写Java Web框架》-

    1.0.0 Summary Tittle:[EatBook]-NO.3.EatBook.3.JavaArchitecture.2.001-<架构探险:从零开始写Java Web框架>- S ...

  6. 学习如何写PHP MVC框架(1) -- 路由

    说到PHP开发web,自然离不开开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等... 第一篇先来简单点的,说说MVC框架的路由功能... 一般的单入口框架路由都是这样的结构: ...

  7. 手写Spring MVC框架(二) 实现访问拦截功能

    前言 在上一篇文章中,我们手写了一个简单的mvc框架,今天我们要实现的功能点是:在Spring MVC框架基础上实现访问拦截功能. 先梳理一下需要实现的功能点: 搭建好Spring MVC基本框架: ...

  8. [转].net mvc + vuejs 的项目结构

    .net项目结构: 程序目录结构: vue操作: 前提:安装npm ,vue,vue-cli 1.进入控制台窗口 2.进入程序目录 3.运行 vue init webpack webjs 生成webj ...

  9. 写出Zend 框架的目录结构,简单说明目录作用?

    application/ – 存放应用程序的目录,包括MVC 系统.配置文件.服务以及引导程序(Bootstrap.php)configs/ –配置文件目录.application/modules – ...

随机推荐

  1. pdo + 事务处理 处理线性事务

    /* * 事物处理线性操作. * 以转账为例 */ header('Content-type:text/html;charset=utf-8'); $opt = array(PDO::ATTR_PER ...

  2. jstack应用-查找CPU飚高的原因

    场景 在系统上线后,经常会遇到运维的同学跑过来说:“这次发版后,cpu线程使用率到一场,到100%了”.这时候不要慌,可以使用堆转储来分析到底是哪个线程引起的. 查找元凶 发现pid=17850的进程 ...

  3. react.js学习之路一

    今天新老大来了,我们要学习他使用的框架react.js,现在是两眼一抹黑,对于我这个前端菜鸟来说,是真正的重新开始,好了,不说那么多了,开始随便记录我的学习,之后再整理内容. (1)对于react来说 ...

  4. Java面向对象之关键字super 入门实例

    一.基础概念 (一)super关键字 super关键字的用法和this相似.this代表的是当前对象.super代表的是父类中内存空间. 子父类中是不会出现同名属性的情况. (二)继承中.成员变量问题 ...

  5. 190310HTML&CSS&JS

    一.HTML 1.web server import socket def handle_request(client): buf = client.recv(1024) client.send(by ...

  6. 【离散数学】 SDUT OJ 偏序关系

    偏序关系 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给定有限集上二元关系的关系矩 ...

  7. 50个php程序性能优化的方法,赶紧收藏吧!

    1. 用单引号代替双引号来包含字符串,这样做会更快一些.因为 PHP 会在双引号包围的 字符串中搜寻变量,单引号则不会,注意:只有 echo 能这么做,它是一种可以把多个字符 串当作参数的“函数”(译 ...

  8. html基础知识,整理

    # HMTL 基础知识 ###查看网页源代码吗 ``` ctrl + u``` ###dom元素 一个标签即代表一个dom元素 ###dom元素属性 ``` <p id ="first ...

  9. CentOS修改默认yum源为国内yum镜像源

    修改CentOS默认yum源为mirrors.163.com 1.首先备份系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repomv /etc/yum.repos. ...

  10. POJ1358 Agri-Net

    题目链接 就是裸的最小生成树,复习一下. prim算法: G=(V,E),V是点集,E是边集 假设T=(U,TE)是最小生成树.U,TE初始化为空 首先从V中任取一点 假设取V1,然后U={V1},只 ...