понедельник, 16 августа 2010 г.

Research Project with .NET technology stack and tools

Сегодня после долгого размышления собрался написать приложение, которое будет решать две проблемы.
Первая - это некоторая небольшая задача, предположим планирования расписания различных календарных событий, к примеру распределение пациентов и запись их на прием к доктору. Клиенту предоставляется удобный интерфейс для выбора подходящего времени. Доктор же может предварительно и оперативно выбрать доступные даты и временные промежутки, а также получить конечное сформированное расписание приема пациентов. Ориентация проблематики не ограничивается конкретной задачей доктора и пациентов, а рассматривает обобщенную задачу календарного планирования. Приложение будет иметь несколько версий и стадий, в первом приближении это будет очень упрощенная версия, но в которой будет заложена и реализована основная архитектура и доменная модель.
Вторая цель - это на практике использовать различные библиотеки, технологии и архитектуру. Редко когда проект на работе позволяет полностью использовать все возможности, которые есть на сегодня технологий, т.к. всегда есть различные ограничения, объективные и не очень.
К сожалению  проекты часто преследует железный треугольник и в сроки тяжело вписать изучение технологий, который не относятся непосредственно к проектным нуждам.

The Project Management Triangle (called also Triple Constraint) is a model of the constraints of project management. It is often used to illustrate that project management success is measured by the project team's ability to manage the project, so that the expected results are produced while managing time and cost.

Michael W. Newell, Marina N. Grashina (2004). The Project Management Question and Answer Book

Поэтому я и попробую создать некоторый абстрактный проект для углубления знаний, которые хочу получить, но нет возможности в рабочее время.
Кратко рассмотрим библиотеки и технологии, которые буду изучать и использовать:
  1. .NET Framework 4.0 - хочется рассмотреть реальное применение динамических возможностей нового FW.
  2. ASP.NET MVC 2 - конечно на подходе уже Preview MVC 3, но есть удобные вещи, которые хотелось бы попробовать, к примеру Model Annotations, хотя видимо придется использовать пример Brad Wilson для серверной валидации через Ajax.
  3. Lokad Shared Libraries - великолепный набор, простых и удобных расширений и средств (спасибо Ринат и команда).
  4. SpecFlow - Cucumber для .NET, а если быть точным, то расширение для Visual Studio.
  5. Autofac - IoC контейнер, благодаря некоторым великолепным надстройкам и интеграции с различными системами хорошо зарекомендовал себя в моих проектах, постараюсь расширить знания о последних версиях и поделиться опытом.
  6. Moq - библиотека для создания заглушек, для тестирования и прототипирования.
  7. Nunit - кто не знает nunit, тот скорей всего никогда не писал Unit тестов в .NET (да простят меня приверженцы MbUnit).
  8. Git - код буду хранить в Git репозитории, посмотрим, действительно ли так легко и удобно работать с branch системой в нем, в отличии от svn.
Вот, основной, далеко не полный список библиотек, которые предполагаю использовать, видимо в процессе появятся, а возможно и поменяются некоторые. Весь процесс создания я постараюсь подробно описать.