(ASP.NET) ASP.NET (2005 год)

Мое первое знакомство с 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 - опубликован здесь.





Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23
Link to this page: //www.vb-net.com/dotnet/tour18/index.htm
<SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <CHAT ME>  <ABOUT ME>  < THANKS ME>