热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows8的WPF技术与HTML5的比较

Windows8风格程序支持使用WPF和HTML两种方式进行编程。本人之前曾使用WPF开发过概念版QQ,现在又在使用HTML5。两种技术都略懂,略懂。所以将两者做
Windows8风格程序支持使用WPF和HTML两种方式进行编程。本人之前曾使用WPF开发过概念版QQ,现在又在使用HTML5。两种技术都略懂,略懂。所以将两者做了个比较。虽然WPF的命运多舛,应用不太广泛,但技术本身还是有很多亮点的。值得我们学习一下,开阔眼界。
严格说WPF与Silverlight都属于.Net技术体系下新一代的界面技术,都使用标记语言XAML搭建界面,程序语可以选择C#等.Net体系的语言。
本文为了方面将WPF与Silverlight统一称作WPF,用XAML专门表示标记语言。用HTML5表示技术、HTML表示语言。
1. XAML与HTML

     都是标记语言,客户端在运行时进行渲染。
     XAML的程序虽然需要编译,但是XAML的处理是从文本格式转换为二进制格式,节省空间。
     HTML一般在服务器端进行压缩,如GZIP,在浏览器解压缩。目的也是节省空间。
2. 页面布局
     XAML提供的布局类型较多,有Table布局,有横向或纵向的堆栈式,wrap的流式布局,绝对位,还有windows特有的dock和anchor。
     HTML5中,大量用Div,布局方式有绝对的,float的,inline,chrome等浏览器对DIV的display方式进行了扩展,可以实现横向或纵向的顺序排列。Table方式就不用说了。HTML5中的多列方式是独有的。
     两者都可以在运行时动态修改界面元素。WPF还有原生的控件模版和数据绑定模版Template,但是HTML5的innerHTML更灵活更方便。
3. 渲染逻辑
     两者类似,都有逻辑树、视觉树(显示树)的概念。同样也有reflow和redraw的概念。同样reflow也是最耗资源的。
4. 图形绘制
     位图方面两者都支持很多图片格式。不过浏览器可以天然支持GIF,WPF不行,但可以自行实现。微软好像一直和GIF有仇。
     矢量图方面,WPF支持的形状种类更丰富。不过HTML5可以利用DIV的boader、圆角的设置实现很多基本图形。两者都支持Path。都支持Canvas.
     渐变色,两者都支持,不过WPF一开始就很完善看,HTML5在逐渐完善,毕竟浏览器不是一家的。
5. 样式
     HTML5的style,CCS3什么的到家都很熟悉了。不多说了。
     WPF中也有style,style可以有内建、外链和元素内的,外链的方式引用一个资源文件和CSS类似。不过CSS的选择器做得比较好,可以通过id、class、元素类型、伪类、还有各种组合方式。毕竟HTML用的人更多,CSS有机会发展的更完善。
     WPF中对于资源可以实现完全的编程控制,HTML5中可以用变成控制内联的CSS,外联的就不行了。
6. 事件
     元素的事件都支持事件前的捕获与事件后的冒泡。
     都可以自定义事件。两者没有太大差别。
     WPF有一个特有的机制叫触发器trigger。trigger与CSS3的hover伪类有些类似,但功能要多得多。trigger的实现是基于事件模式的,只不过是将常用的场景进行了包装,从而达到了不用写C#代码就可以处理简单事件逻辑的功能。
7. 数据绑定
     WPF所独有的。与触发器配合,可以打打减少编码量,很多功能不需要用C#,只需要XAML就可以实现。
8. 3D支持
     WPF可以支持3D。HTML5标准中支持,但是目前支持的还不完善处于实验状态。WPF中操作3D的编程界面比较友好,有高级API。WebGL提供的是底层API,难度较高,不过也有很多JS类库进行了封装。
9. Transform
     WPF只支持2D的translate,rotate,skew,scale。HTML5可以支持3D的rotate和translate。但正如第八点提到的,WPF有专门的3DAPI,操作也不复杂。
10. 编程语言
     WPF支持C#、C++、VB等多种.Net语言。HTML5支持Javascript。个人感觉.Net的功能更强大,毕竟是客户端,几乎无所不能。但是脚本语言更灵活,可以在运行动态添加修改代码。
11. 数据
     WPF中可以将数据作作为资源以文本形式放在XAML内。
     最新的Chromium也支持DataList了。http://blog.chromium.org/2012/11/a-web-developers-guide-to-latest-chrome.html
12. 多媒体
     视频、声音理论上两者都支持。WPF支持更好,毕竟是客户端可以支持自己编写视频解码。HTML5这方面比较慢。视频方面由于H264的专利问题几大浏览器互相博弈。声音方面更是缓慢,没有一种音频格式能够通吃所有浏览器,在声音播放时还有诸多问题。不过前景是光明的,只是时间问题。
13. WPF中的特色
     依赖对象(DependcyObject )一套非常强大、霸气的面向对象模型。初期接触会觉得很晕,用熟了非常方便、非常爽。
14. HTML5的特色
     MathML算是一个特色。
15. 其他
     地理信息呀、WebWorker呀、WebSockets呀什么的可比较性不强。这里就不说。

推荐阅读
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 通过命令行工具 `virt-install` 配置和安装虚拟机环境。`virt-install` 是一个基于 `libvirt` 虚拟化管理库的命令行工具,用于创建新的虚拟机实例。该工具支持通过串行控制台和 SDL 图形界面进行虚拟机的安装和管理,适用于多种操作系统和虚拟化平台。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • 在使用C#编程语言从MySQL数据库中获取最近插入的记录ID时,我遇到了一些问题。具体来说,在执行以下SQL语句时出现了困难:`START TRANSACTION; SET @LASTID = 0; INSERT INTO Accounts (Col1, Col2) VALUES ('value1', 'value2'); SET @LASTID = LAST_INSERT_ID(); COMMIT;` 本文将详细探讨如何正确实现这一功能,并提供解决方案和最佳实践。 ... [详细]
  • Cookie是一种小型数据文件,由Web服务器生成并存储在用户的浏览器中。当用户再次访问同一服务器时,这些数据可以被重新读取,为用户提供个性化的体验。Cookie在软件测试中具有重要作用,能够帮助测试人员验证会话管理、用户偏好设置等功能的正确性和安全性。通过深入解析Cookie的工作原理及其在不同场景下的应用,本文旨在为软件测试人员提供全面的技术指导。 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在探索 Unity Shaders 的过程中,我逐渐意识到掌握 OpenGL 基础知识的重要性。本文将详细介绍 OpenGL 的核心概念和基本操作,帮助读者从零开始理解这一图形编程技术。通过实例和代码解析,我们将深入探讨如何利用 OpenGL 创建高效的图形应用。无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。 ... [详细]
  • 如何使用专业软件打开和编辑PHP电影文件?
    如何使用专业软件打开和编辑PHP电影文件? ... [详细]
  • 提升阅读沉浸感:精选Chrome扩展带来极致体验
    在信息爆炸的时代,提升阅读体验显得尤为重要。简悦SimpRead等精选Chrome扩展工具,不仅能够净化页面,去除干扰元素,还能通过优化排版和字体,为用户提供更加舒适、沉浸式的阅读环境,让文字内容更加赏心悦目,帮助读者更好地吸收信息。 ... [详细]
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • 定义Function类型:1functionsum(num1,num2){return num1+num2;}2varsumfunction(num1,num2){returnn ... [详细]
  • iOS开发进阶指南:第十五篇深入解析
    iOS开发进阶指南:第十五篇深入解析 ... [详细]
author-avatar
N个小灰流_701
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有