使用Asp.net Core3Blazor 的全栈式网站开发体验

最新的微软视频: Full stack web development with ASP.NET Core 3.0 and Blazor - BRK3017  


以下是重要步骤截图配注解,注意图多杀猫:

640?wx_fmt=png

此图是.Net Core3的全栈解决方案示意图。

        话说此图的第一部分Client 是可以灵活替换的,哪怕它是Vue,Angular 或者 JQuery 都是很完美的一个解决方案的。我想到现在如果是10年前,我还是有点害怕的,那时候启动个项目还是很难的一件事情,那是JQ的时代,插件的时代,IFrame的时代,所有的公司都在做自己的框架,然后鼓吹一番!那个时代也有很多强大的库,比如ExtJs,Hae之流就是巅峰的产物,但我用的比较少,因我那时一直是忙着到处找插件,或自己写插件。为什么那么长的时代没有一个出色的,一统江湖的框架(jQuery不算,它只是基石)?现在看来,我认为是没有产生一个一统江湖的Router,而Router是框架的粘合剂。那时不太强调Router的概念,不就是添加Iframe嘛,不就是History Api嘛,你牛掰,还做了Page的生命周期, 都是这样的声音,Router部分即使做了也吹不响,吹响了也没人跟风用的,但没有的话,新手小白们还很难开头做项目,加之大量的后端在兼职写jsp。于是到这现在这个美好时代,有Vue,Angular了,一个命令行就做好框架,大家且行且珍惜吧!

        第二部分,广大Javaer 请手动略过,而且Neter们可以再次信仰充值。Mvc 和 Web Api的Controller完美统一,MVC和Razor pages 的视图语法统一,Razor Pages可以灵活的介入而无需MVC的诸多约定(asp的再生)。  SignalR的简单至极的用法,支持Web,  .Net  ,和Java的客户端连接,它的后台开发你可以用Web服务承载,甚至可以用控制台或桌面程序控制。说到桌面程序可以控制每个Client ,让我想到了网络游戏的开发,或许SignalR可以支持网络游戏的后台管理部分工作,大胆设想一下,以后网络游戏的网络连接模块全用SignalR编写, 而游戏的其它重心就只剩图形和逻辑模块(即游戏的Client开发)了。我完全没接触过游戏开发,也不知道已经有的联网模块如何的 Beautiful,但我认为SignalR是微软送给全世界开发者的礼物,无论他是用什么语言,在什么领域。因为它的开发模型简单至极,美到要死!

        第三部分,gRPC的到来是一场革命,虽然它把后端的战线又拉长了1公里,但这1公里是超值的。畅想以后广大的Net, Java, Python程序员可以欢座一堂,抚键盘而言欢了。而Work Services是.Net Core3中带来的服务功能,就是一个持续的进程。    

不知道细心的人有没有发现没有上图没有EF Core(数据层)呀!其实EF Core的位置在Web Api,  Worker services,和gRPC里面,它地位只是一个小工具了。

以下是启动步骤,可调试且安全的Blazor!

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

简单提到了Blazor 的路由@page , 页面即组件, Razor文件及Razor语法,如何发起对后台的Http请求,之后

演示了第三方的表格组件和前端下载Excel文件

640?wx_fmt=png        640?wx_fmt=png

640?wx_fmt=png

如何导出Excel文件

640?wx_fmt=png

浏览器侧导出文件本来是弱项,此处到底是如何实现保存文件的需要研究,真的是Net Core实现的?

640?wx_fmt=png

重要的伙伴

640?wx_fmt=png

640?wx_fmt=png

Client-side:  前端加载量大,依赖浏览器的wasm能力,响应快。而且微软标注了 Future

