「实用推荐」如何为桌面 移动跨平台应用选择UI框架/APP架构?

DevExpress .NET MAUI UI组件库提供了用于Android和iOS移动开发的高性能UI组件,该库包括数据网格、图表、日程、数据编辑器、CollectionView和选项卡组件。

获取DevExpress .NET MAUI最新正式版下载(Q技术交流:532598169)

“一次编写,随处运行”——这个口号帮助Java在20世纪90年代中期获得了广泛的普及,从那时起,许多跨平台框架被引入,比如Ionic、Flutter,当然还有.NET MAUI。这些框架允许开发人员使用相同的代码,而不考虑底层操作系统/设备类型。虽然使用单一UI框架可以节省时间/资源,但这种开发策略的有效性和效率完全取决于应用程序的复杂性和用户体验需求。

跨平台应用的另一种技术是共享业务逻辑和服务,但根据设备类型(桌面/移动)使用不同的UI框架。使用这种策略您将共享更少的UI代码,但可以使用每个平台的固有优势来制作高质量的界面(当然,跨平台/设备提供最佳的用户体验)。

如何为桌面 & 移动跨平台应用选择UI框架/APP架构?

单一UI项目:优势与挑战

一个完全跨平台的界面可以帮助开发团队减少开发成本和上市时间,例如使用DevExpress Blazor创建的单个页面可以通过Blazor Hybrid在Web、桌面和移动应用程序中使用。这不仅仅是一个Web组件的WebView封装器:它允许您在.NET环境中运行代码,同时访问设备功能,这种策略可以提高团队的效率,因为您可以共享代码和专业知识。

下面的内容将帮助您创建一个Blazor Hybrid应用程序:Get Started - Blazor Hybrid。

另一个快速发展的跨平台框架是 .NET MAUI,它被设计成支持不同的设备类型(桌面、移动、平板),该框架包括一些有用的特性,用于在不同目标之间共享代码:

  • 项目结构:与Xamarin不同,.NET MAUI将所有跨平台代码合并到一个项目中。
  • 特定于设备的自定义:自适应布局XAML扩展允许您基于设备和操作系统类型更新控件属性。
  • 原生UI元素:在底层.NET被转换成原生的特定于操作系统的元素,确保了特定于设备的用户体验。

这些核心功能可以帮助您创建针对不同设备的单一代码库应用程序。

下面是一个如何为移动和桌面设备指定不同布局的示例(移动一栏,桌面两栏):

<Grid ColumnDefinitions="{OnIdiom Phone='*', Desktop='*,500'}" ... >

这种技术对于相对简单的应用程序非常有效,然而业务应用程序通常需要更复杂的特定于设备的更改。例如桌面客户端可能包含带Ribbon和Docking的复杂视图,这些控件通常被移动设备上的其他元素所取代。

此外,手机上的整个用户流程可能会有很大的不同。例如,本地单元格编辑在桌面应用程序中很常见,但对于移动设备,您可能更喜欢分别显示细节和编辑屏幕,您可以在手机上的许多应用程序(如Contacts)中找到这种模式。

下面的图片说明了一些例子,它可能是具有挑战性的创建一个单一的UI代码库:

当期望的桌面界面和移动界面之间存在显著差异时,创建大量特定于设备的触发器可能会很快使代码复杂化(使其难以开发和维护)。

如何为桌面 & 移动跨平台应用选择UI框架/APP架构?

如何为桌面 & 移动跨平台应用选择UI框架/APP架构?

如何为桌面 & 移动跨平台应用选择UI框架/APP架构?

如何为桌面 & 移动跨平台应用选择UI框架/APP架构?

具有设备特定UI框架的应用程序

使用单一UI平台为代码共享提供了更多的机会,但是在处理具有复杂接口的应用程序时,利用这些优势是一项挑战。如果您正在开发这样的应用程序,可能需要为不同的客户端类型使用单独的UI框架,并重用非可视化代码。这允许您利用每个平台,并且仍然共享相当多的代码。

如何为桌面 & 移动跨平台应用选择UI框架/APP架构?

在上图中,客户端应用程序使用不同的UI框架实现,而两个客户端都使用通用的服务、业务逻辑和服务器端模块。根据您的偏好,可以将所有服务器逻辑实现为单个服务,也可以创建微服务基础设施。

在客户端上,您可以选择最适合的应用程序平台:

  • WPF和WinForms(都是非常成熟的平台)为丰富的桌面用户体验提供了各种重要的特性和功能。
  • 轻量级的.NET MAUI将允许您为Android和iOS创建一个以移动用户体验为中心的应用程序。

