开始为移动设备(任何手机)构建 Web 应用程序。
使用 ASP.NET 3.5/ASP.NET 4.0 和 C# 的最佳方法是什么?

更新(2010 年 2 月)
有使用 Windows Mobile 7 的消息吗?

有帮助吗?

解决方案

这取决于你是否真的想要 支持每部手机 或者仅限高端或新手机(例如 iPhone),它们在渲染网页方面没有太多限制。如果你能要求真实的 根据要求在手机上支持 HTML 渲染、Javascript 和 cookie, ,那么真正的约束是 屏幕尺寸有限. 。您应该可以很好地进行 ASP.NET 中的“正常”Web 开发,并注意页面的大小。

如果是这样的话, 你可以停止阅读这里。

如果你 真的很想支持每部手机, 尤其是旧手机,您应该知道手机有不同类型。他们中的许多人都有 限制和约束 显示网页。其中一些可以使用 JavaScript,但很多都不能。其中一些可以显示 HTML 内容,但许多其他则不能。他们必须依赖“无线标记语言”标准来访问网络。因此,建立一个支持所有这些不同设备的网站并不容易。

以下是一些一般内容(不是特定于 ASP.NET)的链接,它们可以帮助您了解全貌:

然而,正如我已经提到的,它们的主要限制是屏幕比普通 PC 的屏幕小。而且很多手机不支持JavaScript、Cookies,有的甚至不显示图像。

手机有特殊的标记标准。 WML 页面 例如,它是广泛采用的手机标准。WML 代表“无线标记语言”,它基于 XML。您可以找到 WML 的描述和参考 在 w3schools.com 上.

下面的代码显示了一个示例 WML 页面:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
   "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>
   <card id="card1" title="Stackoverflow">
      <do type="accept" label="Menu">
         <go href="#card2"/>
      </do>
      <p>
         <select name="name"> 
            <option value="Questions">Questions</option>
            <option value="MyAccount">My account</option>
            <option value="FAQ">FAQ</option>
         </select>
      </p>
   </card>
   <card id="card2" title="Menu">
      <p>
           You selected: $(name)
      </p>
   </card>
</wml>

好消息是,ASP.NET 自动呈现 WML(和其他移动标记标准)内容。您不必自己编写 WML 文件。内置机制可检测 Web 请求的设备(手机)类型。但是,ASP.NET 上的移动设备检测对于某些(较新的)设备无法正常工作。看一眼 世界大学联合会, ,一个 XML 配置文件,其中包含有关许多移动设备的功能和特性的信息。

您可以在标准 Web 浏览器中测试您在 ASP.NET 中开发的页面,但它不会给出您所开发内容的正确图片。有一些模拟器可以解决这个问题,它们可以在台式计算机上模拟手机。有一个 微软支持文章 其中解释了您可以在哪里下载它们。

ASP.NET 移动控件

ASP.NET Mobile Controls(以前称为“Microsoft Mobile Internet Toolkit”)扩展了 .NET Framework 和 Visual Studio,使 ASP.NET 能够向各种移动设备提供标记,从而构建移动 Web 应用程序。

ASP.NET 移动控件呈现适当的标记(HTML 3.2、WML 1.1、cHTML、XHTML),同时处理不同的屏幕尺寸、方向和设备功能。

了解更多 在官方网站上.

其他提示

由于我在加拿大从事无线网络工作,因此我应该提到几件事。尝试保持所有图像较小(甚至不存在),以增加加载时间并减少数据费用。在我们的网络上,如果用户未订阅套餐,我们的网络将收取 15 美元/mb 的费用。手机尝试下载的一些未经优化的图像很容易让用户付出代价,而且这些大图像无论如何看起来都不会很好。

我知道这不会影响您,但如果您使用任何其他协议,例如流式传输或任何基于 UDP 的协议,请将最大数据包大小设置为至少 1300 字节或更低。仅仅因为移动设备在网络中移动时的工作方式,就会添加额外的标头信息。对于 TCP/IP,我们使用 MSS 钳位来防止大数据包问题,但这不能应用于任何 UDP 传输或任何使用身份验证标头的安全协议。如果您的目标手机是 RIM 提供的,则这一点可以完全忽略。

某些手机​​在与您的服务器通信时可能会使用 WAP 代理,如果是这种情况,请尝试避免使用任何需要保持活动 TCP/IP 的连接。一些代理设置为不允许任何保持活动会话通过它们,尽管我相信大多数新代理都很好。

我确信还有更多、最重要的事情您应该牢记在心,即与移动设备的 IP 连接比打开网络浏览器要复杂得多。这种传输可能非常棘手,所以如果你尝试做一些非常奇特的事情,即使它现在有效,它也可能并不总是有效。还有最后一点,延迟和数据包丢失可能会大幅波动,因此如果您实时执行任何操作,延迟可能会达到 200+ 毫秒,而且我已经看到数据包丢失短期内飙升至 20-30% 的水平次。

祝你好运,如果您有任何具体问题,请务必询问他们。

scroll top