Курс молодого бойца ASP.NET MVC
Недавно попросили приготовить задание/программу подготовки работы на ASP.NET MVC для обучения “с нуля”. Может кому-нибудь пригодится.
Подготавливаем рабочую среду:
1. Поставить Visual Studio 2008 Express Edition (Web Developer) SP1
http://www.microsoft.com/exPress/download/
2. Поставить SQL Server 2008 Express Edition
http://www.microsoft.com/exPress/download/
3. Поставить ASP.NET MVC 1.0
http://www.asp.net/mvc/download/
Про MVC здесь
http://ru.wikipedia.org/wiki/Model-View-Controller
http://msdn.microsoft.com/en-us/library/ms978748.aspx
http://martinfowler.com/eaaDev/uiArchs.html
4. Поставит платформу для модульного тестирования MbUnit 3 и платформу Galio
http://www.gallio.org/Default.aspx
Про TDD здесь:
http://codebetter.com/blogs/darrell.norton/articles/50337.aspx
http://martinfowler.com/articles/mocksArentStubs.html
Теория:
1. Запустить Visual Studio и создать ASP.NET MVC Web Application
2. Разобраться со структурой проекта
3. Четко понимать отношения между представлениями (Views) и контроллерами (Controllers).
4. Понимать принципы маршрутизации приложения (посмотреть в Global.asax)
5. Суметь объяснить назначение Site.Master
6. Понимать и уметь работать с PartialView (ascx)
7. Понимать взаимодействие с моделью данных (DataModel), организовать преобразование записей из SQL Server в сущности предметной области. (Необязательно c помощью linq2sql, либо самостоятельно)
Посмотреть про TDD и MbUnit http://blog.benhall.me.uk/2007/12/screencast-getting-started-with-mbunit.html
Хорошие скринкасты на http://www.asp.net/mvc/learn/
Здесь на русском: http://www.techdays.ru/Search.aspx?Quick=MVC
Посмотреть что умеет Dynamic Data http://www.techdays.ru/videos/1064.html – это примерно то, что нужно будет сделать самому
Задание: Создать простейший веб-блог.
1. Создать представления списочного, детального просмотра.
Попробовать один и плагинов http://anton.shevchuk.name/javascript/jquery-datagrid-plugins/.
Здесь есть неплохое руководство по взаимодействию http://www.trirand.com/blog/?s=AJAX
2. Предоставить возможность редактирования записей
3. Создать RSS-ленту для списка записей в блоге
4. Организовать покрытие unit-тестами контроллеров и модели данных при разработке
Языки предметной области Domain-Specific Languages (DSL)
Что это?
Это некоторая форма компьютерных языков, разрабатываемых для специфичной предметной области. Это то, что позволяет вам (разработчикам ПО) лучше взаимодействовать с носителями “доменных знаний”. А так же позволяет более лаконично оформлять бизнес-логику. Это то, что представляет собой, к примеру, SQL, Linq, многое из синтаксиса Ruby On Rails.
Зачем мне это?
Если вы согласны с утверждением: “Языки общего назначения порой слишком красноречивы”, вы разрабатываете на .NET, либо сильно интересуетесь программированием, то наш доклад будет вам интересен.
Что я узнаю?
Ответы на следующие вопросы:
- Что такое DSL?
- Откуда это понятие пришло к нам?
- Какие бывают DSL?
- Какие “языки общего употребления (GPL)” предоставляют возможности построения DSL? Какие из них есть на .NET?
- Почему я должен использовать DSL? Какие плюсы от этого?
- Какие шаблоны используются при построении DSL?
- А можно увидеть примеры?
Материалы нашего выступления
Слайды презентации
Building DSLs on CLR and DLR (.NET)
Видео:
http://video.yandex.ru/users/thecoffee/collection/1/
Видео в более пригодном к рассматриванию надписей на доске качестве можно слить по ссылкам ниже:
http://narod.ru/disk/9278634000/01.wmv.html
http://narod.ru/disk/9279885000/02.wmv.html
Все рассмотренные примеры доступны здесь:
Учимся проектировать на основе предметной области (DDD: Domain Driven Design)
1. Введение
В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design).
2. Так почему же DDD?
Есть несколько шаблонов реализации предметной области (Domain Logic) или бизнес-логики (Business Logic):
1) Table Module – представляет собой объект, в единственном экземпляре, обрабатывающий бизнес логику для всех записей в таблице базы данных, либо представления.
2) Transaction Script – организует взаимодействие с бизнес-логикой посредствам процедур, принимающих запросы с уровня представления.
3) Domain Model – непосредственно, объектная модель предметной области, включающая в себя как поведение, так и данные.
Эти шаблоны описаны более подробно Мартином Фаулером, в его книге “Архитектура корпоративных программных приложений. Шаблоны корпоративных приложений” (Patterns of Enterprise Application Architecture (P of EAA)). В данной книге он показывает, что первые два шаблона более привлекательны в начале работы с предметной областью, однако так же обращает внимание, что при наращивании сложности логики предметной области стоит больше внимания уделять сопровождению инфраструктуры, используя первые два подхода, это время можно уменьшить, если обратиться в своём решении к третьему из вышеперечисленных шаблонов, так называемой “Модели предметной области”.
На основе этого сделаем небольшой вывод о том, что данный шаблон (“Модель предметной области”) лучше всего подойдёт, к примеру, для такой непростой области, как финансовый рынок. Большинство, создаваемого в наши дни программного обеспечения предназначено для различных нужд бизнеса, следовательно какие-то абстрактные, обобщенные решения находят своё место на рынке (с довольно таки высокой конкуренцией) всё реже и реже. К чему я пишу про всё это? Потому что DDD – это не только качественное проектирование, но так же и показательный пример того, как следует выделить предметную область в программном обеспечении, для того, чтобы проще преодолевать сложности, частые изменения, проблемы коммуникации и прочие недуги предметной области, вместо того чтобы разрабатывать уродливую, сложную для понимания систему, в которой любое изменение или исправление способно обрушить на вас лавину всё новых и новых дефектов.
DDD ни в коем случае не отрицает наследия практик разработки, таких как:
-
Шаблоны проектирования (Design Patterns) (в том числе всем известные GoF)
-
Так называемый ряд принципов проектирования S.O.L.I.D, собранных Робертом “Uncle Bob” Мартином.
-
Разработка по средствам тестирования (TDD: Test-Driven Development)
DDD лишь дополняет их. Поиск подходящей модели и абстракций в сложных сценариях требует значительных знаний в сфере объектно-ориентированного подхода, и достаточного опыта применения различных принципов, шаблонов и практик, а не просто DDD, как может показаться.
3. С чего можно начать?
Если мой “нудный PR” проектирования на основе предметной области (DDD) вас до сих пор не утомил, то думаю нам стоит продолжить, если же иначе, то посмотрите хотя бы ссылки на материалы.
Первой книгой пролившей свет на DDD для широкой публики была так называемая “Большая синяя книга” (мем. BBB: Big Blue Book): Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans (на русский язык пока не переведена).
Книга довольна подробно рассказывает о том, что из себя представляет DDD, и все связанные аспекты, такие как: язык предметной области, шаблоны, практики проектирования, рефакторинг, моделирование, как сделать разработку гибкой и многое другое. Но даже если вы ознакомитесь со всеми вопросами, поднятыми в книге (что является не совсем простым занятием), вы обратите внимание, что вопросы рассматриваются только с теоретической точки зрения, оставляя весь простор для практики (книга не привязана к конкретной платформе разработки).
Для большинства из нас чтение чистой теории, без подкрепления практическими примерами не нравится, в связи с этим можно обратить своё внимание на сокращенную (и свободную для доступа) версию этой книги, подготовленную порталом InfoQ: Domain Driven Design Quickly.
Есть так же несколько хороших презентаций Эрика Ивенса (Eric Evans), с которых можно начать:
1) DDD: putting the model to work
2) Eric Evans on DDD: Strategic Design
На портале InfoQ можно найти множество других презентаций, статей и интервью, посвященных DDD.
Итак, с теоретической частью мы разобрались, где же можно найти примеры практического применения DDD? Отличной книгой для этого является .NET Domain-Driven Design with C#, Problem – Design – Solution написанная Tim McCarthy.
В этой книге вы наёдете практические примеры:
1) Как проходит процесс проектирования и разработки, от определения требований, до написания кода
2) Как организовывать архитектурные слои в своих решениях
3) Как применять шаблоны и практики DDD
4) Как построить небольшой каркас для DDD
5) Как изолировать домен предметной области от модели
6) Современные паттерны представления данных и взаимодействия с ними (Model-View-ViewModel) в такой среде как WPF (так же применимы к Silverlight) в практики.
Эта книга – отличный практикум по DDD, содержащий очень широкий пласт идей. Начинается книга с разработки требований, а заканчивается реализацией промышленного приложения, исходные коды которого доступны на Codeplex.
Вся концепция книги построена на 3 книгах-столпах DDD:
- PoEAA Мартина Фаулера
- DDD Эрика Ивенса
- Applying Domain – Driven Design and Patterns by Jimmy Nilsson’s (“Применение шаблонов проектирования: проблемно-ориентированное проектирование приложений с примерами на C# и .NET” Джимми Нильссона )
В этой книге поверхностно рассмотрены все вопросы, техники и паттерны, применяемые в DDD, все примеры сопровождаются кодом, что упрощает понимание. Книга превосходная, однако русский перевод подкачал, поэтому, рекомендую прочитать оригинал.
Однако DDD – это не просто практические решения или шаблоны, это мышление и подход, и есть великое множество нюансов, которые необходимо учитывать, если вы решили следовать DDD, таких как: фокусирование на высокий приоритет отдается модели, выработка языка предметной области, контекст модели, процесс моделирования, разделение знаний, рефакторинг, стратегический дизайн и т.д…это является основной причиной ознакомиться с книгой Эрика Ивенса, так как она даст вам более объемное и глубокое понимание философии DDD.
DDD не привязанны к конкретной технологии, однако соблюдать DDD будет не так просто, без наличия хороших средств и практик в вашем арсенале, таких как: TDD-фреймворк, ORM, возможность реализации независимости сохраняемости (Persistence Ignorance), IoC-контейнер (Inversion of Control), и возможностей AOP (Аспектно-Ориентированного Программирования), конечно не значит, что все эти инструменты нам понадобятся, однако они приблизят нас к реализации DDD на практике. Практичная ценность этих средств в том, что они позволять изолировать модель предметной области, что является ключевой целью DDD. Книга Джимми Нильссона может познакомить вас с возможностями и видами данных инструментов. Джимми так же показывает как использовать шаблоны реализации корпоративных приложений, и строить, благодаря им, цельное решение, основанное на современных инструментах и практиках.
Некоторые реализации шаблонов DDD на Ruby On Rails:
Some DDD (Domain Driven Design) Concepts implemented in Rails
4. Актуальные вопросы DDD
C DDD так же тесно связана такая тема, как DDDD: Distributed Domain Driven Design (Распределенный DDD). DDDD – это DDD в распределенных сценариях. В настоящее время существует не так много ресурсов, посвященных DDDD, в нескольких словах о DDDD: покрывает проблему реализации сообщений и DDD, разделение команд и запросов (Command Query Separation (CQS)) помогает реализовать данный подход. Грег Янг (Greg Young) сообщил, что готовит книгу, посвященную DDDD.
SOA и DDD – это ещё одна объемная тема, часто обсуждаемая Udi Dahan
5. DDD шаблоны, концепции и понятия
В промышленных приложениях DDD использует ряд шаблонов, часть которых описана в книге Эрика Ивенса, но, это не отменяет применение объектно-ориентированного подхода, включающего GoF-шаблоны, шаблоны Мартина Фаулера, описанные в его PoEAA, Шаблоны интеграции корпоративных приложений и т.д.…
Вот некоторые из них:
- Value Object
- Entity
- Service
- Module
- Aggregate
- Repository
- Specification
- Layer Supertype
- Identity Map
- Factories
- Unit of Work(UoW)
- Inversion of Control(IoC)
- Aspect Oriented Programming(AOP)
- Bounded Context
- Ubiquities language
- Object-relational mapping(ORM)
- Anemic Domain Model anti pattern
6. Примеры приложений
Найти хорошие примеры реализации DDD очень сложно, не потому что их не существует, а потому что реальная сила DDD реализуется в приложениях, используемых в довольно сложных областях, и, как правило, являющихся коммерческими проектами. Однако можно найти несколько неплохих проектов, в которых можно проследить некоторые идеи реализации шаблонов DDD.
Вот они:
1) Приложение Тима Маккарти его проект, описанный в деталях в его книге. Он описывает не только применение шаблонов, но так же акцентирует внимание в разработке модели предметной области с точки зрения DDD.
Проект так же интересен тем, что построен на .NET 3.5 и демонстрирует всю силу современного подхода связывания данных с моделью предметной области (data binding, реализация шаблона MVVM). Так же его стиль примечателен умением выделять абстракции и повторно используемый код.
2) Следующий проект, на который следует обратить внимание – это приложение разработанное Yves Goeleven, создание данного приложения описано в его блоге (так же посвященному основным концептам DDD). Другим его приложением является DDD-каркас. Следует обратить внимание на его реализацию взаимодействия шаблонов Repository и Specification.
3) Billy McCafferty разрабатывает потрясающий open source фреймворк, сфокусированный на DDD, под названием S#arp Architecture. У него есть очень хорошее описание, включающее в себя описание шаблонов и подходов, заключенных в фреймворке. Фреймворк нацелен на разработку ASP.NET MVC приложений с применением NHibernate.
4) C# Domain-Driven Design sample application ( ndddsample ), это приложение, разрабатываемое Джимми Нильссоном, демонстрирует разбиение приложения на ключевые слои с точки зрения DDD. Так же демонстрируется практическое применение шаблонов building block в предметной области перевозки грузов, описанной в его книге.
Этот проект основан на совместной работе компании Эрика Ивенса “Domain Language” и шведской консалтинговой компании “Citerus”.
Цель этого проекта:
- Показать практическое применение использования DDD с применением .NET.
- Использование актуальных утилит, технологий и методологий разработки в области .NET, обсуждаемых ALT.NET-коммунити.
- Привести практические примеры реализации типовых DDD приложений.
- Показать способ реализации DDD на конкретной платформе, что позволит без труда осуществить тоже самое на любой другой платформе.
- Помочь в выборе реализуемых практик. Различные подходы позволят сообществу обсудить их и выбрать соответствующий для конкретной реализации.
здесь более подробная информация.
7. Ресурсы по Domain Driven Design
Официальный сайт – http://domaindrivendesign.org/
Группа обсуждений – http://tech.groups.yahoo.com/group/domaindrivendesign/ это взрослая группа, очень хороший источник идей, место для обсуждений всех видов проблем в области DDD. В ней на ваши вопросы могут ответить опытные в DDD люди, даже Эрик Ивенс
.
Блог Jimmy Bogard’а – http://www.lostechies.com/blogs/jimmy_bogard/default.aspx
Блог Colin Jack’а – http://colinjack.blogspot.com/
Блог Greg Young’а – http://codebetter.com/blogs/gregyoung/default.aspx
Блог Casey Charlton’а – http://devlicio.us/blogs/casey/
Блог Udi Dahan’а – http://www.udidahan.com/
Введение в Domain-Driven Design – http://msdn.microsoft.com/ru-ru/magazine/dd419654.aspx
8. Заключение
Если вы заинтересованы в расширении ваших “объектно-ориентированных горизонтов” в сложных корпоративных системах и изучении новых способов разработки и проектирования, то DDD – именно то что нужно.
http://weblogs.asp.net/arturtrosin/archive/2009/02/09/domain-driven-design-learning.aspx
Делаем code-background-color persistance в Visual Studio 2010
Сегодня утром пришло письмо с connect.microsoft.com, куда я запостил баг о том, что VS2010 не умеет сохранять настройку цвета фона. И вот что, данный баг пофиксен:
Цитирую:
“For now, there is an extension written by a member of the VS Editor team as a patch that will allow custom background colors to persist. You can find it in VS by going to Tools->Extension Manager and searching for the "BackgroundPatchExtension," or download it from a web browser at this link: http://visualstudiogallery.msdn.microsoft.com/en-us/d53e0db3-6c41-4cf5-8ca1-339aeef1ac30. Once you install it, just make sure it is enabled in the Extension Manager, and your background color should be applied correctly.”
Надеюсь для кого-нибудь это будет полезным.
Пример практики BDD при работе со Specter Framework
Specter – инфраструктура для составления объектно-поведенческих спецификаций для .NET. Он предоставляет возможности для обеспечения разработки, руководствуясь поведением системы (BDD), требуя от разработчиков написания исполняемой спецификации для объектов перед написанием самих объектов. Технически это ни чем не отличается от разработки по средствам тестирования (TDD), хотя различия в форме написания снимают психологический барьер для написания “тестов” для кода, которого ещё не существует. Есть множество проектов для различных платформ, реализующих данную идею (К примеру RSpec для Ruby, NSpec для .NET. Подробнее о средах здесь).
Specter использует возможности мета-программирования языка Boo (CLR .NET) для написания неплохо читаемых спецификаций.
Пример практики BDD при работе со Specter
Для нашего примера рассмотрим спецификацию мини-бара Бендера, она будет выглядеть следующим образом:
import Specter.Framework
import Bender
context "At Bender's bar":
_bar as duck #our subject is defined in the setup block below
setup:
subject _bar = Bender.MiniBar()
#one-liner shorthand
specify { _bar.DrinkOneBeer() }.Must.Not.Throw()
specify "If I drink 5 beers then I owe 5 bucks":
for i in range(5):
_bar.DrinkOneBeer()
_bar.Balance.Must.Equal(-5)
specify "If I drink more than ten beers then I get drunk":
for i in range(10):
_bar.DrinkOneBeer()
{ _bar.DrinkOneBeer() }.Must.Throw()
* This source code was highlighted with Source Code Highlighter.
Хотелось бы отдельно отметить возможность читаемости данного кода сторонними от программирования людьми.
Что же мы такое написали?
Всё очень просто, мы создали привычный нам по NUnit TextFixture Class и описали Test методы. Сейчас расскажу, как это получилось. Обратим внимание на следующую строчку:
context "At Bender's bar":
* This source code was highlighted with Source Code Highlighter.
Мы определяем некий context. Что же он из себя представляет? На самом деле, если полезть рефлектором в сборку, которую мы полчим, при компиляции спецификации, мы обнаружим, что данный контекст являет собой сам TextFixture Class:
[NUnit.Framework.TestFixture]
class EmptyStack:
* This source code was highlighted with Source Code Highlighter.
Далее посмотрим на:
setup:
subject _bar = Bender.MiniBar()
* This source code was highlighted with Source Code Highlighter.
Это являет собой привычный нам SetUp:
[NUnit.Framework.SetUp]
public void SetUp()
{
subject _bar = Bender.MiniBar();
}
* This source code was highlighted with Source Code Highlighter.
Следующая интересная нам строчка:
specify { _bar.DrinkOneBeer() }.Must.Not.Throw()
* This source code was highlighted with Source Code Highlighter.
Является уже тестом:
[NUnit.Framework.Test]
public void BarDrinkOneBeerMustNotThrow()
{
Assert.DoesNotThrow(_bar.DrinkOneBeer());
}
* This source code was highlighted with Source Code Highlighter.
Аналогично следующие строки соответствуют:
specify "If I drink 5 beers then I owe 5 bucks":
for i in range(5):
_bar.DrinkOneBeer()
_bar.Balance.Must.Equal(-5)
* This source code was highlighted with Source Code Highlighter.
Так же тестам:
[NUnit.Framework.Test]
public void IfIDrink5BeersThenIOwe5Bucks()
{
for (int i = 0; i == 5; i++)
_bar.DrinkOneBeer();
Int32MustModule.Must(_bar.Balance, “Bar balance must equal -5").Equal(-5);
}
* This source code was highlighted with Source Code Highlighter.
И ещё одна строчка:
specify "If I drink more than ten beers then I get drunk":
for i in range(10):
_bar.DrinkOneBeer()
{ _bar.DrinkOneBeer() }.Must.Throw()
* This source code was highlighted with Source Code Highlighter.
Соответствует:
[NUnit.Framework.Test]
public void IfiDrinkMoreThanTenBeersThenIGetDrunk()
{
for (int i = 0; i == 10; i++)
{
_bar.DrinkOneBeer();
}
Assert.Throws((typeof(InvalidOperationException), _bar.DrinkOneBeer()); }
* This source code was highlighted with Source Code Highlighter.
Со спецификацией покончено, далее нам необходимо написать КОД нашего приложения, т.к. specter выругался о том, что спецификация не реализована:
Что же, реализуем наш мини-бар:
namespace Bender
class MiniBar:
pass
* This source code was highlighted with Source Code Highlighter.
И добавляем необходимый метод:
namespace Bender
class MiniBar:
def DrinkOneBeer():
pass
[getter(Balance)]
_balance = 0
* This source code was highlighted with Source Code Highlighter.
Но тем не менее specter не доволен, так как наш метод не реализует работу с балансом, описанную в спецификации:
Придётся добавить реализацию:
namespace Bender
class MiniBar:
def DrinkOneBeer():_balance-- if _balance < -10: raise System.Exception("i'm drunk")
[getter(Balance)]
_balance = 0
* This source code was highlighted with Source Code Highlighter.
По-моему specter’у всё понравилось:
Отлично, вот мы и попрактиковали BDD.
Итак, мы получаем привычные нам unit-тесты, однако мотивация написания немного измениться, а так же нами будет приобретена такая возможность, как предоставление specter-спецификации тестов в качестве документации. Мне кажется это отличная идея!
Ресурсы
О BDD почитать можно здесь:
http://habrahabr.ru/blogs/testing/52929/ (про BDD на русском на примере RSpec, в конце статьи есть ссылки)
Знакомство с Behavior Driven Development (BDD) (рус.)
Скачать Specter можно здесь:
Сценарии поддержки рабочих процессов для Microsoft SharePoint
Бизнес с готовностью внедряет в своей ИТ-инфраструктуре Microsoft SharePoint по самым разным причинам, однако, большинство клиентов отмечает, что координация бизнес-процессов в этом продукте требует гораздо большей технической квалификации, чем они рассчитывали (чем было обещано рекламой).
Очевидно, что компаниям необходимы инструменты работы с бизнес-процессами. Но, вместо того чтобы приобретать и устанавливать дополнительные продукты, аналитики компании Gartner предлагают сначала ознакомиться с существующими в виде дополнений к SharePoint сценариями планирования.
Microsoft Office SharePoint Server (MOSS) 2007 и Windows SharePoint (WSS) Services 3.0 – лишь два представителя целого ряда продуктов Microsoft, которые поддерживают идеологию «готовых к использованию» бизнес-процессов. С этой концепцией так же работают BizTalk Server, Visio и InfoPath. Многие клиенты, использующие тот или иной вариант SharePoint, отмечают, что использование этих вроде бы «готовых» бизнес-процессов на самом деле требует гораздо больших усилий, чем обещает реклама. Иногда требуется внедрение дополнительных технологий.
В ответ на многочисленные запросы пользователей, аналитики компании Gartner выпустили документ, где подробно рассказывают о различных вариантах решения этой проблемы. В качестве объекта исследования ими были выбраны инструменты, сосредотачивающие свое внимание на автоматизации бизнес-процессов, для улучшения координации и связей между сотрудниками, процессами и информацией в компании.
Модификация без внедрения самостоятельных решений
Существует множество инструментов, позволяющих поддержать автоматизацию рабочих процессов даже в рамках SharePoint. Однако, предприятия не торопятся внедрять их в свои ИТ-инфраструктуры, стремясь ограничить стоимость разработки. Они стараются облегчить себе жизнь при помощи простых в использовании дополнений – шаблонов или заранее сконфигурированных решений. По мнению аналитиков Gartner, модификация ИТ-инфраструктуры при помощи дополнений и расширений гораздо проще, нежели полноценный «культурный сдвиг» в сторону более совершенных инструментов сотрудничества и управления процессами. Дополнив решение от Microsoft, бизнес сможет достигнуть многого, и потенциальная прибыль очень скоро начнет увеличиваться.
Основные преимущества, которые обычно бизнес-аналитики, разработчики и другой нетехнический персонал компаний, ожидает от внедрения проектов в области управления бизнес-процессами (business process management, BPM) на самом деле заключаются в создании культуры бизнес-процессов как таковых. И это ожидание в основном управляет инвестициями в технологию. Оптимизация расходов, упрощение бизнес-процессов, исключение «бумажных технологи» может стать следствием стратегических инвестиций в эти дополнения.
Существуют как большие, так и маленькие компании, создающие решения для дополнения SharePoint. При этом существуют варианты практически под любой бюджет; однако, некоторые решения могут быть не столь очевидными, даже при условии, что в ИТ-инфраструктуре уже может присутствовать какой-то продукт этого производителя.
Аналитики компании Gartner выделяют несколько сценариев работы с бизнес-процессами для упрощения взаимодействий между людьми, процессами и информационной составляющей. В каждом из них необходимо выбрать тот вариант, который будет наиболее полно отвечать первоначальным требованиям. Рассматривая потенциал SharePoint, бизнес обычно выбирает один или несколько из следующих сценариев:
- Интеграция или миграция с Lotus на Microsoft;
- Общая поддержка административных процессов при помощи SharePoint для среднего бизнеса;
- Фокус на интеграции с системами управления контентом;
- Предоставление возможности управления процессами нетехническому персоналу.
Эти сценарии и послужили полем для исследований специалистов Gartner. В каждом из случаев была рассмотрена наиболее типичная практика и предложены инструменты для расширения функциональности. Учитывая те ресурсы, которые необходимы для дополнения стандартной версии Microsoft SharePoint функционалом платформы управления процессами, потребуется целый диапазон технологий. При этом некоторые из них будут использоваться мало, и представлять собой скорее тактический ход, а другие же будут применяться наиболее активно, являясь стратегическими.
Сценарий 1. «Простой» переход от IBM Lotus Notes/Domino к SharePoint
Обычно в таком сценарии требуются:
- Шаблоны
- Дизайн форм
- Анализ кода и процессов
- Моделирование процессов или скрипты
- Отчеты
- Расширенный запуск и интеграция
Инструменты, позволяющие улучшить функциональность SharePoint применительно к данному сценарию:
- Собственные шаблоны Microsoft: Windows Sharepoint Services (WSS), Microsoft Office SharePoint Server (MOSS) и InfoPath.
- Texcel FormBridge для конвертации некоторых шаблонов Word или PDF в формат InfoPath.
- Casahl ecKnowledge для преобразования форм Domino к формату InfoPath.
- Vital Path, Tzunami или Quest для миграции контента.
- Cerenade или Cardiff для дизайна и обработки форм (если до сих пор для решения этой задачи не используется InfoPath/Forms Server).
- K2 Blackpoint, Nintex или Open Text/Captaris Workflow для разработки простых приложений, основанных на бизнес-процессах для SharePoint.
Сценарий 2. Широкое административное применение в сфере среднего и крупного бизнеса
Аналитики Gartner предложили несколько самых общих требований, которые выдвигаются к системе управления бизнес-процессами в рамках этого сценария:
- Простой интерфейс, когда далекий от уровня системного администратора человек может построить бизнес-процесс, пользуясь графической формой.
- Библиотека шаблонов.
- Отсутствие необходимости написания скриптов.
- Быстрая разработка (не более 60 дней на создание и тестирование приложения для работы с бизнес-процессами).
- Масштабируемость.
- Возможность создания бизнес-процессов, работающих «над» географически-удаленными точками.
- Совместимость с существующей архитектурой.
- Интеграция и совместная работа с with WSS, MOSS, Workflow Foundation, Visio, SQL, BizTalk и Exchange.
- Простое использование и внесение изменений, когда любой пользователь может доработать или обновить бизнес-процесс.
- Высокий уровень совместимости; совместимость разработанных приложений с продуктами Microsoft и ее партнеров.
- Графическая индикация бизнес-процесса.
Кандидатами для работы в рамках данного сценария являются:
- Ascentn – расширенное средство для работы с простыми бизнес-процессами, предназначено для того, чтобы стать частью сервис-ориентированной архитектуры .NET.
- CorasWorks – платформа, сфокусированная на пользовательском интерфейсе.
- Integrify – еще одно средство .NET, отличающееся от указанного выше моделью предоставления услуг.
- K2 Blackpoint – одно из наиболее бюджетных решений, которое в будущем можно обновить до BPMSuite.
- Nintex – мощное средство для работы с бизнес-процессами.
- Open Text – приобретение Captaris Workflow поставило этого производителя достаточно близко к Microsoft.
- ShareVis – средство с акцентом на формах.
- Skelta – инструмент для разработчиков и независимых производителей программного обеспечения.
- Workflowgen – простой и быстрый инструмент (хотя, по своим масштабам он несколько больше, чем Workflow Foundation).
Существуют так же и сугубо региональные решения, не представленные в этом списке.
Сценарий 3. Стратегическая интеграция с существующими системами управления контентом
В рамках данного сценария от SharePoint требуется репликация серверов, масштабируемость, поддержка сложных документов и зачатки управления бизнес-процессами.
Среди решений в данной категории можно указать:
- EMC/Documentum – интеграция с другими приложениями обеспечивается за счет веб-партов, которые позволяют пользователям SharePoint напрямую просматривать и взаимодействовать с данными.
- Hyland – обеспечивает 3 уровня интеграции с Microsoft Office SharePoint Server 2007.
- IBM/FileNet. FileNet Connector для SharePoint Web Parts расширяет систему управления документами FileNet, делая ее совместимой с SharePoint.
- Open Text – поддерживает шаблоны, страницы ASP .NET, поиск, архив и т.п. посредством Livelink ECM .NET API.
Сценарий 4. Контроль большой .NET архитектуры на основе бизнес-процессов (доступный не администраторам системы)
В рамках этого сценария аналитики Gartner предложили список из нескольких технологий, которые наиболее полно отвечают задаче создания системы управления бизнес-процессами крупного масштаба:
- Ascentn AgilePoint – поддерживает полный комплекс продуктов Microsoft, включая BizTalk Server, SharePoint Server, Windows Workflow Foundation, Microsoft Office и Visual Studio.
- Global360 – партнер компании Microsoft, предлагающий решения на основе MOSS.
- K2 Blackpearl – решение, построенное на Windows Workflow Foundation и поддерживающее интеграцию с MOSS.
- Metastorm – один из ведущих партнеров Microsoft в рамках Business Process Alliance. Сильная черта данного продукта – адаптация для нетехнического персонала.
- Singularity – отличается от других производителей своей концентрацией на процессах, связанных с базой знаний.
- Ultimus BPM Suite 8.1 – предлагает сильную технологию взаимодействия человека и бизнес-процессов.
Оригинал поста можно найти здесь: http://www.itcontent.ru/archives/blog/sharepoint_add_ons
Подробнее об исследовании Gartner вы можете прочитать на сайте аналитической компании.
Как создать ассоциацию workflow и списка программно
Цель поста
Данный пост призван продемонстрировать как выполнять ассоциацию workflow и списка программно. Workflow может быть стандартной, либо созданным в Visual Studio. Что касается workflow, он будет использовать стандартные списки задач и список истории workflow.
Примеры
Договоримся, что переменная web – это объект SPWeb, содержащий список, который нам необходим для ассоциации с workflow.
1. Объявим переменные, которые будем использовать
- SPList myList = null; // Лист для ассоциации с workflow
- string myListName = null; // название нашего спика
- SPList historyList = null; // список истории workflow
- SPList taskList = null; // список задач workflow
- string workflowTemplateGuid = null; // Guid шаблона worklfow
- SPWorkflowTemplate workflowTemplate = null; // шаблон Workflow
- SPWorkflowAssociation workflowAssociation = null; // ассоциация с workflow
- string workflowAssocName = null; // имя ассоциации с workflow
* This source code was highlighted with Source Code Highlighter.
2. Инициализация
Убедитесь, что используете internal name списка. И установите имя ассоциации с workflow, он может соответствовать наименованию соответствующего workflow.
- myListName = "My list name";
- workflowAssocName = "My Workflow";
* This source code was highlighted with Source Code Highlighter.
3. Получить шаблон workflow
Если вы хотите использовать кастомизированный workflow и знаете GUID его шаблона, используйте его.
- workflowTemplateGuid = "BAD855B1-32CE-4bf1-A29E-463678304E1A";
- workflowTemplate = web.WorkflowTemplates[new Guid(workflowTemplateGuid)];
* This source code was highlighted with Source Code Highlighter.
Так же вы можете получить GUID шаблона, используя метод GetTemplateByName.
- // Пытаемся получить список истории workflow
- try
- {
- historyList = web.Lists["Workflow History"];
- }
- catch (ArgumentException exc)
- {
- // Создаем список истории workflow
- Guid listGuid = web.Lists.Add("Workflow History", "", SPListTemplateType.WorkflowHistory);
- historyList = web.Lists[listGuid];
- historyList.Hidden = true;
- historyList.Update();
- }
* This source code was highlighted with Source Code Highlighter.
4. Получить, либо создать списки истории и задач workflow.
Список истории, используемый workflow, должен быть унаследован от шаблона списка WorkflowHistory. В большинстве случаев вам не понадобиться его создавать.
- workflowTemplate = web.WorkflowTemplates.GetTemplateByName( "Template name", System.Globalization.CultureInfo.CurrentCulture);
* This source code was highlighted with Source Code Highlighter.
Список задач – это обычный список, унаследованный от шаблона списка задач. Если вы хотите создать специфичный список задач для workflow, не стоит называть его “Задачи” (“Tasks”). R примеру мы можем назвать его “Задачи рабочего процесса” (“Workflow tasks”).
- // Пытаемся получить список задач для workflow
- try
- {
- taskList = web.Lists["Workflow Tasks"];
- }
- catch (ArgumentException exc)
- {
- // Создаём список задач для workflow
- Guid listGuid = web.Lists.Add("Workflow Tasks", "", SPListTemplateType.Tasks);
- taskList = web.Lists[listGuid];
- taskList.Hidden = true;
- taskList.Update();
- }
* This source code was highlighted with Source Code Highlighter.
5. Создаем ассоциацию с workflow, конфигурируем её и привязываем к списку.
- // Включаем небезопасные обновления для узла (web)
- web.AllowUnsafeUpdates = true;
- try
- {
- // Создаем ассоциацию workflow
- workflowAssociation = SPWorkflowAssociation.CreateListAssociation( workflowTemplate, workflowAssocName, taskList, historyList);
- // Устанавливаем параметры workflow
- workflowAssociation.AllowManual = false;
- workflowAssociation.AutoStartCreate = true;
- workflowAssociation.AutoStartChange = false;
- // Связываем workflow со списком
- myList.AddWorkflowAssociation(workflowAssociation);
- // Активируем ассоциацию
- workflowAssociation.Enabled = true;
- }
- finally
- {
- web.AllowUnsafeUpdates = false;
- }
* This source code was highlighted with Source Code Highlighter.
Источник
Данная статья является переводом данного поста:
http://blogs.prexens.com/Lists/Posts/Post.aspx?List=7a299699-f8da-4559-920c-bda481608691&ID=9
На моём HP Mini запустилась Visual Studio 2010
Перед моей поездкой в Индию я купил нетбук HP Mini 2140. Это прекрасная вещь. Он весит всего 1,8 кг. Поддерживает максимальное разрешение 1024 x 576 (нормальный по ширине но укороченный по высоте). Он обладает клавиатурой почти нормального размера. Моей любимой особенностью является то, что он может работать порядка 8 часов – что довольно таки долго.
Он поставляется с предустановленной Windows XP. Но я скачал и установил на него Windows 7RC. В мини нет DVD или компакт-дисков. Я скопировал образ Windows 7 на USB-флешку с помощью Daemon Tools. И установил Windows 7 с USB-флешки.
Далее я установил Windows Live Sync (так же известный как foldershare). Windows Live Sync синхронизирует файлы из папки My Documents\Everywhere между моим лаптопом, десктопом и нетбуком. Я могу изменять документы на моём нетбуке в автобусе Microsoft двигаясь на работу, позже они автоматически синхронизируются с компьютером на моём рабочем месте.
И наконец, я поставил на свой нетбук Visual Studio 2010. Я взял послений билд. Скорее всего мой нетбук не подходит даже под минимальную требуемую конфигурацию, однако Visual Studio 2010 работает прекрасно.
Я не уверен, что при работе Visual Studio на нетбуке процессор Atom моего HP Mini, выжимает из нетбука всё. И, определенно, не стоит запускать несколько приложений при работе Visual Studio. Однако данный пример показывает, что можно довольно-таки продуктивно потратить время, проведенное в самолёте или автобусе, за разработкой.
Во время установки VS2010 был даже такой момент, когда мне показалось, что она закончится неудачей, т.к. инсталлятор сообщил о том, что мой нетбук не подходит под минимальные требования разрешений (высота оказалась на 3 пикселя меньше требуемой), однако, я проигнорировал предупреждение, и установка успешно продолжилась.
От меня
Ну что же, радует тот факт, что Visual Studio 2010 запустилась на нетбуке, с нетерпением жду Пн, 18 мая, чтобы слить beta 1.
Данная статья является переводом:
http://stephenwalther.com/blog/archive/2009/05/14/my-hp-mini-runs-visual-studio-2010.aspx
MonoDevelop – Разрабатываем ASP.NET MVC приложения на Mac OS X
После релиза preview ASP.NET MVC MonoDevelop addin, я решил попробовать его на Маке.
Хотя MonoDevelop 2.0 на Маке до сих пор в alpha-врсии, он получше того, что было в версии 1.0. Помимо проблем с перерисовкой GTK+ , основными проблемами в Мак-интеграции являются реализация Ctrl-Click, меню верхнего уровня и Мак шоркатов. Сделать в MonoDevelop полноценную поддержку Мака –это наша цель в MonoDevelop 2.2.
Я скачал Mono 2.4 и MonoDevelop 2.0 для маков (alpha версию), установка подобна установки аналогов в Linux, немного отличается парочкой предупреждений во время установки, но работает это безупречно!
Посколько в группе MonoDevelop слабо знакомы с Маком, они ожидают от пользователей широкой обратной связи, чтобы оттачить функционал на отлично
Оригинал
http://davidhayden.com/blog/dave/archive/2009/05/06/MonoDevelopMac.aspx
http://mjhutchinson.com/journal/2009/04/04/monodevelop_aspnet_mvc_mac
SharePoint (WSS 3.0 & MOSS 2007) SDK Updated April 2009 (v1.5)
Вышло апрельское (April 2009 refresh v1.5) обновление SDK of the Windows SharePoint Services 3.0 & Office SharePoint Server 2007.
- WSS 3.0 SDK (online)
- WSS 3.0 SDK (в виде CHM v1.5)
- Office SharePoint Server 2007 SDK (online)
- Office SharePoint Server 2007 SDK (в виде CHM v1.5)
.