Server-side :前端加载小,SignalR,后端负载大,页面元素也是实时传输的, 它是随3.0正式发布的。 
这个模式我认为是微软又一次的强造的东东,力量大就是好,直的能掰弯,弯的能掰直,但真的能否推广开真的是悬疑。这又是微软的造车计划,参考asp.net平台(其它公司只有造轮子的能力,微软向来是造车的

服务端模式初始加载很少,400k, 浏览器彻底变成一个傀儡mvc 框架中的View,  Razor Pages,以及Blazor的组件都是Rendering Model ,是随着请求发送给浏览器的,而组件的State是放在Server端的, 建议第32~33分钟反复听几次!

现在的Blazor项目,浏览器端和后端像一个整体的单机程序一样,比如wpf,winform开发,组件是有状态的,但你不要关心它即可:   (这是微软的asp.net 的view_state失败后的一次绝地反击,不明白为什么微软认定了state这种东西了,难道现在的无状态HTTP不爽吗)
640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

ng & asp.net core3完美合体

640?wx_fmt=png

我们有新的Worker Services模板了,它是长时间运行的工作进程,可以承载在windows  的services, systemd,WebJobs,容器中,
aps.net core的 易用的配置项,日志及DI都是内置的,所有的一切只需要你新建一个asp.net core项目,选择Work Services模板即可!

640?wx_fmt=png

这又是极简的框架,  还是微软大法好!

640?wx_fmt=png

添加 windows的 服务支持,它就很容易部署成service了,以下是步骤!

640?wx_fmt=png

再加一句话,然后发布项目。

640?wx_fmt=png

启动服务即可:

640?wx_fmt=png

一个批萨订单的例子
640?wx_fmt=png

一次启动多个项目的设置:

640?wx_fmt=png

proto文件是自动编译的。

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

预告一下:NET Core 3.0 launches at .NET Conf 2019 September 23-25, a free, virtual developer event.

原文链接:https://my.oschina.net/u/1540190/blog/3089863


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3327 [SDOI2015]约数个数和 (mobius反演)

P3327 [SDOI2015]约数个数和 推导过程 求∑i1n∑j1md(ij)\sum_{i 1} ^{n} \sum_{j 1} ^{m} d(ij)∑i1n​∑j1m​d(ij) ∑i1n∑j1m∑x∣i∑y∣jgcd(x,y)1 \sum_{i 1} ^{n} \sum_{j 1} ^{m} \sum_{x \mid i} \sum_{y \mid j} gcd(x, y) 1i1∑n​j1∑m​x∣i∑​y∣j∑​gc…

算法学习

文章目录摘要基础算法二分倍增前缀和构造图论bfsdfs\dfs序同余最短路差分约束LCA基环树dp线性dp概率期望背包dp树形dp数位dp状压dp区间dp计数dp数据结构优化dp数据结构树上启发式合并主席树Splay线段树分治Kruskal重构树数论基础数论摘要 发现前面学的东西都忘得差不多了&…

k8s集群部分常见问题处理

目录部分常见问题处理Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题添加工作节点时提示token过期kubectl 执行命令报“The connection to the server localhost:8080 was refused”网络组件flannel无法完成初始化部分节点无法启动pod最后部分常见问题处理结合我们上…

Hyper-V + CentOS7 网络设置(视频教程)

Hyper-V Centos7 网络设置 本文目标:1、 设置虚拟机固定IP:无论物理机的网络环境怎么变化,都需要保持虚拟机的IP地址不变,保证本机使用xshell等终端访问始终用同一个IP地址2、物理机可访问虚拟机,虚拟机是否可访问网络…

P1829 [国家集训队]Crash的数字表格(推了好久的mobius反演)

P1829 [国家集训队]Crash的数字表格 / JZPTAB 推导过程 ∑i1n∑j1mlcm(i,j)\sum_{i 1} ^{n} \sum_{j 1} ^{m} lcm(i, j)i1∑n​j1∑m​lcm(i,j) ∑i1n∑j1mijgcd(i,j) \sum_{i 1} ^{n} \sum_{j 1} ^{m} \frac{ij}{gcd(i, j)}i1∑n​j1∑m​gcd(i,j)ij​ ∑d1n1d∑i1n∑jmi…

Consul的反熵

熵熵是衡量某个体系中事物混乱程度的一个指标,是从热力学第二定律借鉴过来的。熵增原理孤立系统的熵永不自动减少,熵在可逆过程中不变,在不可逆过程中增加。熵增加原理是热力学第二定律的又一种表述,它更为概括地指出了不可逆过程…

HDU 6833 A Very Easy Math Problem

A Very Easy Math Problem 推式子 ∑ai1n∑a21n⋯∑ax1n(∏j1xajk)f(gcd(a1,a2,…,ax))gcd(a1,a2,…,ax)\sum_{a_i 1} ^{n} \sum_{a_2 1} ^{n} \dots \sum_{a_x 1} ^{n} \left(\prod_{j 1} ^{x} a_j ^ k \right)f(gcd(a_1, a_2, \dots, a_x))\times gcd(a_1, a_2, \dots, …

通过Blazor使用C#开发SPA单页面应用程序(2)

今天我们尝试创建一个默认的Blazor应用。.Net Core 3.0需要Visual Studio 2019 的支持。安装.Net Core 3.0 预览版 SDK版本,注意预览版对应的VS版本,我这里安装的是v3.0.0-preview6。一定要开启预览选项才能使用Net Core Preview,在工具> …

通过Blazor使用C#开发SPA单页面应用程序(1)

2019年9月23——25日 .NET Core 3.0即将在.NET Conf上发布! .NET Core的发布及成熟重燃了.net程序员的热情和希望,一些.net大咖也在积极的为推动.NET Core而不懈的努力。在这次.NET Core 3.0中一项新的技术也首次出现在人们的视野,这就是Blazor。说起Bla…

luogu P6178 【模板】Matrix-Tree 定理

luogu P6178 【模板】Matrix-Tree 定理 1.无向图 假设现在给定一个图 G。 度数矩阵D:若存在边$ (x,y,z)(x,y,z)$ ,则 D[x][x]z;D[y][y]z;D[x][x]z;D[y][y]zD[x][x]z;D[y][y]z;D[x][x]z;D[y][y]zD[x][x]z;D[y][y]z;D[x][x]z;D[y][y]z; 邻接矩阵C:若存在边 (x,y,z)(x,y,z)(x,…

基于 WPF 模块化架构下的本地化设计实践

背景描述最近接到一个需求,就是要求我们的 WPF 客户端具备本地化功能,实现中英文多语言界面。刚开始接到这个需求,其实我内心是拒绝的的,但是没办法,需求是永无止境的。所以只能想办法解决这个问题。首先有必要说一下我…

HDU 6836 Expectation(矩阵生成树 + 期望)

Expectation 思路 题目要求每个生成树边权&\&&的期望值,假设当前这颗生成树对二进制数的第iii位有贡献,则这个位上的构成生成树的边权值一定是111,所以我们可以跑313131位二进制数的,矩阵树,每个位上的贡…

你会轻易打破规则吗?

这里是Z哥的个人公众号每周五11:45 按时送达当然了,也会时不时加个餐~我的第「86」篇原创敬上俗话说的好,不以规矩,不成方圆。但是有些时候,可能破坏规则反而是一个更有效的方式,这个时候到底该…

string(STL)

string 优点 常数相对较小,动态分配空间,自定义小于运算符和加法运算符。 转char 可以写成c_str()返回为char指针 获取长度 s.size()和s.lenth() 寻找某字符串第一次出现位置 s.find(t) 截取子串 s.substr(pos,len)长度不足则截取后缀。 访问…

P4449 于神之怒加强版

P4449 于神之怒加强版 推式子 ∑i1n∑j1ngcd(i,j)h\sum_{i 1} ^{n} \sum_{j 1} ^{n} gcd(i, j) ^ h i1∑n​j1∑n​gcd(i,j)h ∑d1ndh∑i1nd∑j1mdgcd(i,j)1\sum_{d 1} ^{n} d ^ h \sum_{i 1} ^{\frac{n}{d}} \sum_{j 1} ^{\frac{m}{d}}gcd(i, j) 1 d1∑n​dhi1∑dn​​…

架构杂谈《十》

常用开发模式一、瀑布式开发瀑布式开发是在1970年提出的软件开发模型,是一种较老的计算机软件开发模式,也是典型的预见性的开发模式,在瀑布式开发中,开发严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤进行&…

B-Donut Drone(循环/分块/DP)

B - Donut Drone 这是一道神题,其中蕴含的思维很巧妙。 在一个循环的二维矩阵中,每个点有一个权值,然后每次一个点只能向右上、正右和右下三个地方中权值最大的地方移动,要求支持两类操作,一种是移动k次,一…

[2020多校A层11.18] 三角田地(因式分解)

[2020多校A层11.18] 三角田地 对于平面上一些点&#xff0c;求解所有与含有边与x轴平行和与y轴平行的三角形面积和 n<100000 显然我们可以讨论每个直角顶点的贡献&#xff0c;然后本质上就是一个经典的数学问题&#xff0c;我们只要求出两个方向上的分量和&#xff0c;然后…

斗地主(矩阵快速幂)

地斗主 思路 看到这nnn非常大&#xff0c;感觉一定是个结论公式题&#xff0c;但是感觉又不像是排列组合&#xff0c;于是可以考虑矩阵快速幂了&#xff0c;所以关键就是得得到递推公式了。 我们将棋盘分成两部分n−num,numn - num, numn−num,num我们假定显然对num1,2,3,4,…

如何删除GIT仓库中的敏感信息

1. 前言正常Git仓库中应该尽量不包含数据库连接/AWS帐号/巨大二进制文件&#xff0c;否则一旦泄漏到Github&#xff0c;这些非常敏感信息会影响客户的信息安全已经公司的信誉。公司可能其它还有相关规定&#xff0c;如禁止私人邮件加入GIT仓库。如果违反这些规定&#xff0c;可…