вторник, 3 апреля 2007 г.

.netTiers Application Framework

.netTiers - это открытый (open source) бесплатный набор шаблонов для ORM (Object-Relational Mapping), берущий за основу существующую БД SQLServer и автоматически генерирующий персонализированные слои данных приложения (Data Tiers application block) для использования в .NET приложениях. Проект также можно найти на SourceForge.net, на SF его поддерживает один из авторов John Roland.

Для получения приемлемых результатов при применении O/RM технологий критически важно грамотно спроектировать модель БД, .netTiers не исключение из этого правила.

.netTiers генерирует код непосредственно по модели БД без использования вспомогательного XML (или иного) уровня представления. Поэтому использование написанной на "скорую руку" модели, с плохим выбором primary / foreign ключей и т.п. код получится таким же неудачным, так что перед первым использованием .netTiers, даже если это тестовая БД, проверьте еще раз, что она нормализирована и ключи определены верно и, по возможности, добавьте еще несколько не-ключевых полей, которые будут в дальнейшем использованы как фильтры.

Пропустить индексы в своей пробной БД модели достаточно просто, так как обычно выполняется предварительная оценка запросов и, затем уже определяются действительно необходимые индексы. .netTiers по индексам определяет, какие из столбцов должны иметь собственные методы для получения значений (и соответствующую автоматически генерируемую хранимую процедуру для обработки этих запросов). Если не определить индексов, то получение значений придется делать с помощью более общего запроса, с указанием критериев поиска, что скажется на быстродействии и удобстве.

.netTiers построен на основе платного генератора кода CodeSmith Tools, но выполняется (в январе было заключено соглашение) адаптация под бесплатный Smart Code Generator.

В данный момент для работы потребуется:

  • Visual Studio 2005
  • Codesmith 3.x+
  • Microsoft SQL Server 2000+ (с ограничениями поддерживаются и другие БД)
  • Microsoft .NET 2.0

Рекомендуются так же:

Скачать последнюю версию можно отсюда, там же есть доступ к SVN-репозитарию с текущими исходными кодами.

На RSDN есть тема в средствах разработки, посвященная в том числе и .netTiers.

Интересующиеся технологиями O/R mapping могут посмотреть на подобные бесплатные open source генераторы: EasyObjects.NET (еще один OR/M для Microsoft Enterprise Library) и MyGeneration.


Technorati tags: , ,

суббота, 17 февраля 2007 г.

Все о PInvoke

Недавно набрел на замечательный FAQ от GotDotNet, посвященный Platform Invoke (PInvoke): возможности вызова unmanaged (native) кода, например, Win32, из приложений .NET. В FAQ много полезной информации.

При использовании PInvoke частенько возникают проблемы, в том числе, не последняя - отсутствие прототипов Win32 API функций в пригодном для вставке в .NET виде. Я использую PInvoke.Net, также можно воспользоваться Interop Declarations for Windows.h Несложно и самому по прототипу составить соответствующее описание, но удобнее и быстрее воспользоваться готовым.

Пригодится так же Microsoft Win32 to Microsoft .NET Framework API Map

Technorati tags:
Blogus tags:

Возможности расширения приложений .NET

Уже довольно давно не обновлял свой блог: навалилось много работы, домашние дела и вообще много всего. Постараюсь исправиться :)

Microsoft решила более-менее стандартизировать подход к расширению приложений за счет разнообразных плагинов:

Microsoft .NET Framework сильно облегчает встраивание в собственные приложения компонентов, созданных другими разработчиками. Однако это просто, только если известно, к каким компонентам выполняется привязка. Если в момент сборки такие компоненты не известны, что типично для надстроек, то все становится намного сложнее. При расширении своих приложений у разработчиков часто возникают вопросы. Например, надстройки следует хранить в базе данных или на диске? Следует ли в надстройке использовать известный интерфейс или запрашивать тип для активации? Каков наилучший способ использования AppDomain, AppDomainManager и AppDomainSetup?

Эти и другие вопросы решаются в двух выпусках внутреннего бюллетеня CLR за счет введения в библиотеку базовых классов нового пространства имен System.AddIn, которое будет доступно в следующем выпуске Visual Studio® (с кодовым именем "Orcas").

Подробнее об этом можно узнать на русском языке, прочитав статью из февральского номера CLR Inside Out и ее продолжение Расширяемость приложений .NET, часть 2.

Этому же посвящен блог разработчиков: CLR Add-In Team Blog.

В блоге Jason He's WebLog рассматривается реализация данной модели для Paint.Net. Может быть интересен и блог одного из авторов: Jack Gudenkauf (JackG) WebLog.

Новые библиотеки доступны в январском CTP Visual Studio

Technorati tags: ,
Blogus tags: ,

вторник, 2 января 2007 г.

Tweak'и для Visual Studio 2005 SP1

Выпущенный недавно Service Pack (SP) для Visual Studio требует для установки очень много времени и свободного дискового пространства. Однако, эту ситуацию можно улучшить.

Для установки создайте и выполните командный файл:

reg export HKLM\Software\Policies\Microsoft\Windows\Installer installer.reg reg add HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /t REG_DWORD /d 0 /f net stop msiserver start /wait VS80-KBnnnnnn-X86-mmm.exe reg delete HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /f reg import installer.reg net stop msiserver del /q installer.reg 2>nul

Здесь VS80-KBnnnnnn-X86-mmm.exe - имя файла с Service Pack'ом.

Подробнее можно почитать в блоге у автора метода: Save Time and Space for VS 2005 SP1 by Disabling the Patch Cache

Там же доступна информация о встраивании SP в инсталляционный пакет: Slipstreaming Visual Studio 2005 Service Pack 1

Technorati tags:
Blogus tags :

понедельник, 1 января 2007 г.

С Новым 2007 годом!

Поздравляю всех с наступившим 2007 годом!

Дружбы, радости и смеха, Новых знаний, сил, успеха, Жизни в счастье и в ладу, Я Вам искренне желаю В наступающем году!

Всего самого наилучшего!

З.Ы. У меня конец года выдался крайне насыщенным, настолько, что времени на ведение блога не было совсем. Сейчас, наконец, всё пришло в норму, и я смогу продолжить свои заметки.