摘要:
csrobot为开发提高效率,增加乐趣! https://github.com/axzxs2001/CSRobot 安装命令: dotnet tool install --global CSRobot --version 0.0.4 Nuget地址:https://www.nuget.org/pac 阅读全文
摘要:
下面的数据库类型和c#类型的映射关系,只是我个人的想法,应该不同的业务场景对应可能不一样,比如json,xml,line,polygon结构化的数据,如果在C#中有对应的实体类,可以很友好的转换,如果没有,可以用现有的类型存储,再作转换,比如json,xml都可以用string来接收。 mysql字 阅读全文
摘要:
CSRobot的gen命令,有一个参数--map,是指数据库字段类型到实体类型映射,本例是sql server到csharp的类型映射: SQL Server C# bigint Int64 binary Byte[] bit Boolean char String,Char[] date Date 阅读全文
摘要:
CSRobot https://github.com/axzxs2001/CSRobot gen命令是用来从数据库,生成实体类,前一篇文章说到要实现两个接口,其中一个是从数据库中查询出库,表,字段的信息,转成实体类。 首先说一下gen命令的属性 csrobot gen [options] 命令参数选 阅读全文
摘要:
写代码很久了了,时不时想把这些年学到的,用到的,或自己感悟到的,汇总一下,形成一个东西,或资料,或工具。但每当开始时就一片空白,总是觉得这些大家都会,这些只是自己片面的观点,这些拿不出手…… 转念又想,再不写就更老了,再说社区的力量是伟大的,在写的过程中,可以集大家之思想,来完善,优化。 所以,在这 阅读全文
摘要:
应用是演进的,通常我们用版本号来管理。api也是演进的,这篇博文就说说asp.net web api演进时的版本管理。 asp.net web api的版本管理是通过微软的一个包来实现的。 Install-Package Microsoft.AspNetCore.Mvc.Versioning 通过u 阅读全文
摘要:
dotnet tool对应的工具,本质上是一个控制台应用,在调用这个应用时,会根据传入的参数,执行应用内部的逻辑。 关于dotnet tool命令使用,参照https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-tool-install 下 阅读全文
摘要:
在.net core发布之初,dotnet cli就诞生了,dotnet cli的作用是什么呢?主要是用来创建,还原,构建,发布,测试等一系统管理功能,本来,visual studio中是有这些功能的,那为什么还另外再提供一套呢? 【注:其实在windows下的.net应用,也是可以通命令行来实现一 阅读全文
摘要:
Union就是把不相干的一些数据实体,合并起来,一起供外部查询。不用像webapi,完成查询不同的数据,需要多次请求。一次请求,获取多样数据,减少请求次数,这也是GraphQL的优势之一。怎么弄,来来来,代码看过来: using HotChocolate; using HotChocolate.Ex 阅读全文
摘要:
向对象的继承,是个好东西;GraphQL也是个好东西;怎么能有机的结合起来,发挥彼此的能量?Hot Chocklate实现了.net和GraphQL的灵活组合,一起来看看,这是接口和子类的实现: class Program { static void Main(string[] args) { In 阅读全文
摘要:
越权 越权是非常严重的安全漏洞,通常状态是开发人员对请求的限制逻辑不严格导致的。 如果系统中有角色的概念,越权可能出现不同角色间的越权和同角色间的越权。 相同角色: A用户,B用户是相同的角色。 A用户和B用户都可以调用 /photo/{id}。 这个url,如果在后端不判断这个phtoto的id属 阅读全文
摘要:
上传文件 上传文件是造成风险的很大因素,所以对上传文件进行处理是重要的,首先要处理的是:a、上传文件大小限制;b、上传文件类型(能过扩展或,或文件头)限制;c、上传的名称要替换掉;d、上传的文件要在专用区域(如果能设置权限最好)最好。 [HttpPost("/files")] public asyn 阅读全文
摘要:
隐藏web服务端信息 创建一个asp.net core mcv web项目,运行,F12查看返回信息,如下图,会清晰看到服务端的类型是kestrel. 有时安全检测要求不能显示服务端信息,这样在一定程度上能降低被 攻击的风险,具体代码如下: public class Program { public 阅读全文
摘要:
web应用相对desktop应用就要复杂一些,桌面应在一个时间点是为单访问服务,web应用,在一个时间点,设计的是为多人服务;桌面应用UI和后面代码是一体的,在一台设备上动行表示,但web服务,通常是前后端分离,后端很多时候还是很多个服务协同工作,所以web服务就要复杂一些。 web框架 这里说的w 阅读全文
摘要:
使用了AspNetCoreRateLimit三方库,starup.cs配置如下。 using AspNetCoreRateLimit; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Micr 阅读全文
摘要:
写程序和拼积木是一样的,首先要知道我们这堆积木中都有那些基本模块,然后再非常清晰知道自己这次要拼一个什么东西,那接下来就是拼搭环节,在拼搭过程中,有时还会拆除,重新来搭。 其实开发软件也是一样的,这篇先理一下desktop框架下“搭积木”的思路。 desktop框架:desktop在.net世界里面 阅读全文
摘要:
高层模块不应该依赖底层模块,两都都应该依赖抽象 一个三层的Demo /// <summary> /// 人员实体类 /// </summary> class Person { public int ID { get; set; } public string Name { get; set; } p 阅读全文
摘要:
对修改是封闭的,对扩展是开放的。 新需求对于已上线的系统是司空见惯的,最佳实践告诉我们对生产中的代码在扩展功能时不要直接修改,而是去重写一个新的方法,新类型或新服务去扩展它,这道理很简单,任何即有代码的变更,都可能带来灾难。(除非100%把握,或有100%把握的胆子,当然也有一个工种,测试能帮我们来 阅读全文
摘要:
最近工作需要,在调研BMP产品(开源和商用),重点了解了activiti和它的商业产品Alfresco Process Services,这是java的体系,成熟,完善(三方开源库是java多年开源积累下的最宝贵的财富),出身.neter的我自然就想看看.net世界里有没有类似的产品。于是就找到两篇 阅读全文
摘要:
单一职责是降低耦合度的指导思想,适用于一个微服务,一个类型,一个方法。 微服务层: 微服务一般按业务的领域来进行拆分:药房微服务就是药房的业务,护士站微服务就是护士站的业务,广义上没有什么问题,但对于一些共用业务,就犯难了,究竟放在那个微服务里?还是合并两个微服务?其实这里就单一,把共用的抽离出来, 阅读全文