奉上简单的.Net后端开发模板
假定一个场景,开始做开发的你,领导走到你的面前说道:“小伙子,看了简历和最近的工作表现,很不错,现在交给一个任务,开发一个简单的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后端开发模板的更多相关文章
- 后端开发实践——Spring Boot项目模板
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...
- 后端开发实践:Spring Boot项目模板
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...
- 高效的后端API开发模板-illuminant
概要 整体介绍 补充说明 Q. 有了 prisma 自动生成的 graphql 接口, 为什么还要 rest 接口和 websocket 接口? Q. 为什么要通过 illuminant 加一层反向代 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- WebApp简单制作(后端也可以装逼啦)
前端越来越吃香的感觉 年后回来,跟之前和几个同事和朋友聊天,发现有两个.net的和一个php的朋友都转到了前端,真是出乎意料.自从之前的webapp兴起后,前端感觉比后端吃香很多,总结朋友们转的原因, ...
- 【劳动节江南白衣Calvin 】我的后端开发书架2015
自从技术书的书架设定为”床底下“之后,又多了很多买书的空间.中国什么都贵,就是书便宜. 不定期更新,在碎片化的阅读下难免错评. 书架主要针对Java后端开发,书单更偏爱那些能用简短流畅的话,把少壮不努 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史
---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...
- Web前端和后端开发的区别和要求
Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...
- 一个后端开发的 Vue 笔记【入门级】
一 前言 最近找了些教程,顺带着趴在官网上,看了看 Vue 的一些内容,入门的一些概念,以及基础语法,还有一些常用的操作,瞄了一眼,通篇文字+贴了部分代码 9000 多字,入门语法什么的还是很好理解的 ...
随机推荐
- BaseAdapter教程(1) 最简单地使用BaseAdapter
Adapter就是适配器,而设计模式里也有Adapter Pattern. 而BaseAdapter就是设计模式里的思维,把一些不相关的东西放进去,经过适配器,最终都会出产同一样的东西. 就像Base ...
- 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 ...
- 初识OpenGl
函数命名规则 OpenGl函数都遵循一个命名约定:<库前缀> <根命令> <可选参数个数> <可选参数类型> 如:glColor3f() ,gl:核心库 ...
- 关于mysql的符合主键的定义和解释
DROP TABLE IF EXISTS `v9_vote_data`;CREATE TABLE `v9_vote_data` ( `userid` mediumint(8) unsigned DE ...
- Part-Appium-1
1.安装node > 下载二进制文件,解压后,配置到环境变量 https://nodejs.org/download/release/latest/ > vim ~/.bashrc,exp ...
- JS UTC 昨天
var birthday = new Date("Jan 01, 1983 01:15:00") var formatDate = function (date) { ...
- 用dfs序处理线段树的好题吗?
https://www.cnblogs.com/mountaink/p/9878918.html 分析:每次的选取必须选最优的一条链,那我们考虑一下选择这条链后,把这条路上的点的权值更新掉,再采取选最 ...
- java课java方法动手动脑
动手动脑: import java.util.Scanner; public class Random { public static void main(String[] args) { ...
- 树剖裸题——BZOJ1036 树的统计
#include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #defi ...
- HDU-6707-Shuffle Card(很数据结构的一道题)
题目传送门 sol1:拿到这题的时候刚上完课,讲的是指针.所以一下子就联想到了双向链表.链表可以解决卡片移动的问题,但是无法快速定位要移动的卡片,所以再开一个指针数组,结合数组下标访问的特性快速定位到 ...