Pull to refresh

Microsoft Object Builder

Programming *
Всем привет! Это моя первая статья в Хабре. Столкнувшись сегодня в ленте на описание Java-фреймворков Spring и Tapestry, решил просмотреть Хабру и найти ценителей «конкурирующих» фреймворков от Microsoft – в частности Composite UI Application Block (CAB) и Unity. К моему удивлению, ничего не нашел. Увидев в коментах в статье про Java-фреймворки просьбу описать механизм инъекций зависимостей, решил начать свой цикл статей про .Net-фреймворки именно с разъяснения вопросов IoC. Итак, встречайте – краеугольный камень (в прошлом) замечательного движка CAB – Microsoft Object Builder.
Читать далее
Total votes 21: ↑17 and ↓4 +13
Views 1.8K
Comments 15

Конференция для ИТ-архитекторов + сертификат на Visual Studio 2010

IT-companies
22 сентября в Москве состоится конференция Patterns&Practices Summit. Подобные мероприятия уже достаточно давно проводятся в разных регионах мира, однако для России это будет впервые.

Темы конференции включают разработку архитектуры приложений, Modern Data Access, Enterprise Library 5.0, Cloud Computing, Agile методологии.
Большинство докладчиков – члены команды Microsoft patterns & practices (p&p). Команда p&p – маленькая группа опытных архитекторов, разработчиков, писателей, тестеров, планировщиков продуктов и менеджеров, ответственных за разработку прикладных инженерных руководств, которые помогают архитекторам, разработчикам и их командам полностью использовать преимущества технологий на платформе Microsoft. Команда p&p выпускает руководства (guidance), которые входят в библиотеку MSDN.

В качестве бонуса — участникам вручат сертификат на получение лицензионного дистрибутива Visual Studio 2010. Обменять сертификат на дистрибутив можно будет сразу же после официального выхода продукта в России, планируемая дата – март 2010.

Вся информация — на официальном сайте конференции.
Total votes 22: ↑14 and ↓8 +6
Views 504
Comments 1

Dependency injection для Scala: Cake Pattern

Website development *
Я совсем недавно начал изучать Scala. Для тех, кто еще не в курсе, что это за язык, небольшая выдержка с официального сайта:

Scala — лаконичный, элегантный и статически типизированный язык программирования, который сочитает в себе возможности обьектно-ориентированного и функционального языка. Scala полностью совместима с Java.

Сегодня я хотел бы показать вам, как, используя богатые выразительные способности этого языка, решить проблему, актуальную для любого более-менее крупного проекта, а именно работу с зависимостями компонентов или dependency injection. Последние несколько лет я использовал spring ioc для решения этой проблемы, однако у этого фрэймворка есть несколько недостатков, самый очевидный из которых это сборка приложения из компонент в runtime и наличие xml-дескрипторов (да, конечно можно использовать и autowiring и аннотации, но и у этих возможностей есть свои серьезные проблемы).
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views 14K
Comments 2

Логирование с помощью Microsoft Enterprise Library 4.1

.NET *
Translation
В данной статье рассказывается как работать с блоком логирования из библиотеки Microsoft Enterprise Library 4.1. Решил разобраться после посещения Patterns & Practices Roadmap Kiev.

Установка Enterprise Library


Загрузить Enterprise Library 4.1 можно отсюда. Помните, что кроме блока логирования устанавливается много других компонентов.

Читать дальше →
Total votes 20: ↑13 and ↓7 +6
Views 8.3K
Comments 23

Книга Application Architecture Guide, Second Edition

Website development *
Доступен для бесплатного скачивания финальный вариант книги Application Architecture Guide во второй редакции. Книга содержит 560 страниц разбитых на 28 больших глав. Application Architecture Guide посвящена архитектуре и дизайну ПО, как то: дизайну и разработке различных типов ПО (мобильные, web, клиентские, RIA, сервисы и облачные сервисы), организации и разработке уровней ПО (представления, бизнеслогики, данных, сервисов), созданию компонентов.

Получить книгу можно несколькими путями:
* скачать pdf (7.5 Mb);
* читать online;
* купить на Amazon;
* скачать дополнительную информацию на App Arch Guide 2.0 Knowledge Base.

Официальный анонс одного из авторов в его блоге J.D. Meier's Blog.
Total votes 57: ↑42 and ↓15 +27
Views 8.4K
Comments 26

Enterprise Library 5.0 and Unity 2.0 Roadmap

