ASP.NET Core

.net core 实践笔记(三)--封装底层

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-10 13:24:30
前言:   有了前面的工作,简单的架子基本搭建起来了,因为条件有限,只能先测试SqlServer的了,源码放出来,也希望有兴趣的伙伴可以一起改善,相信可以成为未来进阶架构师的第一步,自己有小项目的时候可以直接拿来修改使用。   因为第一次在.net core搭建,经验欠缺,不足之处,欢迎批评指正。   后面将增加日志记录。 ** 温馨提示:如需转载本文,请注明内容出处。** 本文链接: https://www.cnblogs.com/grom/p/9972377.html 源码: https://github.com/Xinzheng-Li/ASP.NET-Core-WebApi 再次邀请大神们改善指点,感激不尽。 概述   如图,像前几篇所述,简单的搭建了三层架构,本篇重点封装底层 (WebApi.Repository)。      说明 Model 层的文件夹用于EF进行从数据库拉取实体,因为没有字段备注,故将实体类修改后拖出文件夹,以免日后更新时被覆盖掉。      IDBRepository 接口,定义了最常用的五个数据库查询接口。      DBRepository 使用Dapper和Dapper.Contrib实现接口,同时指定实现接口的数据库类型,默认MSSQL,也可在派生类中改写。      ConnectionFactory

Asp.Net Core WebApi 和Asp.Net WebApi上传文件

