Веб для мобильных устройств - лучшие практики для ASP.NET
Начинаем создавать веб-приложения для мобильных устройств (любой телефон).
Каков наилучший подход с использованием ASP.NET 3.5/ASP.NET 4.0 и C#?
ОБНОВЛЕНИЕ (февраль 2010 г.)
Любые новости с использованием Windows Mobile 7?
3 ответа
Это зависит от того, действительно ли вы хотите поддерживать каждый сотовый телефон или только дорогой или новый телефон, такой как iPhone, который не имеет многих ограничений при отображении веб-страниц. Если бы вы могли запросить реальную рендеринг HTML, поддержку Javascript и куки на телефоне в качестве требования, то реальным ограничением является ограниченный размер экрана. Вы должны нормально работать с "нормальной" веб-разработкой в ASP.NET, заботясь о размере страниц.
Если это так, вы можете перестать читать здесь.
Если вы действительно хотите поддерживать каждый сотовый телефон, особенно старый, вы должны знать, что существуют разные типы телефонов. Многие из них имеют ограничения и ограничения, отображающие веб-страницы. Некоторые из них могут использовать JavaScript, но многие нет. Некоторые из них могут отображать HTML-контент, но многие другие не могут. Они должны полагаться на стандарт "Wireless Markup Language" для доступа к сети. Поэтому нелегко создать сайт, который поддерживает все эти разные устройства.
Вот несколько ссылок на общий контент (не специфичный для ASP.NET), который может помочь получить полную картину:
Однако их основное ограничение, как я уже упоминал, это меньший размер экрана, чем на обычных ПК. Многие мобильные телефоны не поддерживают JavaScript, файлы cookie, а некоторые даже не отображают изображения.
Существуют специальные стандарты разметки для мобильных телефонов. WML-страницы - это, например, широко распространенный стандарт для мобильных телефонов. WML расшифровывается как "Wireless Markup Language", который основан на 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="Stackru">
<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 самостоятельно. Встроенный механизм определяет тип устройства (сотовый телефон) веб-запросов. Однако обнаружение мобильного устройства в ASP.NET не работает правильно для некоторых (более новых) устройств. Взгляните на WURFL, XML-файл конфигурации, который содержит информацию о возможностях и возможностях многих мобильных устройств.
Вы можете протестировать страницы, которые вы разрабатываете в ASP.NET, в стандартном веб-браузере, но это не даст правильного представления о том, что вы разработали. Для этой проблемы доступны некоторые эмуляторы, которые имитируют сотовый телефон на вашем настольном компьютере. Есть статья поддержки Microsoft, которая объясняет, где вы можете скачать их.
ASP.NET Mobile Controls
Элементы управления ASP.NET для мобильных устройств, ранее известные как "Microsoft Mobile Internet Toolkit", расширяют.NET Framework и Visual Studio для создания мобильных веб-приложений, позволяя ASP.NET доставлять разметку для самых разных мобильных устройств.
Мобильные элементы управления ASP.NET отображают соответствующую разметку (HTML 3.2, WML 1.1, cHTML, XHTML), имея дело с различными размерами экрана, ориентацией и возможностями устройства.
Узнайте больше здесь на официальном сайте.
Несколько вещей, которые я должен упомянуть, так как я работаю в беспроводной сети в Канаде. Старайтесь, чтобы любые изображения были небольшими (или даже не существующими), чтобы увеличить время загрузки и сократить расходы на передачу данных. В нашей сети, если пользователь не подписан на план, наша сеть взимает 15 долларов США / мегабайт. Некоторые неоптимизированные изображения, которые телефон пытается загрузить, могут легко стоить пользователю, и эти большие изображения не будут хорошо выглядеть в любом случае.
Я знаю, что это не влияет на вас, но если вы используете какие-либо другие протоколы, такие как потоковая передача или какие-либо протоколы на основе UDP, установите Максимальный размер пакета по крайней мере 1300 байт или ниже. Просто из-за того, как мобильный телефон работает по сети, добавляется дополнительная информация заголовка. В TCP/IP мы используем MSS-фиксацию для защиты от проблем с большими пакетами, но это не может быть применено к каким-либо UDP-передачам или к любому безопасному протоколу, который использует заголовок аутентификации. Если мобильные телефоны, на которые вы ориентируетесь, предлагаются RIM, этот пункт можно полностью игнорировать.
Некоторые мобильные телефоны могут использовать WAP-прокси при обращении к вашему серверу, в этом случае старайтесь избегать любых подключений, требующих поддержки TCP/IP. Некоторые прокси-серверы настроены так, чтобы не допускать прохождения через них ни одного сеанса поддержки активности, хотя я полагаю, что большинство новых в порядке.
Я уверен, что есть еще что-то, самое важное, что вы должны иметь в виду, что IP-подключение к мобильному телефону намного сложнее, чем кто-то, открывающий веб-браузер. Этот транспорт может быть очень сложным, поэтому, если вы попытаетесь сделать что-то действительно интересное, даже если это работает сейчас, это может не всегда работать. Кроме того, последнее замечание: задержка и потеря пакетов могут сильно колебаться, поэтому, если вы делаете что-то в режиме реального времени, ваша задержка может достигать 200+ мс, и я наблюдал всплеск потери пакетов до 20-30% для краткости раз.
Удачи, и если у вас есть какие-то конкретные вопросы, обязательно задавайте их.
Больше информации здесь: /questions/9280304/razrabotka-windows-mobile-s-chego-nachat