假定一个场景,开始做开发的你,领导走到你的面前说道:“小伙子,看了简历和最近的工作表现,很不错,现在交给一个任务,开发一个简单的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目录

奉上简单的.Net后端开发模板的更多相关文章

  1. 后端开发实践——Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  2. 后端开发实践:Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  3. 高效的后端API开发模板-illuminant

    概要 整体介绍 补充说明 Q. 有了 prisma 自动生成的 graphql 接口, 为什么还要 rest 接口和 websocket 接口? Q. 为什么要通过 illuminant 加一层反向代 ...

  4. JVM 平台上的各种语言的开发指南

    JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...

  5. WebApp简单制作(后端也可以装逼啦)

    前端越来越吃香的感觉 年后回来,跟之前和几个同事和朋友聊天,发现有两个.net的和一个php的朋友都转到了前端,真是出乎意料.自从之前的webapp兴起后,前端感觉比后端吃香很多,总结朋友们转的原因, ...

  6. 【劳动节江南白衣Calvin 】我的后端开发书架2015

    自从技术书的书架设定为”床底下“之后,又多了很多买书的空间.中国什么都贵,就是书便宜. 不定期更新,在碎片化的阅读下难免错评. 书架主要针对Java后端开发,书单更偏爱那些能用简短流畅的话,把少壮不努 ...

  7. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史

    ---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...

  8. Web前端和后端开发的区别和要求

    Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...

  9. 一个后端开发的 Vue 笔记【入门级】

    一 前言 最近找了些教程,顺带着趴在官网上,看了看 Vue 的一些内容,入门的一些概念,以及基础语法,还有一些常用的操作,瞄了一眼,通篇文字+贴了部分代码 9000 多字,入门语法什么的还是很好理解的 ...

随机推荐

  1. BaseAdapter教程(1) 最简单地使用BaseAdapter

    Adapter就是适配器,而设计模式里也有Adapter Pattern. 而BaseAdapter就是设计模式里的思维,把一些不相关的东西放进去,经过适配器,最终都会出产同一样的东西. 就像Base ...

  2. TOJ-2811 Bessie's Weight Problem(DP、背包问题)

    链接:https://ac.nowcoder.com/acm/contest/1082/K 题目描述 Bessie, like so many of her sisters, has put on a ...

  3. 初识OpenGl

    函数命名规则 OpenGl函数都遵循一个命名约定:<库前缀> <根命令> <可选参数个数> <可选参数类型> 如:glColor3f() ,gl:核心库 ...

  4. 关于mysql的符合主键的定义和解释

    DROP TABLE IF EXISTS `v9_vote_data`;CREATE TABLE `v9_vote_data` (  `userid` mediumint(8) unsigned DE ...

  5. Part-Appium-1

    1.安装node > 下载二进制文件,解压后,配置到环境变量 https://nodejs.org/download/release/latest/ > vim ~/.bashrc,exp ...

  6. JS UTC 昨天

    var birthday = new Date("Jan 01, 1983 01:15:00") var formatDate = function (date) {       ...

  7. 用dfs序处理线段树的好题吗?

    https://www.cnblogs.com/mountaink/p/9878918.html 分析:每次的选取必须选最优的一条链,那我们考虑一下选择这条链后,把这条路上的点的权值更新掉,再采取选最 ...

  8. java课java方法动手动脑

    动手动脑: import java.util.Scanner; public class Random { public static void main(String[] args) {       ...

  9. 树剖裸题——BZOJ1036 树的统计

    #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #defi ...

  10. HDU-6707-Shuffle Card(很数据结构的一道题)

    题目传送门 sol1:拿到这题的时候刚上完课,讲的是指针.所以一下子就联想到了双向链表.链表可以解决卡片移动的问题,但是无法快速定位要移动的卡片,所以再开一个指针数组,结合数组下标访问的特性快速定位到 ...