Lumber room
На днях Григорий Мельник анонсировал план выпуска Enterprise Library 5.0 и Unity 2.0. Вся основная информация изображена на рисунке. Дополнительные комментарии можно прочитать в блоге автора. Хорошая новость состоит в том, что ждать осталось не долго.
image
Total votes 15: ↑7 and ↓8 -1
Views 364
Comments 4

Enterprise Library 5

.NET *
imageЗамечательный набор инструментов от команды patterns & practices – Enterprise Library выпущен в пятой версии. Для тех, что не знает, Enterprise Library — это архитектурные блоки, которые реализуют наиболее частые задачи при разработке программного обеспечения. Примеры таких задач: кеширование, логирование, валидация данных. Наверное, самой популярной частью библиотеки является IoC-контейнер Unity.

Из названия Enterprise Library понятно, что библиотека построена самым серьезным образом и может использоваться для самых ответственных задач. Для каждого блока могут быть установлены системные счетчики производительности.

Enterprise Library — это open source проект под свободной лицензией MSPL. Исходные коды поставляются вместе с библиотекой либо их можно скачать отдельно.

Для удобного конфигурирования всех параметров каждого блока, с библиотекой поставляется удобный инструмент Enterprise Library Configuration.

Enterprise Library 5 содержит следующие блоки: Caching Block, Cryptography Block, Data Access Block, Exception Handling Block, Logging Block, Policy Injection Block, Security Block, Validation Block, Unity.

Кроме того, коммюнити-проект EntLinb Contrib содержит еще ряд дополнительных блоков и расширений.

Ссылки:
загрузить Enterprise Library 5;
страница проекта на codeplex.com;
документация к пятому релизу;
release notes к пятому релизу.
Total votes 44: ↑30 and ↓14 +16
Views 7.9K
Comments 12

В Москве прошла конференция Patterns & Practices Summit

Self Promo
image

В понедельник 13 сентября, в день программиста, прошла конференция Patterns & Practices Summit. Мероприятие состоялось в центре Москвы в отеле Holiday Inn на Лесной.

Для тех кто не в теме, стоит пояснить, что такое Patterns & Practices. Являясь крупнейшим разработчиком платформ для разработки программного обеспечения, Microsoft всеми средствами помогает разработчикам строить на своей платформе эффективные решения. Для этого в Microsoft создают руководства по разработке ПО для тех или иных платформ, например, SharePoint, Windows Phone 7 или для определенных задач, как например, руководства по созданию параллельных приложений в среде .NET. Кроме руководств, Microsoft выпускает инструменты разработчиков в виде библиотек кода и другой материал: лабораторные работы, реалистичные демонстрационные проекты, видео-курсы.

Большую часть материалов с рекомендациями по построению приложений в Microsoft разрабатывает группа под названием Patterns & Practices. Эта группа исследует лучшие практики по построению архитектуры приложений, написанию кода, создает многочисленные руководства и библиотеки (например, известную многим .net-разработчикам Enterprise Library). Из под пера группы постоянно выходят и публикуются книги.

Таким образом, мероприятие Patterns & Practices Summit – это еще один шаг Microsoft в попытке поделиться своим опытом и лучшими практиками разработки ПО с российскими разработчиками. Доклады на конференции читали и разработчики из группы Patterns & Practices.

Читать дальше →
Total votes 23: ↑14 and ↓9 +5
Views 371
Comments 5

Команде разработчиков MVVM библиотеки Prism нужна ваша помощь

.NET *
В одном из недавних твиттеро-постов я отметил, что работа над библиотекой Prism приостановлена после выхода 4-й версии. В ответ на это я получил сообщения от Ade Miller (бывший дев лид в комманде patterns & practices) и от Bob Brumfield (работает в patterns & practices на проектах Prism, Enterprise Library, и Windows Phone 7 guidance).
Читать дальше →
Total votes 48: ↑34 and ↓14 +20
Views 2.1K
Comments 10

Использование паттерна синглтон

C++ *
Sandbox

Введение


Многие уже знакомы с таким термином, как синглтон. Если описать вкратце, то это — паттерн, описывающий объект, у которого имеется единственный экземпляр. Создать такой экземпляр можно разными способами. Но сейчас пойдет речь не про это. Я также опущу вопросы, связанные с многопоточностью, хотя это очень интересный и важный вопрос при использовании данного паттерна. Рассказать бы я хотел о правильном использовании синглтона.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 90K
Comments 31

Dispose pattern

