1. Blazor

Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架:

使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI。 共享使用 .NET 编写的服务器端和客户端应用逻辑。 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。 与新式托管平台(如 Docker)集成。 使用 .NET 进行客户端 Web 开发可提供以下优势:

使用 C# 代替 JavaScript 来编写代码。 利用现有的 .NET 库生态系统。 在服务器和客户端之间共享应用逻辑。 受益于 .NET 的性能、可靠性和安全性。 在 Windows、Linux 和 macOS 上使用 Visual Studio 保持高效工作。 以一组稳定、功能丰富且易用的通用语言、框架和工具为基础来进行生成

2. MAUI

.NET 多平台应用程序 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用程序, 使用 .net MAUI,可以开发可在 Android、iOS、macOS 上运行的应用,Windows 以及从单个共享代码库运行的应用。

3. Blazor Hybrid

Blazor Hybrid(混合),可以通过它在 ASP.NET Core 应用中使用 .NET 生成交互式客户端 Web UI。

使用 Blazor Hybrid 将桌面和移动本机客户端框架与 .NET 和 Blazor 结合使用。

在 Blazor Hybrid 应用中,Razor 组件在设备上本机运行。 组件通过本地互操作通道呈现到嵌入式 Web View 控件。 组件不在浏览器中运行,并且不涉及 WebAssembly。 Razor 组件可快速加载和执行代码,组件可通过 .NET 平台完全访问设备的本机功能。

4. Blazor Hybrid 应用和 .NET MAUI

Blazor Hybrid 支持内置于 .NET 多平台应用 UI (.NET MAUI) 框架。 .NET MAUI 包含 BlazorWebView 控件,该控件运行将 Razor 组件呈现到嵌入式 Web View 中。 通过结合使用 .NET MAUI 和 Blazor,可以跨移动设备、桌面设备和 Web 重复使用一组 Web UI 组件。

5. 具有 WPF 和 Windows 窗体的 Blazor Hybrid 应用

Blazor Hybrid 应用可以使用 Windows Presentation Foundation (WPF) 和 Windows 窗体构建。 Blazor 为这两个框架提供 BlazorWebView 控件。 Razor 组件在 Windows 桌面本机运行并呈现到嵌入式 Web View。 通过在 WPF 和 Windows 窗体中使用 Blazor,可以将新的 UI 添加到现有的 Windows 桌面应用,这些应用可以跨具有 .NET MAUI 的平台或在 Web 上重复使用。

5. 归纳总结

大概意思就是, 可以使用 C# 建立一套用 Blazor 技术的单个共享代码库, HTML 和 CSS的交互式 UI, 可以直接生成多端应用程序 APP

类型 技术 平台 特点 特点
浏览器 SSR Windows/Linux/macOS/iPhone/Android 注(1)
浏览器 PWA Windows/Linux/macOS/iPhone/Android 注(2)
Blazor MAUI BlazorWebView Windows(UWP)、Android、iOS、macOS 注(3) 跨平台框架,用于使用 C# 和 XAML 创建本机移动应用和桌面应用
Blazor WPF BlazorWebView Windows 注(3) 与分辨率无关的 UI 框架,使用基于矢量的呈现引擎,构建用于利用现代图形硬件
BlazorWinForms BlazorWebView Windows 注(3) 可创建适用于 Windows 的丰富桌面客户端应用的 UI 框架。 Windows 窗体开发平台支持广泛的应用开发功能,包括控件、图形、数据绑定和用户输入
  • (1) Blazor Server在 ASP.NET Core 应用中支持在服务器上托管 Razor 组件。 可通过 SignalR 连接处理 UI 更新 ,组件在客户端交互后,用户交互和应用事件将触发 UI 更新。 发生更新时,将重新呈现组件图,并计算 UI diff(差异)。 此差异是更新客户端上的 UI 所需的最小一组 DOM 编辑。 差异以二进制格式发送到客户端,并由浏览器应用。

    用户退出组件之后,组件会被丢弃。

  • (2) 在 Web 浏览器内运行 .NET 代码。 Blazor WebAssembly 运行时使用 JavaScript 互操作来处理 DOM 操作和浏览器 API 调用。

  • (3) 混合应用混合使用本机和 Web 技术。 Blazor Hybrid 应用在本机客户端应用中使用 Blazor。 Razor 组件在 .NET 进程中本机运行,并使用本地互操作通道将 Web UI 呈现到嵌入式 Web View 控件。 WebAssembly 不用于混合应用

**6. 测试工程

项目地址

https://github.com/densen2014/BlazorMaui

https://gitee.com/densen2014/BlazorMaui

项目结构

运行截图











**7. 相关文章:

在 M1 Mac 上开发 .NET MAUI (iOS)

