概述
移动设备 — — 智能手机、 功能手机和平板电脑 — — 继续流行的手段来访问网站的方式。对于许多 web 开发人员和面向 web 的企业,这意味着它是愈来愈重要,为使用这些设备的用户提供一个好的用户体验。css
如何早期版本的 ASP.NET 支持移动浏览器
ASP.NET 版本 2.0 至 3.5 包括ASP.NET 移动控件: 一套用于移动设备在System.Web.Mobile.dll程序集和System.Web.UI.MobileControls命名空间中的服务器控件。这个程序集存在 ASP.NET 4 中,但它已被否决。开发人员应尽可能将迁移到更先进的方法,在本文所述的那些。html
为何 ASP.NET 移动控件已标记为已过期的缘由是他们的设计围绕手机共有的周围 2005年及更早版本。控件是主要设计来呈现 cHTML 或 WML 标记 (而不是普通的 HTML) 为 WAP 浏览器的那个时代。但 WAP、 WML 和 cHTML 再也不是目前大多数项目,由于 HTML 现已成为移动和桌面浏览器同样的无处不在的标记语言。web
今天支持移动设备的挑战
即便移动浏览器如今几乎广泛支持 HTML,你将仍然面临许多挑战,致力于创造伟大的移动浏览体验的时候:数据库
- 屏幕大小-移动设备不一样的形式,和他们的屏幕每每远远小于桌面显示器。所以,您可能须要为他们设计彻底不一样的页面布局。
- 输入方法— — 某些设备有键盘、 一些有铁笔,其余人使用触摸。你可能须要考虑多个导航机制和数据输入的方法。
- 标准法规听从性— — 许多移动浏览器不支持最新的 HTML,CSS 或 JavaScript 标准。
- 带宽— — 手机网络性能差异很是大,并且国内一些运营商最终以兆字节来收费。所以没有万能的解决方案;你的应用程序将不得不考虑根据不能的访问设备来定义行为和其外观
一般最初接近第一次的移动浏览器支持的开发者认为它只须要支持最新和最早进的智能手机 (例如,Windows Phone 十、 iPhone 或安卓系统),也许,由于开发人员常常亲自持有此类设备。然而,低端的移动设备仍然是很是受欢迎,和它们的用户使用低端来浏览网页,您的业务将须要决定哪些范围的设备支持,考虑其可能的客户。若是您正在构建豪华健康水疗在线手册,你可能决定业务只针对高端智能手机产品,而若是您正在建立一家电影院门票的预订系统,你可能须要考虑为游客提供更强大的功能手机。浏览器
常见的解决方案
咱们到达 ASP.NET Web 窗体或 MVC 的具体技术细节以前,请注意,web 开发人员通常有三个主要的选项用来支持移动浏览器:服务器
- 什么也不作只需建立一个标准的、 面向桌面的 web 应用程序,便可依靠移动浏览器,使其能够接受。
- 优点: 它是最便宜的选择,实现和维护 — — 无需额外工做
- 缺点: 给出了最糟糕的最终用户体验:
- 最新的智能手机可能呈现和桌面浏览器同样的html展示效果,但用户仍将被迫,缩放和滚动水平并垂直操做您在小屏幕上的内容。这是远远不是理想的操做。
- 较旧的设备和功能手机可能没法使人满意的方式呈现您的标记。
- 即便是在最新的平板电脑设备 (其屏幕能够与笔记本电脑屏幕同样大),也存在二者彻底不相同的操做交互方式。触摸式输入最适用于较大的按钮,那里是没有办法将鼠标光标悬停在飞出菜单。
- 解决客户端的问题— —如今能够当心使用 CSS 和渐进加强您能够建立标记、 样式和适应不管浏览器运行它们的脚本。例如,用 CSS3 媒体查询,您能够建立在设备屏幕的窄比选定的阈值变成一个单一列布局的多列布局。
- 优点:
- 优化渲染为特定设备在使用中,即便对于未知的将来设备根据他们不管屏幕和输入的特征有
- 很容易让你在全部设备类型 — — 最小重复代码共享服务器端逻辑
- 缺点:
- 移动设备有别于桌面设备,您可能真的但愿移动页必须彻底不一样于你桌面的页面,显示不一样的信息。这种变化可能效率不高或不可能实现经过 CSS单独操做,尤为考虑到如何不一致旧设备对CSS规则的解释,特别是 CSS 3 属性。
- 没有提供的不一样的服务器端逻辑和工做为不一样的设备支持。例如,不能经过单纯的css实现一个简单的购物车提供给移动用户使用
- 低效带宽使用。你的服务器可能须要传输的标记和样式应用到全部可能的设备,即便目标设备只会使用该信息的子集。
- 解决服务器上的问题— —若是您的服务器知道什么设备正在访问它 — — 或是该设备的属性,如:屏幕大小和输入方式 等特性,不管是移动设备 — — 它能够运行不一样的逻辑和输出不一样的 HTML 标记,经过服务端视图渲染的方式
- 优点:
- 最大的灵活性。有没有限制多少,你能够改变你的服务器端逻辑的手机或优化您的标记所需的,特定于设备的布局。
- 高效的带宽使用。你只须要传送的标记和样式信息的目标设备将使用。
- 缺点:
- 代码的重复(如,让你建立你的 Web Forms pages或 MVC views类似,但略有不一样的副本)。在可能的状况,你会分解出公共逻辑进入下一层或服务,但你的UI代码或HTML标签某些部分可能必须被复制,而后保持平行。
- 设备检测是有可能出现没法识别的状况。它须要将列表或数据库的已知的设备类型及特征 (但它不会老是最新的完美数据),也不能保证准确地匹配每一个传入的请求。本文档稍后介绍一些选项和易犯的错误。
为了得到最佳效果,大多数开发者发现他们须要结合选项(2)和(3)。在客户端上使用CSS或JavaScript的甚至轻微的文体差别最好容纳,而在数据主要区别,工做流程,或标记是最有效在服务器端代码执行。网络