.NET *
“Не стоит следовать некоторой идиоме только потому, что так делают все или так где-то написано”

Мысли автора статьи во время чтения и рефакторинга чужого кода

Ни для кого не будет секретом, что платформа .NET поддерживает автоматическое управление памятью. Это значит, что если вы создадите объект с помощью ключевого слова new, то вам не нужно будет самостоятельно заботиться о его освобождении. Сборщик мусора определит «достижимость» объекта, и если на объект не осталось корневых ссылок, то он будет освобожден. Однако, как только речь заходит о ресурсах, таких как сокет, буфер неуправляемой памяти, дескриптор операционной системы и т.д., то сборщик мусора, по большому счету, умывает руки и весь головняк по работе с такими ресурсами ложится на плечи разработчика.

А как же финализаторы? – спросите вы. Ну, да, есть такое дело, финализаторы действительно предназначены для освобождения ресурсов, но проблема в том, что время их вызова не детерминировано, а это значит, что никто не знает, когда они будут вызваны и будут ли вызваны вообще. Да и порядок вызова финализаторов не определен, поэтому при вызове финализатора некоторые «части» вашего объекта уже могут быть «разрушены», поскольку их финализаторы уже были вызваны. В общем, финализаторы – они-то есть, но это скорее «страховочный трос», а не нормальное средство управления ресурсами.
Читать дальше →
Total votes 77: ↑68 and ↓9 +59
Views 60K
Comments 28

Windows Azure на конференции Patterns & Practices Summit Russia

Microsoft corporate blog Microsoft Azure *
pnp

Уважаемые разработчики! Я рад рассказать вам об очередной конференции Patterns & Practices Summit Russia, в рамках которой будут рассмотрены современные практики построения бизнес-приложений. Конференция пройдет 5 октября в Москве.

С полной программой конференции можно ознакомиться на официальном сайте. Здесь мне бы хотелось рассказать более подробно про трек для разработчиков облачных приложений на платформе Windows Azure.

Докладчиками конференции стали ведущие эксперты компании Microsoft из группы Patterns & Practices и российского отделения компании:

  • Эухиньйо Паче. Создание гибридных приложений в облаке на базе Microsoft Azure
  • Кристофер Бенаж, Эухиньйо Паче. Погружение в Command Query Responsibility Segregation (CQRS)
  • Владимир Гусаров. ALM в Облаке — использование инфраструктуры Microsoft Windows Azure для управления жизненным циклом приложений
  • Наталья Ефимцева. Windows Azure предоставляет новые возможности для работы с Workflow Foundation
  • Владимир Юнев. Решение интеграционных задач предприятия с помощью Windows Azure Service Bus
  • Эухиньйо Паче. Автоматическое масштабирование приложений Windows Azure по требованию

Под катом вы найдете краткую информацию о докладчиках и несколько анонсов.
Читать дальше →
Total votes 21: ↑13 and ↓8 +5
Views 1.6K
Comments 0

Опубликованы бесплатные электронные книги по технологиям Windows Azure от команды Patterns & Practices

Microsoft corporate blog Microsoft Azure *
Хорошие новости! В электронной библиотеке TechNet (E-Book Gallery for Microsoft Technologies) опубликованы переведенные на русский язык электронные книги (EPUB, MOBI, PDF) по технологиям Windows Azure.

Миграция приложений в Windows Azure


imageМиграция приложений в Windows Azure, 2-й выпуск
Справочник\руководство Patterns & Practices

Это первая книга в серии patterns & practices, посвященной платформе Windows Azure. В книге рассматривают различные аспекты (изменения в архитектуре, вопрос стоимости, мониторинг и диагностика системы и т.п.) миграции локального приложения на облачную платформу Microsoft – Windows Azure. В книге описана миграция на примере приложения aExpense, это ASP.NET приложение согласования авансовых отчетов. Во-первых, книга поможет получить хорошее представление о тех вопросах, которые необходимо учесть при миграции приложения в облако, а, во-вторых, в книге даются ответы на ряд практических задач, которые являются актуальными не только при миграции приложения, но и просто при разработке любого облачного приложения.

EPUB | MOBI | PDF
Читать дальше →
Total votes 28: ↑17 and ↓11 +6
Views 8.3K
Comments 2

Portable Prism

Abnormal programming *.NET *Development for Windows Phone *
Посвящается фанатам группы Microsoft Patterns&Practices и просто любителям такой полезной штуки как Microsoft PRISM.