由于WPF、WinForms和MAUI都是基于.NET的,您可以可以很容易地重用客户端服务、帮助器和模型类。实现更多代码共享的关键是一个松散耦合的体系结构,模块之间可以相互隔离。MVVM设计模式将帮助您将视图与视图模型解耦,并使用依赖注入轻松引入外部依赖。

如果您采用这种策略,项目结构可能如下所示:

如何为桌面 & 移动跨平台应用选择UI框架/APP架构?

  • Client.Shared - 客户端服务,通用助手
  • DataModel - 数据库对象的模型
  • DesktopClient - WPF/WinForms应用程序
  • MobileClient - .NET MAUI 应用程序

WebApiService - 包含业务逻辑和处理对数据库访问的web服务,注意:您可以使用DevExpress免费Web API服务来实现服务器端安全性和基于角色的数据访问。

DevExpress跨平台 .NET App UI (XAF) 基于类似的想法,数据处理、安全性、业务逻辑和其他共享模块被设计为与视图无关的块,在引入新的可视化客户端时,您可以轻松地重用大部分代码。

总结

为给定平台选择最佳UI框架至关重要,因为它决定了开发过程、用户体验,并最终决定了项目的成功。统一的跨平台UI对于简单的应用程序、最小可行产品(MVPs)或次要设备的卓越用户体验不是主要关注的时候,这或许是一个有效的解决方案。

对于更复杂的应用程序,共享UI代码的可能性可能会受到限制,因为桌面设备和移动设备的用户流存在显著差异。通过分离可视化客户端并利用每个UI平台的优势,您可以开发高影响力的应用程序,来高度满足用户需求。松耦合体系结构不仅允许广泛的代码重用,而且还确保代码保持干净、可维护和可测试。

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

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

相关文章

ABB机器人---基础编程

