C каждым днём мобильный интернет становится всё более доступным. Мобильный телефон с gprs перестал быть диковиной. Даже wap постепенно уходит в прошлое. Wap перестаёт устраивать рядовых пользователей и заставляет разработчиков учитывать особенности мобильных браузеров.

Всё больше сайты имеют свою облегчённую, мобильную версию. Но что нужно сделать чтоб и ваш сайт смог корректно отображаться на мобильном браузере?

Для начала он должен соответствовать стандарту XHTML™ 1.0, т.к. большинство браузеров на мобильных телефонах и PDA могут корректно обработать такой контент. Также консорциум w3c месяц назад обнародовал Mobile Web Best Practices 1.0, где находятся Guidelines по созданию сайтов для мобильных устройств. Многие верят в то, что вскоре это станет стандартом.

Среда ASP.NET, если распознаёт в клиенте мобильное устройство, автоматически делает рендеринг с их спецификой, но злоупотреблять этим не стоит. Надеятся прежде всего нужно на себя. Подробнее можно узнать в MSDN и на сайте ASP.NET for Mobile.

Много интересного и полезного находится на dev.mobi и в разделе Mobile Web Initiative консорциума w3c, там же можно сделать валидацию сайта на предмет поддержки его мобильными устройствами.

Остаётся добавить, что наряду с поддержкой разнообразных браузеров для PC и Mac, разработчики не обойдут мимо мобильные устройства.

Свершилось! Несколько дней назад вышел 8319-81da479ab0d7&displaylang=en" target="_blank">.net 3.5 service pack 1. В месте с ним мы получили ASP.NET Dynamic Data, Entity Framework,  ADO.NET Data Services и много чего другого. Подообнее можно почитать тут.

Но, разумеется, в каждой бочке мёда найдётся своя ложка дёгтя. Ей стал Ajax Control Toolkit, а именно одни из его базовых компонентов - ToolkitScriptManager. После установки .net 3.5 sp1 ToolkitScriptManager, входящий в состав Microsoft Ajax Control toolkit, перестал правильно функционировать. Разработчики компонентов достаточно быстро отреагировали  и выпустили новый релиз, который имеет совместимость с носледней версией .net framework. Так что ставим новую версию, и продолжаем использовать пусть и не лучшую, но уже ставшую достаточно популярной связку MS Ajax и Ajax Control Toolkit. Новую версию тулкита качает здесь.


После переходна на новую ферсию .net framework, как и следовало ожидать, некоторый код потерял свою работоспособность. Перестали работать веб-службы. Точнее одна из них.

Серверный её код ничем не выделяется от остальных:

[WebService(Namespace = "myns")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MyService : WebService
{
  [WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json)]
  public List<string> GetData()
  {
     List<string> result;
     //вся необходимая логика
     return result;
  }
}


 Главное отличие её от других заключается в том, что обращение к ней идёт не с помощью ScriptManager и ServiceReference (в таком случае всё работает), а вызывается методом POST по url напрямую с javascript.

 В .net 2.0 всё работало на ура, но в новой версии фреймворка от сервера приходил ответ слудующего вида:

{"d":__type":"typeName","name":"item1","value":"item2"}

Т.е. получался объект d, а не тот, что передавался служюой, из-за чего скипт работал неправильно. Похожая ситуация и её объяснение описываются здесь. Security - это, конечно хорошо, но зачем было менять то, что работало в предыдущих версиях .net по умолчанию? Может это повод над тем, что пора отказываться от веб-служб и начинать использовать WCF? Ведь там это всё настраивается с помощью атрибутов.

А пока решение проблемы не найдено, приходится использовать обвёртку и закрывать от глаз тип d.

 

 


Дождались! Этой ночь Microsoft выпустили RTM версию SQL Server 2008. Официальный источник: здесь. Доступны все версии, включая новую Web Edition  Compact Edition 3.5 SP. Подробное описание редакция - на MSDN.

P.S. Надеюсь мой ключик для Developer Edition будет работать:).