创造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的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...
随机推荐
- Python Requests-学习笔记(2)
你也许经常想为URL的查询字符串(query string)传递某种数据.如果你是手工构建URL, 那么数据会以键/值 对的形式置于URL中,跟在一个问号的后面.例如,httpbin.org/get? ...
- Linq 学习——将List集合作为筛选条件查询数据
例: A表是一个List集合,B表也是一个List集合 .A与B有一个共同的字段 RecognitionCarCode B表通过RecognitionCarCode去重后拿到两个值{'1','2'}记 ...
- Mysql中的分库分表
mysql中的分库分表分库:减少并发问题分表:降低了分布式事务分表 1.垂直分表 把其中的不常用的基础信息提取出来,放到一个表中通过id进行关联.降低表的大小来控制性能,但是这种方式没有解决高数据量带 ...
- break与continue用法注意事项
break 中断循环执行,跳出循环 注意,break只能中断自己所在的循环,一般用在内层循环,但是不能中断外层循环中的代码. continue 跳到循环的下一轮继续执行,结束自己所在循环体代码,继续自 ...
- 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、212345等. 要求:”4”不能在第三位,”3”与”5”不能相连。
private static String[] mustExistNumber = new String[] { "1", "2", "2" ...
- CNVD
漏洞编号 漏洞名称 漏洞积分 奖励时间 CNVD-2020-15798 中国平乐县委员会组织部网站管理系统登录存在弱口令漏洞 1.0 2020-03-09 09:58:46.0 CNVD-2020-1 ...
- (转) POJO和javabean的异同
参考:http://blog.csdn.net/lushuaiyin/article/details/7436318 一:什么是POJOPOJO的名称有多种,pure old java object ...
- windows 系统查看NVIDIA显卡GPU情况,nvidia-smi在windows上使用
cd C:\Program Files\NVIDIA Corporation\NVSMI nvidia-smi 当batch_size设置越大的时候,GPU加速越明显,但是batch_size设置 ...
- MySQL主从数据库配置与原理
1.为什么要搭建主从数据库 (1)通过增加从库实现读写分离,提高系统负载能力 (2)将从库作为数据库备份库,实现数据热备份,为数据恢复提供机会 (3)根据业务将不同服务部署在不同机器同时又共享相同的数 ...
- python学习01python入门一
在正式开启python代码的学习之旅之前,先来了解一下有关python语言的一些内容吧. python的命名,起源等等,大家自行百度了解,此处不再赘述. python是一种解释型语言,具有强调代码可读 ...