您的位置:首页 > 编程语言 > ASP

使用Asp.net Core3&Blazor 的全栈式网站开发体验

2019-08-13 22:06 204 查看

3 月,跳不动了?>>>

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

以下是重要步骤截图配注解:

一、全栈的解决方案架构

                       

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

        此图的第一部分Client 是可以灵活替换的,哪怕它是Vue,Angular 或者 JQuery 都是很完美的一个解决方案的。在追求整体的前端解决方案之初,是插件的时代,IFrame的时代。之所以没有一统江湖的框架出来,可能是没有一个一统江湖的Router,而Router是框架的粘合剂。ExtJs,Hae之类就是那时的巅峰产物,各自实现了模拟类,组件继承,路由,页面生命周期管理等等。到如今这个美好时代,有Vue,Angular了,一个命令行就做好项目框架,现在Blazor (Client-side) 是首个利用WebAssembly 实现的前端解决方案!

        在网站开发演化的过程中,前后分离的模式基本被推举为主流,但不时出现前后一体的技术架构我称之为全栈解决方案。 比如之前的Asp.net 和 MEAN 框架了。 Asp.net框架实现WebForm架构,通过重重的ViewState来实现状态的传递,最后经不起MVC的轻轻一击就让位出来了;而 MEAN框架更是思维超前,全栈用JS开发,用JSON传递数据,但又过于小众; 还有Gwt或Abp等一些技术,口号是前端直接调用后端的服务或函数。然后这一次Blazor (Server-side) 是微软第二次摸索前后一体的技术架构,是首个利用WebSocket技术实现的全栈解决方案!

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

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

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

二、如何启动Blazor的项目调试

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

 

三、Blazor的基本使用及引入第三方的Blazor组件库

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

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

        

如何导出Excel文件

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

重要的伙伴

四、Blazor的两种模式及利弊

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

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

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

现在的Blazor Server项目,浏览器端和后端像一个整体的单机程序一样,比如wpf,winform开发,组件是有状态的,但你不要关心它即可。这是微软的asp.net  WebForm架构的ViewState方案失败后的再一次追求前后一体,不明白为什么微软认定了state这种东西了,难道现在的无状态HTTP不爽吗?

五、Asp.net Core3所支持的SPA模板

 

Angular7 & asp.net core3完美合体

六、Worker Services,一个服务进程的项目模板

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

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

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

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

启动服务即可:

一个批萨订单的例子

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

七、 gRPC

proto文件是自动编译的。

 

 

八、更好的分析工具和性能

 

九、新特性及发布时间计划

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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息