开始为移动设备(任何手机)构建 Web 应用程序。
使用 ASP.NET 3.5/ASP.NET 4.0 和 C# 的最佳方法是什么?
更新(2010 年 2 月)
有任何使用 windows mobile 7 的消息吗?
开始为移动设备(任何手机)构建 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 的“无线标记语言”。您可以在 w3schools.com 上找到 WML 的描述和参考。
下面的代码显示了一个示例 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 上的移动设备检测无法正常工作。查看WURFL,这是一个 XML 配置文件,其中包含有关许多移动设备的功能和特性的信息。
您可以在标准的 Web 浏览器中测试您在 ASP.NET 中开发的页面,但它不会给出您所开发内容的正确图片。有一些模拟器可以解决这个问题,它们可以在您的台式计算机上模拟手机。有一篇Microsoft 支持文章解释了您可以在哪里下载它们。
ASP.NET 移动控件(以前称为“Microsoft 移动 Internet 工具包”)扩展了 .NET Framework 和 Visual Studio,通过使 ASP.NET 能够向各种移动设备提供标记来构建移动 Web 应用程序。
ASP.NET 移动控件在处理不同的屏幕尺寸、方向和设备功能时呈现适当的标记(HTML 3.2、WML 1.1、cHTML、XHTML)。
在官方网站上了解更多信息。
自从我在加拿大从事无线网络工作以来,我应该提到几件事。尝试将任何图像保持小(甚至不存在)以增加加载时间并减少数据费用。在我们的网络上,如果用户未订阅计划,我们的网络将收取 15 美元/mb。手机尝试下载的一些未经优化的图像很容易让用户付出代价,而且这些大图像无论如何都不会好看。
我知道这不会影响您,但如果您使用任何其他协议,例如流式传输或任何基于 UDP 的协议,请将最大数据包大小设置为至少 1300 字节或更低。仅仅因为移动设备在网络中移动时的工作方式,额外的标头信息就会被添加。对于 TCP/IP,我们使用 MSS-clamping 来防止大数据包问题,但这不能应用于任何 UDP 传输,或任何使用身份验证标头的安全协议。如果您定位的手机是由 RIM 提供的,则可以完全忽略这一点。
某些手机在与您的服务器通信时可能会使用 WAP 代理,如果是这种情况,请尝试避免使用任何需要保持活动 TCP/IP 的连接。一些代理被设置为不允许任何保持活动会话通过它们,即使我相信大多数新的都很好。
我敢肯定还有更多,你应该记住的最重要的事情是,与移动设备的 IP 连接比打开网络浏览器的人要复杂得多。这种传输可能非常棘手,所以如果你尝试做一些真正花哨的事情,即使它现在可以工作,它也可能并不总是有效。最后一点,延迟和数据包丢失可能会大幅波动,因此如果您实时执行任何操作,延迟可能会达到 200 毫秒以上,而且我已经看到数据包丢失率短暂飙升至 20-30% 的水平次。
祝你好运,如果您有任何具体问题,请务必提出。