在 Mac 上开发 .NET MAUI

项目源码

Github | Gitee

关联项目

FreeSql QQ群:4336577、8578575、52508226

BA & Blazor QQ群:795206915、675147445

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名AlexChow(包含链接: https://github.com/densen2014 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

AlexChow

今日头条 | 博客园 | 知乎 | Gitee | GitHub

Blazor Hybrid / MAUI 简介和实战的更多相关文章

  1. Tcpcopy简介与实战

    码农博客 即将到期,现将博客中部分文章转载到博客园.本文发表与2012年,基于tcpcopy 0.6版本.转载时略有删减. Tcpcopy简介 TCPCopy是一种请求复制(所有基于tcp的packe ...

  2. LTTng 简介&使用实战

    一.LTTng简介 LTTng: (Linux Trace Toolkit Next Generation),它是用于跟踪 Linux 内核.应用程序以及库的系统软件包.LTTng 主要由内核模块和动 ...

  3. mfs分布式系统从理论简介到实战部署

    文章前面想说的话:这篇博客写出来真是有点累到了,本来昨天就基本就写好了,放在草稿里面,今天打开就没有了!!唉,就尼玛离我而去了,只有重写,然后中间虚拟机还“爆炸”重启又搞了一会,不容易呀!!希望各位博 ...

  4. [转]Tcpcopy简介与实战

    Tcpcopy简介 TCPCopy是一种请求复制(所有基于tcp的packets)工具 ,其功能是复制在线数据包,修改TCP/IP头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的,从 ...

  5. hybrid app 简介

    Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”. Hyb ...

  6. Hybrid App简介

    Hybrid App 是混合模式应用的简称,兼具 Native App 和 Web App 两种模式应用的优势,开发成本低,拥有Web技术跨平台特性.目前大家所知道的基于中间件的移动开发框架都是采用的 ...

  7. java微服务简介与实战

    今年做了一段时间的可见光.ceph存储,后端开发微服务项目,在这记录点东西,也方便大家借鉴查找. springboot的项目实例:https://github.com/ityouknow/spring ...

  8. Elasticsearch简介与实战

    什么是Elasticsearch?   Elasticsearch是一个开源的分布式.RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene.   Lucene 可以说是 ...

  9. MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI

    1. 前言 距离上次发<MAUI初体验:爽>一文已经过去2个月了,本计划是下半年或者明年再研究MAUI的,现在计划提前啦,因为我觉得MAUI Blazor挺有意思的:在Android.iO ...

随机推荐

  1. List和 Map区别?

    一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复:Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的.

  2. read,readline,readlines的特点与区别

    1.read 读取全部文件 with open("test.text", "r",encoding='utf8') as f: print(f.read()) ...

  3. 如何将springboot工程打包成war包并且启动

    将项目打成war包,放入tomcat 的webapps目录下面,启动tomcat,即 可访问. 1.pom.xml配置修改 <packaging>jar</packaging> ...

  4. 用js中的let等操作,要手动开启ECMAScript6(如果不设置,let等ES6语法会报错)

    问题:idea默认没有开启ECMAScript6,需要进行设置:(如果不设置,let等ES6语法会报错)步骤: File | Settings | Languages & Frameworks ...

  5. 利用Matlab快速绘制栅格地图

    代码演示 % 基于栅格地图的机器人路径规划算法 % 第1节:利用Matlab快速绘制栅格地图 clc clear close all %% 构建颜色MAP图 cmap = [1 1 1; ... % ...

  6. poj_2386_dfs

    描述 由于最近的一场雨,农夫john的田地里很多地方流入了水,由一个N*M的矩形表示.每个方格要么有水(W)要么是干的(.).农夫想要知道他的田地里形成了多少池塘. 一个池塘由有水的方块相连,每个方块 ...

  7. javascript入门教程(二):变量

    大家好,我从今天开始就会正式讲javascript的语法方面.变量 js中的变量一般使用var来声明(es6的let不在本教程讨论范围内),可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值 ...

  8. html5知识点补充—mark元素的使用

    使用mark元素高亮文本 利用mark元素,文档作者可以高亮显示文档中的某些文本以达到醒目的效果. 如果用户在站点进行搜索,搜索页面中的关键字可以高亮显示.这时,就可以很好的利用到mark元素.不选用 ...

  9. H5 视频播放解决方案

    前两天,美团推出的杨洋H5火爆朋友圈.里面主要的是多段视频播放.暂停.听起来很简单,但是由于腾讯白名单限制,在微信浏览器,qq浏览器,会自动将video标签中非腾讯域名的视频 ,自动全屏,结尾追加视频 ...

  10. vue中事件冒泡规则和事件捕获规则

    <div id="app"> <div @click="handleClickOne"> <p @click="hand ...