Visual Studio.net 2013 asp.net MVC 5 Scaffolding代码生成向导开源项目

提高开发效率,规范代码编写,最好的方式就是使用简单的设计模式(MVC , Repoistory Pattern)+ 模板生成工具。每个小型的软件公司似乎都有自己的基础开发平台,大部分都是基于数据字典+模板动态生成CRUD的操作页面;一般的项目80%代码都可以通过模板生成但并不意味着可以缩短80%的项目开发时间,毕竟很多的业务操作还是要根据用户的需求去定制开发还是需要不少时间去理解和开发的。但随着项目经验积累和沉淀,可以为以后的项目提供帮助。

现在随着移动互联网,手机APP,IPAD等移动设备的流行,似乎所有的需求都需要移动端的应用,我想这也是为什么最近MVC越来越火的原因。不单单是因为MVC的简洁(相对web Form),还有MVC确实要比Web Form更适合在不同的设备上浏览,也更容易封装和复用(Partial View,LayoutTemplate)。

最近抽空开发一个居于MVC的代码生成工具,其实也是在别人基础修改的,如果你也有兴趣可以一起参与完善,github是个好东西就是国内访问速度太慢。

我的项目地址 https://github.com/neozhu/MVC5-Scaffolder

项目阶段

目前基本实现了对单个实体的增删改查功能

下一步实现导航菜单动态配置动态创建

页面部分全部是现实Ajax局部刷新

顶部导航栏通知功能

添加登陆注册页面模板

一对多的新增编辑模板

MVC5-Scaffolder开源项目

这个工具的功能通过模板自动生成EntityFramework + UnitOfWork Repository Framework 项目代码,整体项目架构完全参考《Generic Unit of Work and Repositories (lightweight fluent) Framework with Sample Northwind ASP.NET MVC 5 Application》如下图所示,非常完美的架构。

  • UI (Presentation) Layer
    • ASP.NET MVC - (Sample app: Northwind.Web)
    • Kendo UI - (Sample app: Northwind.Web)
    • AngularJS - (Sample app: Northwind.Web)
  • Service and Data Layer
    • Repository Pattern - Framework (Repository.Pattern, Repository.Pattern.Ef6, Northwind.Repository)
    • Unit of Work Pattern - Framework (Repository.Pattern, Repository.Pattern.EF6, Northwind.Repository)
    • Entity Framework
    • Service Pattern - Framework (Service.Pattern, Northwind.Service)
  • Domain Driven Design (*slated for release v4.0.0)
    • Domain Events
    • *more to come

运行起来大致的样式如下采用Boostrap sb-admin.css

MVC5-Scaffolder项目结构和组成

Demo

