Хочу сегодня поговрить об очень перспективном направлении в программировании - кодогенерации.
Эти мысли пришли ко мне в голову после того, как я начал пректировать новую версию движка для сайта devoid.com.ua.
Для реализации выбрал популярный сейчас паттерн Model-View-Controller.
Используя такой подход, программисту необходимо реализовать “Model” - модель представления данных. Для этого чень полезной является реализация класса-оболочки для работы с Базой Данных, которая предоставляет механизмы извлечения данных, добавления, удаления и редактирования записей.
Если посмотреть немного дальше и представить что при каждом новом проекте нужно будет писать новый класс-оболочку для Баз Данных, который будет выполнять практически стандартные функции - становится как-то грустно, ведь всегда интереснее решать разнообразные задачи, а не писать по сути одинаковые классы, которые будут получать информацию с БД, добавлять, удалять и редактировать записи.
Именно здесь нам на помощь приходит кодогенерация, которая для реализации слоя доступа к данным (Data Access Layer) генерирует на основе описания таблиц БД класс, который содержит в себе необходимые функции для реализации Model из паттерна MVC.
Уже сейчас существует ряд готовых решений, которые предлагают вам создавать классы для работы с данными на основе описания структуры БД. Если вы хотите избавиться от рутинной работы создания классов для работы с БД - можете написать свой генератор или использовать уже имеющиеся (это могут быть и консольные решения, и Win-приложения и те же PHP-скрипты, кому как удобнее).
Все что необходимо генератору кода - это описание базы данных, выполненное в удобном формате (как вариант XML). В описании нужно указывать имена столбцов, тип данных, которые они содержат. Если вы сами пишете генератор, то позаботьтесь о том, что б он был безопасный к различным типам данных и имел достаточную функциональность.
Любому программисту будет удобнее выполнить простой код:
$user->create(”UserName”,”Mail”… остальные поля);
чем делать это вручную каждый раз. То же самое и с редактированием, удалением. Намного приятнее выполнить
$user->remove(’user_id’);
а все, остальное за вас сделает сгенерированный класс.
Здесь даже не столь важным является язык реализации, или конкретная База Данных. Основной изюминкой является реализация данного процесса, и избавление программиста от рутины. Один раз ГРАМОТНО написав генератор, вы получаете готовую модель работы с данными для каждого проекта, а сэкономленное время с удовольствием можно потратить на разработку новых интересных решений и сосредоточиться на реализации представления данных пользователю.
Надеюсь кое-как смог выразить свои мысли по этому поводу в данной заметке, и натолкнул вас на что-то новое и интересное в безграничном мире программирования
Да, и не забудьте поздравить женщин с их праздником сегодня…
Всех женщин поздравляю с праздником и желаю внимания, любви и удачи!
Обо мне
27.02.2008
Добро пожаловать на мой блог, где я высказываю свои мысли о программировании, интернет-технологиях, и жизни вцелом. Надеюсь найдете что-нибуть интересное для себя. Страничка называется “Обо мне”, потому начнем:
Общее:
Меня зовут Макагон Сергей, живу в городе Кривой Рог (Украина). Мне 21 год.
Работа:
На данный момент занимаюсь разработкой и продвижением сайтов в Интернете. Основным сайтом является Портал программистов, но кроме него есть еще и другие интересные проекты.
Знания:
Давно (сейчас не использую)
- C++Builder
- Delphi
Использую
- HTML+CSS
- PHP
- C# (.NET Framework)
Базы данных:
- MySQL
- MS SQL
- Firebird (InterBase)
Изучаю
- ASP.NET
- Java Script/AJAX
Интересуюсь:
Интернет-технологии, WEB 2.0 создание сервисов для пользователей, кодогенерация, SEO, проектирование.
Хобби:
Музыка, Футбол, Мысли о вечном
Связь:
- ICQ: 177-170-два
- devoid#ua.fm
Не имей сто рублей, а имей сто друзей. Хорошая поговорка, очень. Потому что мой друг подсказал мне как легко можно сделать заглушку для Вашего сайта под управлением ASP.NET.
Итак, допустим у вас сложилась ситуация, когда хостинг и домен уже куплены, а CMS еще в процессе установки или её попросту нет? или на сайте проводятся какие-то профилактические работы ?
. В таком случае на сайт обычно ставят “заглушки”. В ASP.NET это делается проще простого, мы должны только создать файлик app_offline.htm (не *.html (!!!)) с красивой надписью о том, что сайт временно недоступен, и все
. Теперь если кто-то будет заходить на ваш сайт, то он увидит только красивую надпись до тех пор, пока в корне вашего сайта будет лежать файлик app_offline.htm. Спасибо за внимание.
Комментарии в ASP.NET и PHP
20.11.2007
Для того чтобы в коде РНР оставить комментарий, используем такую конструкцию:
<?/*
This is the server-side comment
*/?>
Стоить отметить что на стороне клиента этот комментарий не отобразится ( в отличии от <!– Comment –>)
Аналогом в ASP.NET является:
<%--
This is the server-side comment
--%>
Вот так все просто ![]()
Ограничение доступа к файлу в ASP.NET
13.11.2007
Чтобы защитить свой файл, например, Admin.aspx, программисту на ASP.NET достаточно написать в web.config такой код:
<location path="admin/admin.aspx">
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
Этот код позволяет запрашивать файл Admin.aspx из папки Admin только тем пользователям, которым присвоена роль “Administrator” ![]()
Редирект в ASP.NET спомощью web.config
31.10.2007
Редирект в ASP.NET можно сделать спомощью web.config:
<configuration>
<system.web>
<urlMappings enabled="true">
<add url="~/Article28.aspx" mappedUrl="~/MyNewBestArtile.aspx"/>
<urlMappings>
</system.web>
</configuration>
Вот такой вот несложный код позволяет сделать редирект в ASP.NET.
Работа с GET запросами в ASP.NET
31.10.2007
Работу с GET запросами в ASP.NET проилюстрирую на маленьком примере:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.QueryString["name"]);
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("http://localhost/mysite/default.aspx?name=DeVoid");
}
Request.QueryString отвечает за все запросы.
Работа с coockies в ASP.NET
22.10.2007
Вот простой пример работы с куками в ASP.NET, код несложный:
Работа с куками: protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
if(Request.Browser.Cookies)
{
HttpCookie mycook = new HttpCookie("UName");
mycook.Value = "DeVoid";
Response.Cookies.Add(mycook);
}
}
}
Код очень простой, но кто даже не знает в какую сторону нужно копать - поможет!
О Блоговаре:
Легенда о Мандариновом Пиве - несмотря на странное название - интересный блог
Flash Implosion, интересен постом “Вакансия :: ActionScript 3 программер”.
Записки здравомыслящего - название порадовало, и блог приятный.
Для того чтобы в вашем проекте ASP.NET использовались ваши странички с 404 ошибкой, достаточнов web.config добавить такой код:
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="error_page.aspx" />
<error statusCode="404" redirect="ErrorPages/404.html" />
</customErrors>
</system.web>
</configuration>
Теперь при 404 ошибке, будет отображена страница 404.html с папки ErrorPages
Блоговар:
Блог странника - мысли и заметки о раскрутке сайта и не только, читаем.
Путь к деньгам всегда тяжек, но почитав как это сделал кто-то другой, можно свой упростить ![]()
Delphi for PHP
16.09.2007
Delphi for PHP - вот здесь описан новый продукт, Delphi for PHP. Обьектно ориентированная среда разработки для РНР.
Несколько скринов:
Скрин №1
Скрин №2
Вообще мое личное мнение, что для РНР лучше оставаться отличным функциональным
языком программирования, чем имитировать обьектную ориентированность,
жертвуя при этом быстродействием. этот продукт просто пытается повторить Visual Studio 2005 и ASP.NET.