目录 第一章 代码解释 1.1 基础代码 1.1.2 关于 VAR robtarget pos 1.1.3 关于四元数 1.2 机器人初始化程序 1.3 配置通信 (ProfiNet 示例&#xff0c;ABB RAPID) 1.4 设置干涉区 (ABB RAPID) 1.5 示教轨迹和自动过程 (ABB RAPID) 1.6 配置抓手并进行抓取操作 (ABB RA…

springboot错误

错误总结 1、使用IDEA 的 initialalzer显示2、IDEA 新建文件 没有 java class3、java: 错误: 不支持发行版本 22解决方法4、IDEA-SpringBoot项目yml配置文件不自动提示解决办法 1、使用IDEA 的 initialalzer显示 IDEA创建SpringBoot项目时出现&#xff1a;Initialization fail…

公认最好用的随身wifi品牌推荐!欧本VS闪鱼VS格行随身wifi哪款更好用?欧本随身wifi靠谱吗?

最近小编后台私信快被问爆了&#xff0c;都想让测评一下自己相中的随身wifi到底行不行。该说不说随身wifi品牌真是越来越多了&#xff0c;今天就挑选咨询量最多的三款&#xff1a;格行&#xff0c;欧本&#xff0c;闪鱼&#xff01;咱们各方面都实测一下&#xff0c;看看哪款更…

基于ucos-ii操作系统的生产者消费者-问题

目 录 第1章 题目分析. 1 1.1 生产者线程... 1 1.2 消费者线程... 1 1.3 缓冲区... 1 1.4 进程的同步与互斥... 1 第2章 解决方案. 2 2.1 总体方案... 2 2.2 生产者问题... 2 2.3 消费者问题... 3 2.4 进程问题... 5 第3章 实验结果. 6 3.1 运行结果... 6 3.2 结果分析... 8 第…

提取 Chrome、Firefox 中储存的用户密码用于凭据发现

操作环境 Chrome 浏览器 Version 125.0.6422.112 (Official Build) (64-bit)Firefox 浏览器 Version 126.0 (64 位) Chrome 浏览器储存密钥原理 新的 Chrome 浏览器储存密码的方案是使用 Chrome 生成的 AES 密钥对用户密码进行加密之后储存在 Sqlite 数据库文件中&#xff0c;A…

Linux 内核之 mmap 内存映射的原理及源码解析

文章目录 前言一、简介1. mmap 是什么&#xff1f;2. Linux 进程虚拟内存空间 二、mmap 内存映射1. mmap 内存映射的实现过程2. mmap 内存映射流程2.1 mmap 系统调用函数2.2 ksys_mmap_pgoff 函数2.3 vm_mmap_pgoff 函数2.4 do_mmap_pgoff 函数2.5 do_mmap 函数2.6 get_unmappe…

私域流量的真谛:构建并运营属于你自己的私域生态

大家好&#xff0c;我是来自一家专注于私域电商行业的软件开发公司的产品经理&#xff0c;拥有超过七年的行业经验。今天&#xff0c;我想和大家聊聊私域流量的真正含义&#xff0c;以及为何我们应该关注并努力打造属于自己的私域生态。 什么是私域流量&#xff1f; 私域流量&…

HCIA第二天复习上

延长传输距离-------中继器&#xff08;放大器&#xff09;------物理层设备 可以延长5倍传输距离 增加网络节点数量 网络拓扑结构 1直线型拓扑 信息安全性差 网络延迟高传输速度慢 2环形拓扑 3星型拓扑 4网状型拓扑 传输效率高&#xff0c;…

【字典树 马拉车算法】336. 回文对

本文涉及知识点 字典树 马拉车算法 336. 回文对 给定一个由唯一字符串构成的 0 索引 数组 words 。 回文对 是一对整数 (i, j) &#xff0c;满足以下条件&#xff1a; 0 < i, j < words.length&#xff0c;i ! j &#xff0c;并且words[i] words[j]&#xff08;两个字…

通过注意力调节实现更好的文本到图像生成对齐

近年来&#xff0c;生成性AI技术在众多领域取得了前所未有的进步。大规模预训练模型的出现激发了各种下游任务中的新应用。这在文本到图像生成领域尤为明显&#xff0c;例如Stable Diffusion、DALL-E 2和Imagen等模型已经显著展示了它们的能力。尽管如此&#xff0c;复杂提示中…

appium篇-windows桌面自动化(一)[环境配置]

1、windows版本&#xff1a;win10 2、winSdk版本 Windows SDK and emulator archive | Microsoft Developer 3、winAppDriver版本 1.2.99 Releases microsoft/WinAppDriver (github.com) ################ 4、python版本 Python 3.9.13 ############### 5、appium版本 Re…

hubilder Android模拟器华为手机连接不上

APP真机测试注意点&#xff1a; 1. 同一个局域网下 2. 手机连接USB模式&#xff08;华为选择USB配置&#xff1a;音频来源&#xff09; &#xff0c;开发者模式 3. 实在不行重启HBuilderX再运行真机 可是卡在了“正在安装手机端HBuilder调试基座...” 就没反应了&#xff1f;&…

【高时效通路】

一 高时效通路 1.1 pathchdumper 实时数据拉取、实时数据处理、5分钟微批dump来加速时效性&#xff0c;具体来说&#xff1a; 实时数据拉取&#xff08;Fetcher&#xff09;&#xff1a;基于Databus Fetcher基建&#xff0c;直接对接F0层实时拉取最新数据&#xff0c;保证该…

Springboot整合Minio对象存储超级详细讲解以及配置搭建

windows环境下搭建minio步骤 1.从minio官网进行查看详细信息 地址&#xff1a;https://min.io/里面有详细的配置信息搭建成功之后如下如所示&#xff1a;用户名密码默认情况下为 username&#xff1a;minioadmin password&#xff1a;minioadmin2.搭建成功之后的访问 地址&…

vue项目实战 - 如果高效的实现防抖和节流

在Vue项目中&#xff0c;处理高频事件的优化至关重要&#xff0c;直接影响用户体验和应用性能。防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;是两种常用且有效的方法&#xff0c;可以控制事件触发频率&#xff0c;减少不必要的资源消耗。如何在…

SEO优化,小白程序员如何做SEO优化流量从0到1

原文链接&#xff1a;SEO优化&#xff0c;小白程序员如何做SEO优化流量从0到1 1、SEO是什么&#xff1f; SEO即&#xff1a;搜索引擎优化(Search Engine Optimization)&#xff0c;是一种通过优化网站结构、内容和外部链接等因素&#xff0c;提高网站在搜索引擎中的自然排名&…

DeepDriving | CUDA编程-03:线程层级

本文来源公众号“DeepDriving”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;CUDA编程-03:线程层级 DeepDriving | CUDA编程-01&#xff1a; 搭建CUDA编程环境-CSDN博客 DeepDriving | CUDA编程-02&#xff1a; 初识CUDA编程-C…

Linux之共享内存mmap用法实例(六十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

外卖霸王餐返利外卖会员卡小程序开发

外卖霸王餐返利外卖会员卡小程序开发 "社交电商赋能下的外卖返利小程序"是专为商家与用户双赢而设计的创新平台。 以下是其开发方案的详细步骤&#xff1a; 一、需求梳理&#xff1a;首先&#xff0c;我们需要明确小程序的核心功能和特色。包括设定活动类型、返利…

【Docker】Linux 系统(CentOS 7)安装 Docker

文章目录 对 VMware 软件的建议官方说明文档Docker安装卸载旧版本docker设置仓库开始安装 docker 引擎最新版 Docker 安装指定版本 Docker 安装&#xff08;特殊需求使用&#xff09; 启动 Docker查看 Docker 版本查看 Docker 镜像设置 Docker 开机自启动 验证开机启动是否生效…