框架总分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. 小规模kvm宿主机管理-webvirtmgr安装

    1.前言WebVirtMgr是近两年来发展较快,比较活跃,非常清新的一个KVM管理平台,提供对宿主机和虚机的统一管理,它有别于kvm自带的图形管理工具(virtual machine manager) ...

  2. 《C#多线程编程实战》2.5 AutoResetEvent

    这个有点像是缩小版的mutex 还是很好理解的 相对mutex 使用的范围可能比较小一点. class Program { static AutoResetEvent work = new AutoR ...

  3. VIN-Fusion config with Realsense D435i

    ### First shot Copy the .launch file in package VINS-Fusion to the directory of realsense2_cameara/l ...

  4. linux下文件权限的介绍

    linux操作系统下,使用ll查看该目录下所有文件及其文件权限,以下是对文件权限的介绍 d代表的是目录(或称之为文件夹)   红框内的这3个是代表3个组的权限每组都是3个 第一组rwx代表是本用户的权 ...

  5. jvm学习笔记之对象详解

    一.对象的组成 对象头(Header): 运行时数据:存储对象运行时的数据,如哈希码.GC分代年龄.锁状态标志.线程持有的锁.偏向线程ID.偏向时间戳等,这部分数据官方成为“Mark Word”,它的 ...

  6. Python3之Memcache使用

    简介 Memcached是一个高性能的分布式内存对象缓存系统,用于动态WEB应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态,数据库网站的速度.Memcached ...

  7. 什么是redis?Reids的特点是什么?Redis支持的数据类型有哪些?

    首先,分布式缓存框架 可以 看成是nosql的一种 (1)什么是redis? redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的 ...

  8. spring配置文件中导入约束的详细步骤

    这里先以<beans>元素为例: 首先在eclipse中引入相关约束: 点击OK后,这个约束就被引入到eclipse中了,这一步的意义在于:就算你处于脱机情况下(不能联网),也能给你提示. ...

  9. 013 Android ActionFloatingButton悬浮按钮组件与Snackbar组件使用

    1.导入ActionFloatingButton组件(点击下载按钮,安装组件) 2,.ImageView图片XML设置 <ImageView android:id="@+id/imag ...

  10. CSS column 布局总结

    有时候 第一列 底部会跑到顶部那里一部分.这时候应该这样. 在 每个 div前加上 display:inline-block