---UnitOfWorkFramework –从网上下载的源代码(http://genericunitofworkandrepositories.codeplex.com/

--WebApp -Web项目

MVC5Scaffloding -Vs.net 2013代码生成向导插件项目

---Templates ---所有代码生成的模板包括View,Controller,Repoistory,Service,依赖的外部类

MVC5Scaffloding.vsix –安装项目

代码模板

MvcControllerWithContext –Controller代码模板

_layout –主页面模板

_SideNavBar –主菜单导航栏

_TopNavBa —主页面顶部导航栏

Sb-admin --css样式网上下载的最简单的样式

MvcView --CRUD模板

Repoistories -生成扩展方法可以理解成数据访问层

Services –生成业务逻辑层代码

实体类结构

Metadata原数据类也是通过向导生成必要验证规则

也可以很方便修改

Repoistories,Services 代码结构

模板会生成与该实体相关联的实体方法比如通过外键获取关联的实体对象集合

Service层同样会生成与之相关的所有方法和实体

Service层在Repoistory层之上,如果业务逻辑复杂需要多个Repository实现那么一个service中会包含多个Repository

Controller代码结构

除了基本的增删改查,Index方法实现了分页查询,排序还没有实现

IProductService,IUnitOfWorkAsync则是通过Unity依赖注入创建

配置Unity注册信息

首先项目要通过nuget安装Unity boostrapper for asp.net mvc

把创建的Repoistory,Service类注册进去

运行调试

基本生成样式就是这样

Index首页有分页和查询功能

修改 可以删除

目前只是一个雏形,还有很多功能需要完善,如果你有兴趣可以一起参与帮忙。

asp.net MVC 5 Scaffolding多层架构代码生成向导开源项目(邀请你的参与)的更多相关文章

  1. MVC 5 Scaffolding多层架构代码生成向导开源项目

    asp.net MVC 5 Scaffolding多层架构代码生成向导开源项目(邀请你的参与)   Visual Studio.net 2013 asp.net MVC 5 Scaffolding代码 ...

  2. ASP.NET MVC 4 插件化架构简单实现-思路篇

    用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC 4 来实现每个插件都可以完全从主站点剥离出来,即使只是一个插 ...

  3. ASP.NET MVC 4 插件化架构简单实现-实例篇

    先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...

  4. 用ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统

    用http://ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统 背景:前段时间,给一家公司做外包(就是图标是朵菊花那家).为了尽快实现交付,网上四处寻找适合中小型企 ...

  5. [asp.net mvc 奇淫巧技] 06 - 也许你的项目同一个用户的请求都是同步的

    一.感慨 很久前看到一篇博客中有句话大致的意思是:“asp.net 程序性能低下的主要原因是开发人员技术参差不齐”,当时看到这句话不以为然,然而时间过的越久接触的.net 开发人员越多就越认同这句话: ...

  6. 我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager

    大家好,  我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager . ServerFulManager 的 目标 是 实现一个 支持 ServerFu ...

  7. asp.net core系列 62 CQRS架构下Equinox开源项目分析

    一.DDD分层架构介绍 本篇分析CQRS架构下的Equinox开源项目.该项目在github上star占有2.4k.便决定分析Equinox项目来学习下CQRS架构.再讲CQRS架构时,先简述下DDD ...

  8. ASP.NET MVC Area使用-将Area设置成独立项目

    环境说明:Vistual Studio 2013 MVC 4.0 其实关于ASP.NET MVC Area使用的基础知识可以参考 http://www.cnblogs.com/willick/p/33 ...

  9. Asp.Net MVC +EF CodeFirst+多层程序设计

    1.概述 这是一个基于个人博客的一个项目,虽然博客根本没必要做这么复杂的设计.但是公司有需求,所以先自己弄个项目练练手.项目需要满足下列需求 1.层与层之间需要解耦,在后期上线更新维护时不需要覆盖,只 ...

随机推荐

  1. 杨其菊201771010134《面向对象程序设计(Java)》第三周学习总结

    <面向对象程序设计(Java)>第三周学习总结 第一部分:理论知识 这周课程没有新进度,由于感觉对基础语法的不熟悉,复习了一遍前三章的细碎知识,学到一些之前不知道的原理: 1.计算机高级语 ...

  2. nagios 报警参数

    host_notification_options: d = notify on DOWN host states, u = notify on UNREACHABLE host states r = ...

  3. 在JSP页面获取集合的长度

    在jsp页面上经常遇到得到集合长度.字符长度.字符切取等应用需,在2.0以前这种需是许多程序员对JSTL及为不满意的地方之一.为此在2.0 中添加了functions标签,其提供对以上需求的支持. 使 ...

  4. windows 函数

    数组清零 ::ZeroMemory(首地址,大小);

  5. python基本数据类型之集合

    python基本数据类型之集合 集合是一种容器,用来存放不同元素. 集合有3大特点: 集合的元素必须是不可变类型(字符串.数字.元组): 集合中的元素不能重复: 集合是无序的. 在集合中直接存入lis ...

  6. 2019swpuj2ee作业3

    静态页面: 在网站设计中,纯粹html格式的网页通常被称为“静态网页”,早期的网站一般都是由静态网页制作的.静态网页是相对于动态网页而言,是指没有后台数据库.不含程序和不可交互的网页.你编的是什么它显 ...

  7. Maths | 相关接收机与最大似然准则

    目录 一. 接收机的概念 1.信号解调器 2.检测器 二. 相关解调器的解调过程及其原理 1.构造相关解调器 2.得到接收信号在基向量上的投影 3.相关器输出的性质 三.检测器的实现及其数学原理 1. ...

  8. 解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题

    解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题. 有时候是src/main/resources下面的,有时候是sr ...

  9. array_flip()函数

    array_flip() 函数用于反转/交换数组中所有的键名以及它们关联的键值. array_flip() 函数返回一个反转后的数组,如果同一值出现了多次,则最后一个键名将作为它的值,所有其他的键名都 ...

  10. Android studio 中的TabWidget

    1.TabWidget 的 layout文件 <?xml version="1.0" encoding="utf-8"?> <TabHost ...