Мое первое знакомство с ASP2 и VS2005
На этой страничке у меня собраны первые впечатления и заметки о новой технике программирования на новой платформе 2005 и на ASP.NET 2.0 в частности.
Обычно самый первый вопрос любой проги - это менеджер страниц, позволяющий юзеру так или иначе переходить с формы на формы и позволяющий как-то структурировать код. В ASP 1.1 я делал это так. Каждая отдельная форма - это контрол. И общие функции, повторяющиеся на всех формах - это опять же контролы. Это довольно гиморройный подход, требующий приличного кода в главной странице (который будет манипулировать видимостью пенелек и контролов при щелчках юзера на корешках форм) - хотя в итоге этот подход тоже приводит к результату. Меня просто поразила простота создания менеджера форм в ASP 2.0, достигаемая с помощью небольшой надстройки над контролами - Master/Nested Page. Менеджер форм в типовом проекте создается секунд за 20 без какого-либо программировния ВООБЩЕ. Вот тут пример такого менеджера.
Ну про неудобства ASP 1.1 можно говорить много. Больше всего меня бесило переформатирование HTML-текста при переключении в Design-mode странички. Да и остальные фишки в старой NET-студии тоже не очень радовали - миллион каких-то давно забытых XSD-файлов от давно не используемых DataSet, болтающихся в каталоге проекта, непонятность подключения клиентских VBSCRIPT-сценариев... В сущности каждое нововведение в ASP 2.0 понравилась - и новые контролы, и темы, и строка SQL-коннекта и весь настроечный файл ASP-приложения, наконец-то выведенный на форму...
Из новых контролов особенно порадовал TreeView. Я вообще люблю деревья и вставляю их в каждый проект, тк считаю, что деревья лучше отражают физическую природу данных. Но ковырять шаблонный код загрузки деревьев надоело. Поэтому меня порадовало то, что TreeView из ASP2 в один щелчок мышки без программирования вообще привязывается к XML-файлу, а к SQL-данным в несколько строчек кода. На небольших обьемах данных этот контрол работает довольно быстро, умеет даже скриптами на клиентской стороне. Тут лежит TreeView-проектик c XML и SQL источником данных. Этот проектик состоит из трех деревьев, первое из которых привязано к XML-источнику данных в Дизайн-тайме просто щелчком мышки, второе привязано к SQL-источнику данных вручную с помощью 20 строк кода, наконец, третье дерево привязано к динамически формируемому XML-файлу, выданному SQL-сервером по SELECT ... FOR XML. Обратите внимание, что второе дерево работает как серверный сценарий, а первое и третье - как клиентский. Три процедуры, формирующие источники данных - показаны здесь, а полный бекап тестовой базы этого проекта запакован в инсталляшку.
Еще одна фишечка в этом проекте (правда без особой специфики платформы 2005) - это контрольчик SQL_Image, который отображает заданный рисунок из заданного IMAGE-поля SQL-сервера. Делается это путем записи бинарного потока из SQL-сервера в выходной поток браузера. Этот контрол использован мною и на следующей страничке, на которой я обновляю URL-базу рисунка в SQL-табле и затем загружаю рисунки из URL к себе в SQL-таблу.
На этой страничке я обкатывал новые возможности контрола GridView, который понравился очень! У GridView и привязка очень удобная, и управление стилями и управление коллекцией столбцов. Этот контрол даже обновление данных выполняет без какого-либо кода! Правда для этого пришлось потратить полдня, чтобы понять, что для этого ключевой столбец в SQL-запросе на обновление должен именоваться ORIGINAL_XXXXX и параметров в DataSet указывать не надо. Собственно говоря, эта довольно функциональная страничка интернет-магазина получилась вообще без кода практически на наскольких щелчках мышки в Дизайн-тайме. Некий примитивный код используется только для загрузки собственно рисунка в базу. Ну и еще я не понял как ПРОСТО увидеть, на какой именно строке нажат буттон LOAD, из-за чего пришлось писать вот-такую развязку. Но в целом работа с таблицами в ASP 2.0 облегчилась очень радикально и оставляет очень хорошее впечатление по сравнению со схемой DataSet-TableMapping-DataTable-DataView из ASP 1.1, которая лишь наглядно показывала внутренности ADO.NET, но конкретно работать с ней было неудобно.
В платформе-2005 со всей начинкой ADO.NET действительно УДОБНО и приятно работать даже в Windows-приложениях. Вместо чудаковатых утилит конфигурирования XSD-схем теперь все делается прямо в Дизайн-тайме просто щелчками мышкой. Работа с данными теперь начинается с создания источника данных DataSource. Мастер создания DataSource теперь сразу сохраняет ConnectionString в App.config. После создания DataSet раскрывается в дизайнере во всей красе в новой удачной абстрации - теперь как бы есть форма DataSet и код под формой DataSet. На форме DataSet теперь наглядно представлен в виде DataTable и DataTableAdapter, причем на форме удобно редактировать все свойства всех обьектов вплоть до столбца DataTable и свойств FILL. Причем заполнение DataSet теперь можно делать не просто из произвольного DataAdapter'а, а из его типизированного варианта TableAdapter'а. Причем после конфигурирования DataSet в дизайнере, прямо на панели инструментов появляются уже типизированные TableAdapter и DataSet.
Я даже не поверил своим глазам, но на платформе 2005 действительно получается, что простая прокрутка данных обьектом Command и вычитка их Reader'ом занимает даже больше строк, чем работа с DataSet (со всеми его прелестями - обновлением, произвольным доступом, XML).
В ASP.NET 2.0 получается еще интереснее, чем в Windows-приложениях. Собственно XSD-файл (с определением DataSet и командами отбора данных в него) создается в проекте, только если мы явно определяем App_Code/ObjectDataSource.XSD - иначе это можно вообще обойти засчет нового обьекта SqlDataSource, который по своим внутренним методам и свойствам похож на ObjectDataSource, но позволяет привязать все элементы управления к нему вообще без программирования.
Вот теперь работать с ADO.NET стало ДЕЙСТВИТЕЛЬНО удобно и приятно!
А чтобы не сложилось впечатление, что в NET2005 были переработаны ТОЛЬКО методы доступа к данным, я приведу пример двух своих любимых типов коллекций, которыми я всегда пользовался, но которые исчезли в NET2005. Вместо них появилось новое чудо - Дженерики. Полный же список удаленных классов можно увидеть здесь.
Для того чтобы сохранять в SESSION что-то, а потом в Page_Init восстанавливать, я пользуюсь всегда только ТИПИЗИРОВАННЫМИ коллекциями. Раньше я их делал в пространстве имен System.Collections.CollectionsBase. К своему удивлению я не обнаружил этой коллекции в NET2005. Теперь этот вопрос решается так. В данном случае, как вы видите, моя коллекция не только типизирована, но и имеет некоторый сервис, позволяющий удобно добавлять в нее данные.
Другая важная коллекция, которой я пользовался в Win-приложениях для чтения конфигурационных файлов такого вида - System.Collections.Specialized.NameValueCollection теперь тоже исчезла. На платформе 2005 есть новые обьекты MY, которые читают конфигурационные файлы приложения, который теперь просто ОГРОМНЫЙ,причем для внесения параметров в конфигурацию теперь предусмотрено даже специальная форма.
Из этих примеров видно, что NET2005 довольно значительно отличается от NET2003 даже в самых, казалось бы, базовых и неожиданных вещах. Вообще полный список нововведений в язык VB - опубликован здесь.
<SITEMAP> <MVC> <ASP> <NET> <DATA> <KIOSK> <FLEX> <SQL> <NOTES> <LINUX> <MONO> <FREEWARE> <DOCS> <ENG> <CHAT ME> <ABOUT ME> < THANKS ME> |