Разработчики, которые в своей практике встречались с Microsoft PRISM, вероятно, имеют двоякое мнение об этом фреймворке. С одной стороны, в своей по номеру 4-й, а по порядку 3-й, версии – это очень мощный и гибкий инструмент для создания композитных приложений, а с другой стороны довольно непонятная и запутанная библиотека. Но можно на PRISM взглянуть и просто как на реализацию шаблона MVVM, чем PRISM для Windows Phone по сути и является.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Views 5.9K
Comments 1

«Strategy Pattern. Просто о простом» или почему я хожу на собеседования «PHP Junior» ради fun'а

PHP *Programming *Designing and refactoring *

Приветствие


Всем привет! В этот радостный и, достаточно, теплый пятничный денек приключилась у меня (процитирую в более приятном варианте) «рука-лицо». Честно говоря, приключается сие действие достаточно часто, но, по обыкновению, вызывается оно от ощущения:
Боже, какой же я тупой.
В этот раз меня посетило несколько другое чувство, и, как я убедился, не только меня. Чувство это напомнило мне об одном из моих собеседований, где меня попросили написать скелет паттерна «Декоратор», который оказался в личном представлении интервьювера совершенно другим, нежели его классическое толкование.
Читать дальше →
Total votes 58: ↑20 and ↓38 -18
Views 46K
Comments 5

Руководство разработчика Prism — часть 1, введение

.NET *C# *
Translation
Tutorial
Если вы разрабатываете приложения для XAML-based платформ, таких как WPF, Silverlight, Windows Phone, или Windows Store, то Prism, определённо, сильно поможет вам упростить их разработку. После создания нескольких проектов с использованием Prism, я убедился в работоспособности такого подхода и решил подготовить перевод официального руководства Prism. Итак, часть первая, что же такое Prism.
Оглавление
  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Взаимодействие между слабо связанными компонентами

Prism является руководством, разработанным для того, чтобы помочь проектировать и создавать насыщенные, гибкие и легко поддерживаемые Windows Presentation Foundation (WPF) приложения, Silverlight Rich Internet Applications (RIAs), и программы под Windows Phone 7-8, а также Windows Store приложений. Используя паттерны проектирования, которые воплощают важные принципы архитектурного дизайна, такие как разделение ответственности (Separation of Concerns, SoC) и слабая связанность (Loose coupling), Prism помогает вам проектировать и писать приложения со слабо связанными компонентами, которые могут независимо развиваться и потом объединяться в одно целое с минимальными усилиями. Этот тип приложений известен как составные приложения.

Читать дальше →
Total votes 36: ↑30 and ↓6 +24
Views 130K
Comments 24

Руководство разработчика Prism — часть 2, инициализация приложений Prism

.NET *C# *
Translation
Tutorial
Оглавление
  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Взаимодействие между слабо связанными компонентами

Эта глава рассказывает о том, что нужно сделать для загрузки приложения Prism. Приложение Prism требует регистрации и конфигурации компонентов во время запуска – этот процесс известен как bootstrapping.

Что такое загрузчик (Bootstrapper)


Загрузчик является классом, ответственным за инициализацию приложения, созданного с использованием библиотеки Prism. При использовании загрузчика вы получаете больший контроль над тем, как компоненты библиотеки Prism создаются и соединяются при запуске вашего приложения. Библиотека Prism включает абстрактный базовый класс загрузчика, который может быть специализирован для использования с любым контейнером. Многие из методов в классах загрузчиков являются виртуальными. Можно переопределять эти методы для предоставления собственной их реализации.

Основные этапы процесса загрузки.
Читать дальше →
Total votes 16: ↑10 and ↓6 +4
Views 29K
Comments 0

Руководство разработчика Prism — часть 3, управление зависимостями между компонентами

.NET *C# *
Translation
Tutorial
Оглавление
  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Взаимодействие между слабо связанными компонентами

Приложения, созданные с помощью библиотеки Prism, обычно являются составными приложениями, потенциально состоящими из слабо связанных служб и компонентов. Они должны взаимодействовать друг с другом так, чтобы предоставлять содержание пользовательскому интерфейсу и получать уведомления о действиях пользователя. Поскольку они слабо связаны, им необходим способ взаимодействия, без которого необходимая функциональность не сможет быть получена.

