写点什么

Blazor 跻身跨平台移动应用开发

  • 2020-02-02
  • 本文字数:1167 字

    阅读完需:约 4 分钟

Blazor跻身跨平台移动应用开发

.NET Conf 2019大会的“聚焦Blazor”活动中,微软正式发布了新的实验性项目Mobile Blazor Bindings。Mobile Bindings 项目意在使用 Microsoft Blazor 和.NET for iOS/Android 实现跨平台移动应用开发。类似于React Native,Mobile Bindings 同样使用原生 UI 控件提供原生的用户观感体验。


简而言之,Mobile Blazor Bindings 实现了 Blazor 编程模型向移动端开发的扩展。正如微软.NET 工程师 Eilon Lipton 撰文指出,对于一直使用XAML、Razor模板和Xamarin构建混合移动端应用的 XAML 和 Xamarin 开发人员,以及使用Blazor开发Web应用的开发人员而言,Mobile Bindings 独具吸引力。


Mobile Blazor Binding 的成功与否,取决于开发人员是否愿意在原生移动应用中使用具有 Razor 语法和特性的 Blazor 风格编程模型,去编写标记语言,实现数据绑定。


Lipton 给出了一段示例代码,直观展示了具有一定 Razor 经验的 Web 开发人员如何使用 Mobile Blazor Bindings 开发移动应用。示例代码定义了一个具有按钮和点击计数器的基本视图。


<StackLayout>    <Label FontSize="30"           Text="@("You pressed " + count + " times")" />    <Button Text="+1"            OnClick="@HandleClick" /></StackLayout>
@code { int count;
void HandleClick() { count++; }}
复制代码



图片来源:微软官方文档。


类似于Razor组件在混合应用开发中的一般用法,上面的代码段中同时使用了Xamarin.Forms StackLayout和原生 C#代码处理 UI 行为。要在 Web 应用中实现同样的基本视图,可使用类似的代码结构,只是 UI 描述需要使用 HTML 标记替代 Xamarin.Forms 标记。


微软在其.NET Conf 2019大会上提出,Mobile Blazor Bindings 意在将 Blazor 扩展为一种全栈开发框架。下图清晰阐释了 Blazor 发展的各个维度,以及 Mobile Blazor Bindings 的适用之处。



图片来源:微软官方文档。


开发人员对微软的这次官宣反应不一。尽管一些人对 Blazor 工具箱的新功能扩展持欢迎态度,也有一些开发人员对引入.NET 技术创建 UI 所导致开发选择上的复杂性表达了担忧。开发人员将难以在技术投入上做出抉择,团队的发展方向也会深受困扰。一些人进一步担心微软未来将会终止其中一些项目的发展,导致投入其中的开发人员无所适从。


更具体而言,一些持批评意见的人着重指出,Blazor 的 Web 和移动应用事实上并未共享相同的 UI 定义,削弱了在这两个平台上使用单一编程模型的价值。此外,批评人士希望微软能将 Blazor 的发展重心聚焦于Progressive Web AppsWebAssembly,将移动端开发交给WPFUWPXamarin


Blazor 基于.NET Standard 2.0运行,其原生 UI 组件依赖 Xamarin.Forms。Mobile Blazor Bindings在GitHub上开源提供,需.NET Core 3.0/3.1支持。


原文链接:


Blazor Makes Its Way into Cross-Platform Mobile App Development


2020-02-02 09:004076

评论 1 条评论

发布
用户头像
不看好
2020-02-03 12:18
回复
没有更多了
发现更多内容

手机影像内卷几时休?

脑极体

2022年,中轻度游戏出海路在何方?

Geek_2d6073

简析攻防演练中蓝队的自查内容

穿过生命散发芬芳

6月月更 攻防演练

疫情期间居家办公的总结体会 |社区征文

三掌柜

初夏征文

TopoLVM: 基于LVM的Kubernetes本地持久化方案,容量感知,动态创建PV,轻松使用本地磁盘

大卡尔

Kubernetes 云原生 6月月更

牛客java选择题每日打卡Day3

京与旧铺

6月月更

HotSpot JVM 「02」Java Object Layout

Samson

学习笔记 hotspot 6月月更

在线文本数字识别列表求和工具

入门小站

工具

架构实战营模块五作业

融冰

通过Rust语言计算加速技术突破图片识别性能瓶颈​​

宇宙之一粟

rust 6月月更

物联网协议的王者:MQTT

wljslmz

mqtt 6月月更

数据治理啥都干

奔向架构师

数据治理 数据资产 6月月更

linux之git高级命令

入门小站

Linux

flutter系列之:flutter中的flow

程序那些事

flutter 程序那些事 6月月更

# 补齐短板-开源IM项目OpenIM关于初始化/登录/好友接口文档介绍

Geek_1ef48b

LabVIEW Arduino TCP/IP远程智能家居系统(项目篇—5)

不脱发的程序猿

物联网 传感器 LabVIEW Arduino 远程智能家居系统

国内首款开源 MySQL HTAP 数据库即将发布,三大看点提前告知

StoneDB

MySQL #数据库 #开源

Flutter TextField详解

yechaoa

flutter 6月月更 TextField

聊聊我的远程工作体验 | 社区征文

Nick

远程办公 初夏征文 高效办公 WLB 在线会议

亿级月活全民K歌Feed业务在腾讯云MongoDB中的应用及优化实践

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 分布式数据库mongodb NoSQL 数据库

【题解】剑指 Offer 15. 二进制中1的个数(C语言)

未见花闻

6月月更

我的第一个Vue项目-Demo

Python研究所

6月月更

架构实战营毕业设计

KennyQ

gm

Prometheus 2.34.0 新特性

耳东@Erdong

release Prometheus 6月月更

leetcode 1143. Longest Commom Subsequence 最长公共子序列(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

K8S学习笔记--一起来看容器的本质

IT蜗壳-Tango

IT蜗壳教学 6月月更

对象的访问机制及其他

Jason199

js 原型链 6月月更

获取Windows操作系统的语言版本

dvlinker

操作系统语言 UI Language MSDN

模块五作业

Elvis FAN

Maven的安装使用

zarmnosaj

6月月更

微博评论高性能高可用架构

intelamd

Blazor跻身跨平台移动应用开发_语言 & 开发_Sergio De Simone_InfoQ精选文章