ASP.NET Core快速入门之实战篇

NO1 留言板(mysql的使用)

演示:
这个功能很简单。就是对数据库的写入和展示。如果在Windows下,相信大家分分钟都可以搞定。而初次接触.net core + mysql可能需要注意些细节。

首先打开vs2017新建一个asp.net core项目(选Web应用程序),然后nuget 导入Microsoft.EntityFrameworkCore.Tools 1.1.1和MySql.Data.EntityFrameworkCore 8.0.8-dmr。
然后新建一个DbContext类。

public class DataContext : DbContext { //【注意】连接字符串一定要加 sslmode=none string str = @"Data Source=;Database=;User ID=;Password=;pooling=true;CharSet=utf8;port=3306;sslmode=none"; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseMySQL(str); //下面就可以添加要加入数据库的实体了 //public DbSet<Message> Messages { get; set; } }

到此为止,我们已经可以利用EF Core直接连接mysql进行增删改查操作了。注意:需要导入命名空间using Microsoft.EntityFrameworkCore; using MySQL.Data.EntityFrameworkCore.Extensions;

当然。你会说,连接字符串不能硬编码到代码里面。我们也可以放配置文件。appsettings.json

{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, "ConnectionStrings": { "SqlServerConnection": "Data Source=;Database=;User ID=;Password=;pooling=true;CharSet=utf8;port=3306;sslmode=none" } }

然后把上面的硬编码注释掉。在Startup.cs文件的ConfigureServices方法添加

var connection = Configuration.GetConnectionString("SqlServerConnection"); services.AddDbContext<DataContext>(options => options.UseMySQL(connection));

【注意】项目名称和路径最好不要有中文,不然会出现些乱七八糟的问题。

【完整代码】:https://github.com/zhaopeiym/BlogDemoCode/tree/master/MessageBoard

NO2 聊天室(WebSocket的使用)

演示:

WebSocket是Html5新增的一个很酷的技术。下面我们简单讲解下这个很酷的技术

var Socket = new WebSocket(url);//创建 WebSocket 对象

创建了一个WebSocket对象后会触发打开连接事件:

Socket.onopen = function(){ }

除了onopen事件,还有其他三个事件:

Socket.onmessage //客户端接收服务端数据时触发 Socket.onerror //通信发生错误时触发 Socket.onclose //连接关闭时触发

另外还有两个方法:

Socket.send() //使用连接发送数据 Socket.close() //关闭连接

最后还有四个连接状态属性:

Socket.readyState 0 - 表示连接尚未建立。 1 - 表示连接已建立,可以进行通信。 2 - 表示连接正在进行关闭。 3 - 表示连接已经关闭或者连接不能打开。

整个WebSocket常用功能知识点就四个事件、两个方法、四种状态。简单吧,下面我们看看asp.net core后台的配合:

后台添加一个SocketHandler类,并添加一个静态方法Map:

/// <summary> /// 请求 /// </summary> /// <param></param> public static void Map(IApplicationBuilder app) { app.UseWebSockets(); //【注意】需要 nuget 导入 Microsoft.AspNetCore.WebSockets.Server app.Use(Acceptor); }

然后新增对应的Acceptor方法:

/// <summary> /// 接收请求 /// </summary> /// <param></param> /// <param></param> /// <returns></returns> static async Task Acceptor(HttpContext httpContext, Func<Task> n) {

需要在Startup.cs类里面的Configure方法里面加入

app.Map("/ws", SocketHandler.Map); //传入我们刚才新建的静态方法Map

现在为止,基本的类和配置已经完成。

我们主要操作,是在Acceptor方法里面接收和发送消息。

//建立连接 var socket = await httpContext.WebSockets.AcceptWebSocketAsync(); //等待接收数据 await socket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None); //发送消息 await socket.SendAsync(arraySegment, WebSocketMessageType.Text, true, CancellationToken.None);

后台关键代码也就这三句,建立连接、等待接收、发送消息。
不过这里有一点需要理解。建立连接后,可以接收任意多次客户端消息。所以ReceiveAsync等待接收这里需要死循环接收消息,直到连接断开。(不用担心真的死循环,没有消息发送的时候,代码会阻塞在那里等待消息)

【完整实现】:https://github.com/zhaopeiym/ChatRoom

NO3 找工作(AngleSharp的使用)

演示:
对于爬虫抓包,我相信大家初次接触都非常的热衷于此。我也不例外。
那么在asp.net core下面是否也有这样的插件呢?答案是肯定的。
HtmlAgilityPack HTML解析(感谢博主对.net core的贡献)。不过xpath用起来超级恶心。
之前在.net下面有一款Jumony (博客园大牛写的)。支持CSS选择和linq查询。简直不要太爽。可是不支持.net core。(本人试了下迁移.net core,发现很多类在.net core没有实现)
最后还是到了一款支持.net core的解析组件。并可以媲美Jumony,同样支持css选择和linq查询。那就是AngleSharp。
新建项目,nuget 安装 AngleSharp。然后以下简单使用:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyggxf.html