创造DotNet Core轻量级框架【一】
前言
net core 已经出了很久了,网上的各种框架也很多了,但是没看到一个很小很轻的框架,基本都是那种啥功能都有,但是我需要的功能只占他们框架的百分之几,很少很少,所以自己创造一个框架。
因为之前的知识断层太多了,现在为了拟补这些知识,也是走了不少弯路,现在和一个新手没啥区别,所以那里写的不对也请大家谅解。
1.我需要的框架结构是什么样的?
我在搭建这个框架的时候查阅了很多资料,园子里有很多很多的大佬都已经写了怎么搭建一个框架,而阅读最广泛的是一套DI框架。但是不知道怎么回事园子里面的原文是加密的,打不开。可能是作者不想让爬虫爬吧。。
那么我到底需要什么框架呢?
冥思苦想,有几个要求
- 1.不为现在工作而做一个框架
- 2.通用性高
- 3.简单易懂
- 4.中小型项目压力小
然后就随便画了一下结构图

哪我需要做的就是从中转平台到数据库支持这一块内容。
2 ORM的选择
我也是第一次学习net core和EF,以前都不懂EF是什么东西,也是通过现在工作学会一点EF的使用,觉得局限性太高了。但是写一写简单的操作还是比较快的,然后看到微软也发布了 EF Core,查了查资料看看了文章
也在各种ORM对比,结果发现EF Core被人黑的地方就是不能写sql语句,如果不能写sql语句那么就需要使用框架的人掌握linq和 lamuda的程度要很高了,不再是一个简单的新手小白可以使用的框架。不符合我的要求。
我做事的方式就是先查查能不能解决,不能解决在换别的,结果无意中发现网上已经有大佬做了扩展的cs文件。保存。那么ORM就确定使用官方的EF Core加大佬的扩展类
3 层级架构
世界上最通用的也是最常用的还是三层架构,谁看见都会用,不需要过多的解释,就像超级玛丽 1-1关那样。
4 数据验证
上学的时候老师教过我们,客户端的信息是不可信,既然前后端分离了,那么前端传输过来的数据必然可以被篡改,做一个自己的加密方式可以验证数据是否被篡改??这个需要思考怎么去实现。
多做几个数据验证是没错的,至少让我知道他是怎么把数据弄到数据库中的
5 数据库的选择
现在世界上流行一种新型的数据结构 叫做NoSql,这玩意不是里我太远,而是是我的一个知识盲区,暂时先不去触碰他,还是先做传统的数据库,那么为什么不支持oracle呢?答案很简单,既然我要做中小程序,
那么和oracle可能就是不是一条路上,而 Mysql MSSql属于那种中小企业以及中小型项目常用的数据库,而SqlLite属于MSSql类库中自带支持的。
6 接口定义
正统的程序接口返回值肯定是统一的,不存在那种 A是一种格式,B是一种格式,而是大家都是统一的格式,只有某个key是不同的。而JSON这种数据格式适用于全世界大部分程序需求,那么返回JSON和请求JSON是必然的了。
7.平台的选择
虽然是要搭建框架,但是也要事先学习netcore的基本内容,例如通过查资料知道微软已经全面支持docker,那么也就是跨平台可以通过docker去实现和完成,但是在学习期间发现,netcoer webapi也支持自托管和iis托管形式,这也太强大了!
那既然已经都支持这么多情况了,不能让别人在使用我的框架的时候还要自己引入docker的文件,我直接编辑好,让大家直接使用不是更好吗?每个人都只关注业务就可以了。我真是个小聪明!
8.辅助类
不多说。。谁家项目不做几个通用辅助类
9.开始搭建初级框架
ok既然已经知道目前自己需要什么,那么就用代码实现出来,下载个VS2019,随便创建几个文件,然后再把大佬的辅助类拖拽进来。然后在随便加几个属性。完成!

