假定一个场景,开始做开发的你,领导走到你的面前说道:“小伙子,看了简历和最近的工作表现,很不错,现在交给一个任务,开发一个简单的CMS后端接口吧,前端有人配合你”,当时你内心读白:“CMS什么东西,还好我可以百度,但我要在个项目上开搞啊”,这时的领导又说道:“项目你自己建立,然后上传git就行了”,这时你是否已经石化,本篇文章就为您提供一个快速建立后端开发的模板,作者自己总结出品,如有不妥,一定要留言哟。
模板代码下载:https://github.com/cqhaibin/ApiTemplate.git

目标

由于搭建的只是后端开发模板,主需要满足基本要求即可。

  • 框架结构简单

  • 数据库支持:Mssql, Mysql
  • 构架易于上手
  • 支持良好的业务扩展
  • 是一套基础开发模板

技术选型

  • 开发语言:c#

  • 运行时 .net Framework4.5
  • IoC:Autofac、Autofac.WebApi2
  • Dto:AutoMapper
  • 序列化:Newtonsoft.Json
  • Orm:FreeSql
  • Api:Aspnet.WebApi
  • 数据库:首先MSSQL、次先Mysql
  • 缓存:基于List或Dictionary实现单机内存级缓存

架构分层

  • 数据库访问层

    • Freesql实体定义,也就是我们常说的是数据库实体

    • 提供dbContext上下文的方式访问
    • 复杂的sql操作接口定义及实现,如:多表查询、存储过程执行等
  • 业务层
    • 业务层拆分两个项目,BAccurate只做业务领域实体、值对象、系统配置对象、系统Model对象、AppService的定义等定义;BAccurate.Implement领域业务的实现

    • BAccurate.Implement可以依赖BAccurate.Repository.Fresql层,实现领域实体的数据持久化
    • Feesql实体定义未放在BAccurate层(业务规范项目),是为了防止领域实体与数据库实体混淆
    • BAccurate项目可以被其他所有项目使用
  • 服务层
    • AppService.Implement和Webapi我都划分在服务层,其中webapi是一个贫血项目,只是把AppService做到WebApi接口化

    • AppService的接口和Model定义,都放到了BAccurate(业务规范项目)中,方便后期对AppService的重写和扩展
  • UI层
    前端开发项目

接口规范

  • 接口以类resetful api规范返回

  • 返回结果规则一致
  • 接口名称前缀动词:Get:表示查询;Post:提交数据(添加/修改);Delete:移除数据

  • 接口命名规则:接口名前缀+业务名称;以大驼峰命名
  • 接口要进行统一管理

部署规范

  • IIS托管部署

  • 前端静态资源,托管到wwwroot目录

最新文章

  1. ZOJ3805Machine(二叉树左右子树变换)
  2. linux系统下nodejs安装过程随记
  3. Linux系统管理命令之权限管理
  4. C++ 安全拼接字符串函数
  5. mysql 用sql语句查询一个表中的所有字段类型、注释
  6. java读取properties的工具类PropertiesUtil
  7. html中的空格可以用什么代替
  8. MySQL 5.6.19 二进制安装
  9. 如何搭建NTP服务(转)
  10. dedecms后台添加新变量和删除变量的方法
  11. linux开机启动smb服务
  12. 提示让IE8以下版本的浏览器去更新浏览器
  13. 漫谈Java IO之基础篇
  14. 833. Find And Replace in String
  15. ssd物体检测模型训练和测试总结
  16. Redis设置密码重启后失效的解决方案
  17. Spring框架的核心功能之AOP概述
  18. Java 中的类
  19. 点滴笔记(二):利用JS对象把值传到后台
  20. (32位)本体学习程序(ontoEnrich)系统配置说明文档

热门文章

  1. Java线程池面试
  2. Git log 中文乱码
  3. HDU-4553 约会安排(线段树维护连续区间)
  4. Rails Create--params说明
  5. Qt 无法打开包括文件:“QGLWidget”: No such file or directory
  6. PyCharm4.5 中文破解版破解步骤
  7. FPGA开平方的实现
  8. org.apache.http.NoHttpResponseException
  9. [LC] 359. Logger Rate Limiter
  10. 林轩田机器学习基石笔记2—Learning to Answer Yes/No