Для связи всех частей воедино, Prism приложения полагаются на DI контейнер. DI контейнеры уменьшают зависимости между объектами, предоставляя способ создания экземпляров классов и управления их временем жизни в зависимости от конфигурации контейнера. При создании объектов с помощью контейнера, он инжектирует в них необходимые зависимости. Если зависимости ещё не были созданы, то контейнер в начале создаёт их и разрешает их собственные зависимости. В некоторых случаях, сам контейнер внедряется как зависимость. Например, при использовании Unity, в модули внедряется контейнер для того, чтобы они могли зарегистрировать в нём свои представления и службы.

Есть несколько преимуществ использования контейнера:
  • Контейнер устраняет потребность компонента определять местоположение его зависимостей или управлять временем их жизни.
  • Контейнер позволяет заменять реализации, не влияя на компоненты.
  • Контейнер облегчает тестируемость, позволяя внедрять в объекты фальшивые зависимости.
  • Контейнер упрощает обслуживание, позволяя легко добавлять к системе новые компоненты.

В контексте приложения, основанного на библиотеке Prism, есть определённые преимущества использования контейнера:
  • Контейнер разрешает зависимости модуля при его загрузке.
  • Контейнер используется для регистрации и создания моделей представления и представлений.
  • Контейнер может создавать модели представления и внедрять представления.
  • Контейнер внедряет службы составного приложения, такие как менеджер регионов, или агрегатор событий.
  • Контейнер используется для регистрации специфичных для модуля служб со специфичной для модуля функциональностью.

Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Views 21K
Comments 28

Руководство разработчика Prism — часть 4, разработка модульных приложений

.NET *C# *
Translation
Tutorial
Оглавление
  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Взаимодействие между слабо связанными компонентами

Модульное приложение является таким приложением, которое можно разделить на ряд функциональных блоков (модули), которые могут быть интегрированы в одно целое. Клиентский модуль инкапсулирует часть общей функциональности приложения и обычно представляет собой набор взаимосвязанных функциональных частей. Он может включать набор связанных компонент, таких как функции приложения, включая пользовательский интерфейс и бизнес-логику, или части инфраструктуры приложения, такие как службы уровня приложения для журналирования, или аутентификации и авторизации пользователей. Модули независимы друг от друга, но могут взаимодействовать друг с другом слабо связанным способом. Модульные приложения могут облегчить разработку, тестирование, развертывание, и расширение вашего приложения.

Например, рассмотрим персональное банковское приложение. Пользователь может получить доступ к множеству функций, таких как передача денег между учетными записями, оплата счетов, и обновление персональных данных, используя единственный пользовательский интерфейс (UI). Однако, каждая из этих функций инкапсулируется в пределах дискретного модуля. Эти модули связываются друг с другом и с системами бэкэнда, такими как серверы баз данных и веб-сервисы. Прикладные службы интегрируют различные компоненты в пределах каждого из различных модулей и обрабатывают взаимодействие с пользователем. Пользователь видит интегрированное представление, которое похоже на единственное цельное приложение.

Следующая иллюстрация показывает проект модульного приложения.

Модульное приложение
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Views 22K
Comments 0

Руководство разработчика Prism — часть 5, реализация паттерна MVVM

.NET *C# *
Translation
Tutorial
Оглавление
  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Взаимодействие между слабо связанными компонентами

Паттерн Model-View-ViewModel (MVVM, модель-представление-модель представления) поможет вам отделить бизнес-логику и логику представления от пользовательского интерфейса. Поддержка разделения ответственности между логикой приложения и UI может сделать ваше приложение более лёгким для тестирования, поддержки и развития. Это может также значительно улучшить возможности повторного использования кода и позволит разработчикам и дизайнерам легче сотрудничать при разработке соответствующих частей приложения.

Используя паттерн MVVM, пользовательский интерфейс приложения, логика представления и бизнес-логика разделяются на три отдельных класса. Это представление, которое инкапсулирует UI и его логику, модель представления, которая инкапсулирует логику представления и её состояния, и модель, которая инкапсулирует бизнес-логику приложения и данные.

Prism включает примеры и образцы реализации, которые показывают, как реализовать шаблон MVVM в Silverlight или в WPF приложениях. Библиотека Prism также предоставляет функции, которые могут помочь реализовать данный паттерн. Эти функции воплощают наиболее распространённые методы для реализации паттерна MVVM и разработаны, чтобы обеспечить тестируемость и совместимость с Expression Blend и Visual Studio.

Эта глава даёт краткий обзор паттерна MVVM и описывает, как его реализовать. Глава 6 описывает, как реализовать более сложные сценарии MVVM, используя библиотеку Prism.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Views 39K
Comments 2
1