有点糊弄人哈。。。那么下一篇文章详细说说每个类都是什么意思吧!
创造DotNet Core轻量级框架【一】的更多相关文章
- 创造DotNet Core轻量级框架【二】
上一篇 创造DotNet Core轻量级框架[一] 10 题外话 上一篇文章感谢大家提出的各种小建议和各种讨论,但是在写文章的时候框架最最最基础的样子已经做出来了,所以大家的各种建议和意见我会在后续逐 ...
- dotnet core 通过修改文件头的方式隐藏控制台窗口
原文:dotnet core 通过修改文件头的方式隐藏控制台窗口 在带界面的 dotnet core 程序运行的时候就会出现一个控制台窗口,本文告诉大家使用最简单方法去隐藏控制台窗口. 最近在使用 A ...
- 基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始
0x00 简介 DotBPE.RPC是一款基于dotnet core编写的RPC框架,而它的爸爸DotBPE,目标是实现一个开箱即用的微服务框架,但是它还差点意思,还仅仅在构思和尝试的阶段.但不管怎么 ...
- dotnet core 2.2 安装后在vs2017中无法选择 dotnet core 2.2 为目标框架
可能有效的解决方案: 无法完全保证有效,因为我本地装上没问题,只帮同事解决过一次,貌似有效 方案就是多装几个 .net core 2.2.xxx 版本,然后可能就正常识别了. 在安装之前,先把 vs ...
- Dotnet core基于ML.net的销售数据预测实践
ML.net已经进到了1.5版本.作为Microsoft官方的机器学习模型,你不打算用用? 一.前言 ML.net可以让我们很容易地在各种应用场景中将机器学习加入到应用程序中.这是这个框架很重要的 ...
- DotNet Core 介绍
前言 asp.net core rtm 6月底即将发布,自己也想着为社区做点共享,刚好最近不太忙,看到社区的小伙伴们都在为dotnet core的推广而贡献力量,项目中刚好在用rc2版本,就多写些文章 ...
- FluentData,它是一个轻量级框架,关注性能和易用性。
http://www.cnblogs.com/zengxiangzhan/p/3250105.html FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.M ...
- dotnet core开发体验之开始MVC
开始 在上一篇文章:dotnet core多平台开发体验 ,体验了一把dotnet core 之后,现在想对之前做的例子进行改造,想看看加上mvc框架是一种什么样的体验,于是我就要开始诞生今天的这篇文 ...
- dotnet core多平台开发体验
前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...
随机推荐
- Struts2-学习笔记系列(6)-动态调用action
动态调用之前需要配置: <!--动态方法调用--> <constant name="struts.enable.DynamicMethodInvocation" ...
- jmeter 信息头Bearer
1.数据规则 2.登录时获取token信息 3.正则表达式获取token值 说明: (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它. (2)正则表达式: ( ...
- 【Tool】IDEA配置Maven依赖管理
IDEA配置Maven 打开IDEA,在项目界面打开[File] — [Settings] 找到构建工具,下面第一个就是Maven 主选项更换我们自己的主目录和设置目录与本地仓库 勾选[打印异常捕获信 ...
- 记录:如何使用ASP.NET Core和EnityFramework Core实现服务和数据分离
前情提要: 现有一个网站框架,包括主体项目WebApp一个,包含 IIdentityUser 接口的基架项目 A.用于处理用户身份验证的服务 AuthenticationService 位于命名空间B ...
- mybatis源码配置文件解析之二:解析settings标签
在前边的博客中分析了mybatis解析properties标签,<mybatis源码配置文件解析之一:解析properties标签>.下面来看解析settings标签的过程. 一.概述 在 ...
- CSS选择器与CSS的继承,层叠和特殊性
什么是选择器?选择器{样式;},在{}之前的部分就是"选择器","选择器"指明了{}中的"样式"的作用对象,也就是"样式" ...
- mysql5.7免安装版配置
解压之后,新建一个my.ini 内容是: [mysql] # 设置mysql客户端默认字符集 default-character-set = utf8 [mysqld] #安装目录 basedir = ...
- js判断一个元素是否在数组内
1.indexOf()返回给定元素在数组内的索引值,如果不存在则返回-1 var arr=[0,1,2,3,4,5] console.log(arr.indexOf(1)) console.log(a ...
- 前端基础-HTML(1)
1.浏览器: 1.1 浏览器内核: 渲染引擎和JS引擎 渲染引擎:负责页面内容的在(html,xml,图像等).整理讯息(加入css等),以及计算网页的显示方式,然后输出至显示器后者打印机 JS引擎: ...
- myod实验(选做)
myod实验 实验任务 1 复习c文件处理内容 2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Makefile ...