≡放荡痞女 提交于 2021-01-09 12:19:44
1 public class UpLoadController : ControllerBase 2 { 3 private readonly IHostingEnvironment _hostingEnvironment; 4 5 public UpLoadController(IHostingEnvironment hostingEnvironment) 6 { 7 _hostingEnvironment = hostingEnvironment; 8 } 9 [HttpPost] 10 public async Task< string > Post([FromForm] IFormCollection formCollection) 11 { 12 string result = "" ; 13 string webRootPath = _hostingEnvironment.WebRootPath; 14 string contentRootPath = _hostingEnvironment.ContentRootPath; 15 16 FormFileCollection filelist = (FormFileCollection)formCollection.Files; 17 18 foreach (IFormFile file in filelist) 19

教你配置windows上的windbg,linux上的lldb,打入clr内部这一篇就够了

杀马特。学长 韩版系。学妹 提交于 2021-01-09 07:00:02
一:背景 1. 讲故事 前几天公众号里有位兄弟看了几篇文章之后,也准备用windbg试试看,结果这一配就花了好几天,(づ╥﹏╥)づ,我想也有很多跃跃欲试的朋友在配置的时候肯定会遇到这样和那样的问题,所以我觉得有必要整理一下,让大家少走弯路。 二:一些基础概念 1. 在哪下载 现在安装windbg越来越麻烦,还要安装Windows 10 SDK,很多人就栽在这里,其实大家可以直接在网上找一键打包的windbg 6.0版本即可,才30多M,调生产调本地都很方便,顺带还可以练练SOS命令。 云盘:https://pan.baidu.com/s/1VqXVIGVHxAZVPNds1525Jg 提取码:mahg 外网:http://www.33lc.com/soft/96743.html 2. 版本问题 解压打开会有一个x64和x86文件夹,很显然,32位的程序用x86下的windbg调试,64位的程序用x64的windbg调试,如下图: 3. 其他的问题 我比较喜欢用64bit程序,所以这里使用64位的windbg。 <1> 配置微软公有符号 符号其实就是pdb文件,我们在debug模式下编译项目都会看到这个,它的作用会对dll进行打标,这样在调试时通过pdb就能看到局部变量,全局变量,行号等等其他信息,在FCL类库中的pdb文件就放在微软的公有服务器上, SRV*C:\mysymbols

ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门

Deadly 提交于 2021-01-09 01:50:11
原文: ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门 一、前言 1、本教程主要内容 ASP.NET Core MVC控制器简介 ASP.NET Core MVC控制器操作简介 ASP.NET Core MVC控制器操作简介返回类型简介 ASP.NET Core MVC控制器操作简介返回类型示例 ASP.NET Core MVC控制器参数映射逻辑说明 ASP.NET Core MVC控制器参数映射/获取示例 2、本教程环境信息 软件/环境 说明 操作系统 Windows 10 SDK 2.1.401 ASP.NET Core 2.1.3 IDE Visual Studio Code 1.27 浏览器 Chrome 69 本篇代码以下代码进行调整: https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-02 3、前置知识 你可能需要的前置知识 MVC框架/模式介绍 https://baike.baidu.com/item/mvc 二、ASP.NET Core MVC 控制器简介 1、ASP.NET Core MVC 控制器概述 在MVC Web框架中,路由模块会对接收到的请求进行匹配并转交由对应的控制器(Controller)进行处理。 控制器的作用就是处理接收到的请求

Docker部署CouchBase分布式数据库

匆匆过客 提交于 2021-01-08 20:09:28
一、拉取CouchBase指定版本的镜像 1、启动Docker ~$ sudo service docker start 2、查找版本 ~$ sudo docker search couchbase 在这里可以用couchbase/server版本,不过这个版本有点大,下载有点困难,可以选择另外一个社区版本,如下 3、下载 ~$ sudo docker pull couchbase:community-6.0.0 这个版本比较小 查看是否安装成功 community-6.0.0就是刚刚安装的版本。 二、启动CouchBase容器 ~$ sudo docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase:community-6.0.0 在浏览器输入 http://localhost:8091/ 访问,如下 三、配置CouchBase服务器 完成后进入界面管理 创建一个桶,我在这里创建一个临时桶( Ephemeral,仅限内存,也可以选择Couchase,它是先将数据存储在内存中,然后异步保存到磁盘 ) 添加后如下 最后一步是安全性,将具有适当权限的CouchBase用户添加到bucket。 选择Security选项卡,去添加用户,我在这里只给了新建用户访问刚刚新建的zyycache桶 如下: 到这里

探究SynchronizationContext在.Net异步编程中的地位

人走茶凉 提交于 2021-01-07 08:18:30
原文: 探究SynchronizationContext在.Net异步编程中的地位 引言:   多线程编程/异步编程非常复杂,有很多概念和工具需要去学习,贴心的.NET提供 Task线程包装类 和 await/async异步编程语法糖 简化了异步编程方式。 相信很多开发者都看到如下异步编程实践原则: 实践原则 说明 例外情况 ① 避免 Async Void 最好使用 async Task 方法而不是 async void 方法 事件处理程序 ② 始终使用 await 不要混合阻塞式代码和异步代码 控制台 main 方法 ③ 配置上下文 尽可能使用ConfigureAwait(false) 需要上下文的方法   遵守以上冷冰冰的②③条的原则,可保证异步程序按照预期状态正常运作;我们在各大编程论坛常看到违背这2条原则引发的莫民奇妙的死锁问题。   UI 例子: 点击按钮触发了一个远程HTTP请求,用请求的返回值修改UI控件, 以下代码会引发deadlock (类似状态出现在Windows Form、WPF) public static async Task<JObject> GetJsonAsync(Uri uri) { using ( var client = new HttpClient()) { var jsonString = await client

Docker在Linux/Windows上运行NetCore文章系列

坚强是说给别人听的谎言 提交于 2021-01-07 02:31:28
Windows系列 因为Window很简单,VS提供界面化配置,所以只写了一篇文章 Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用 Linux(ubuntu 16.04) Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 Docker在Linux上运行NetCore系列(二)把本地编译好的镜像发布到线上阿里云仓库 Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore Docker在Linux上运行NetCore系列(四)使用私有Nuget与多个本地包引用运行ASPNetCore Docker在Linux上运行NetCore系列(五)更新应用程序 可以关注本人的公众号,多年经验的原创文章共享给大家。 来源: oschina 链接: https://my.oschina.net/u/4382439/blog/3712374

ASP.NET Core 入门教程 4、ASP.NET Core MVC控制器入门

久未见 提交于 2021-01-06 21:33:00
一、前言 1、本教程主要内容 ASP.NET Core MVC控制器简介 ASP.NET Core MVC控制器操作简介 ASP.NET Core MVC控制器操作简介返回类型简介 ASP.NET Core MVC控制器操作简介返回类型示例 ASP.NET Core MVC控制器参数映射逻辑说明 ASP.NET Core MVC控制器参数映射/获取示例 2、本教程环境信息 软件/环境 说明 操作系统 Windows 10 SDK 2.1.401 ASP.NET Core 2.1.3 IDE Visual Studio Code 1.27 浏览器 Chrome 69 本篇代码以下代码进行调整: https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-02 3、前置知识 你可能需要的前置知识 MVC框架/模式介绍 https://baike.baidu.com/item/mvc 二、ASP.NET Core MVC 控制器简介 1、ASP.NET Core MVC 控制器概述 在MVC Web框架中,路由模块会对接收到的请求进行匹配并转交由对应的控制器(Controller)进行处理。 控制器的作用就是处理接收到的请求,解析用户输入并执行对应程序理逻辑,然后返回对应的输出。

GraphQL:打造自己的Directive库

我是研究僧i 提交于 2021-01-06 16:49:50
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。 ——出自 https://graphql.cn HotChocolate可以通过自定义Directive来对字段的值进行转换和处理,下在的例子就是给字符串给字符串类型的值转大写和替换。 using HotChocolate; using HotChocolate.Data; using HotChocolate.Execution; using HotChocolate.Types; using System; using System.Collections.Generic; using System.Reflection; namespace GraphQLBase003 { class Program { static void Main(string[] args) { DirectiveDemo.Run(); } } public class DirectiveDemo { public static void Run() { var schema = SchemaBuilder.New()

GraphQL:从头开始

微笑、不失礼 提交于 2021-01-06 16:48:45
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。 ——出自 https://graphql.cn 前面几篇博文介绍了GraphQL在asp.net core框架下的实例,初步了解到Hot Chocolate的功能,不如从这篇开始,细致的过一下Hot Chocoklate,看看.net下这个GrpahQL框架究竟做了点什么,我们又能做点什么。 首先使用HotChocolate有两种姿势,代码姿势(code-first)和脚手架姿势(schema-first),那长什么样呢?实例送上: using HotChocolate; using HotChocolate.Execution; using HotChocolate.Types; using System; namespace GraphQLBase001 { class Program { static void Main(string[] args) { var schemaString = @" type Query { hello: String }"; Console.WriteLine(