Давно собирался написать о том, как мы разрабатываем решения для SharePoint-a. Мы, как обычно, пошли не тем путем, который рекомендует Microsoft, а выработали свой подход. Почему, я считаю, что наш подход лучше, сейчас расскажу. Напомню, что для разработки SharePoint решений Microsoft рекомендует каждому разработчику обзавестись своей собственной локальной виртуальной машиной для разработки и делать всю работу непосредственно внутри неё. Это «локальная» разработка, потому что студия у вас запущена на самом сервере непосредственно. Однако, при желании, можно разрабатываться и в «удаленном» режиме, когда студия запущена непосредственно на машине разработчика, а сама виртуальная машина хостится где-то на централизованном сервере. Здесь, правда, смешано два вопроса. Во-первых, где запускать студию для работы: на сервере или на своей рабочей машине. А во-вторых, где держать саму виртуальную машину: у разработчика на машине или централизованно. Почему работать со студией, запущенной на своей машине удобнее? Ну, или точнее, при наличии инструментальной поддержки удобнее? А вот почему: - Более отзывчивая студия.
Всё-таки через терминал со студией работать далеко не так комфортно, в сравнении с вариантом, когда студия запущена сразу на своей машине. Тут думаю и так понятно. К тому же, иногда, сервер может находиться достаточно далеко, где-то за океаном. При этом любая разработка по терминалу превращается в испытание воли и тренировку самообладания. Удаленная разработка же позволяет от этого избавиться. - Отделение исполняемой среды проекта от окружения, в котором этот проект разрабатывается.
В большей степени это возможность держать все проекты вместе у себя на диске, где-то скажем в папке Projects, открывать их по мере необходимости, собирать проект, не заходя на терминал вообще, искать по исходным текстам какой-нибудь класс и многое другое. А во-вторых, это возможность спокойно убивать, заменять и откатывать виртуальные машины в процессе работы. Раз на них исходных файлов проекта нет, шанс, что что-то потеряется, значительно уменьшается. Контент базу беречь, конечно же, при этом все равно надо. Но это уже совсем другая история. - Уменьшение требований к ресурсам виртуальной машины.
Нам практически не нужен терминальный сеанс на самом сервере и нам очень редко нужно на нем запускать студию. Это снижает требования по оперативной памяти для комфортной работы такой виртуальной машины. На одной это не сильно заметно, а вот если у вас их много, уже достаточно чувствительно. Без дополнений к студии здесь, конечно, не обойтись. Мы, в свое время, прошли долгий путь от скриптов в post-build event’ах, специальных батников, использующих psexec, до написания собственного дополнения к студии. Получилось вот такое решение http://wssdeploy.codeplex.com/ . Плюс, для создания SharePoint проектов на машине без SharePoint-а, нужно добавить себе в реестр копию ветки HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0 с любого сервера (полностью описано, например, тут http://techblog.hk.agenda-asia.com/2010/10/29/create-sharepoint-project-without-install-sharepoint-server/). После этого, необходимость заходить на терминал, чтобы что-то сделать с проектом, практически исчезает. Более подробно о типовых сценариях удаленной разработки расскажу в следующий раз. А пока, справедливости ради, стоит отметить недостатки удаленной разработки: - К сожалению, Workflow нельзя отлаживать удаленно. Для отладки придется все-таки логиниться на сервер.
- Немного более замороченный процесс отладки. Нужно запускать remote debugger на удаленной машине, следить чтобы сервер не был наглухо закрыт firewall-ом и тп. Есть нюансы при кросс-доменной отладке. Хотя, если все правильно настроено, процесс будет не сильно отличаться от отладки на локальной машине.
Вот, в принципе, и все минусы. На мой взгляд, плюсы существенно перевешивают минусы. Теперь немного о втором вопросе. Где держать сами виртуальные машины? У разработчиков на рабочих станциях или централизованно на сервере (ферме)? Однозначно централизованно на сервере: - В централизованном варианте можно добиться гораздо большей производительности каждой виртуальной машины за счет лучшего железа, большей памяти, аккуратно настроенного кеширования операций с жестким диском и т.п. На хорошем серверном железке с запасом памяти виртуальные машины будут работать значительно лучше, чем на ПК даже последней сборки.
- Так ими гораздо проще управлять. Мы делаем виртуальные машины под проекты. При этом если нашелся какой-то баг, а проект уже сдан, всегда можно включить машину и протестировать фикс, прежде чем его отсылать заказчику. А не искать её судорожно где-то на давно отформатированном диске у разработчика.
- Меньше ограничений по ресурсам. Можно спокойно выделить 10Gb оперативной памяти для виртуальной машины с FAST-ом или 128Gb на диск для демо машины от Microsoft.
Вот, не все моменты получилось осветить подробно. Но думаю, будет полезно тем, кто задумывается о том, как облегчить процесс разработки SharePoint решений. Будет очень интересно услышать, если кто-то не согласен с доводами, приведенными в данной статье, и узнать, почему не согласен.
Не так давно нам стало интересно, а какие бесплатные темы для SharePoint-а есть в интернете. Много ли, мало ли их, легко ли их поставить, насколько они красивые. В общем, мы сделали небольшое исследование. До него нам казалось, что бесплатных тем и шкур для шарепоинта должно быть очень и очень много, приблизительно так же, как, например, для WordPress-a. Однако, результат нас несколько удивил. Их оказалось не так чтобы супер много. А искали мы по разным ключевым словам: SharePoint theme, SharePoint skins, SharePoint templates и тому подобное. Итого мы нашли: - Три темы для 2007-го Шарепоинта от Miles Consulting Group
http://www.expertsharepointconsulting.com/Free-Standard-SharePoint-Master-Pages.aspx - Еще две темы для 2007-го Шарепоинта от IoTap
http://www.iotap.com/Downloads/SharepointSkins.aspx - Тема для 2010-го Шарепоинта от nxg-dzigns
http://www.nxg-dzigns.com/2010/10/free-sharepoint-2010-theme-nxg-blue/ - четыре примера мастер страниц от Microsoft. Качать:
http://www.microsoft.com/downloads/en/details.aspx?familyid=7c05ca44-869a-463b-84d7-57b053711a96&displaylang=en&tm - Десять тем для SharePoint-а 2007-го от компании Microsoft. Обзор:
http://www.zimmergren.net/archive/2009/03/23/ten-10-free-sharepoint-themes-visual-overview.aspx Качать: http://www.microsoft.com/downloads/en/confirmation.aspx?displaylang=en&FamilyID=0a87658f-20b8-4dcc-ad7a-09ad22641f3a Итак, поехали. 1. Мы поставили 1.5 темы из трех от Miles Consulting Group. Для начала, вот что получилось в результате: А полторы темы получилось потому, что каждая тема требует приличной работы для ее установки. Мы ограничились полной установкой одной шкурки и частичной установкой второй. Итого, уже на этом пакете тем выяснилась интересная особенность – большая часть всех бесплатных тем требует хорошего знания SharePoint-а и массы ручных действий. Например, эти две темы потребовали: - копирование папки вручную в 12\Templates\Features
- инсталляцию фичи с помощью stsadm
- исправление скопированных файлов !! в них были ошибки
- заливку файлов через SharePoint Designer
Ну вы поняли, да. Такой толстый намек, что нужно связаться с теми, кто эти темы делал. К тому же конечный результат весьма скромный: у логотипа зубчатые края, форма поиска не прижимается к правому краю, зашкурена только часть элементов. Итого, работа с трудом на троечку. 2. Две темы от IOTAP. Результат ниже: Процесс развертывания приблизительно такой же как и у первой группы тем: - закидываем файлы через SharePoint Designer
- правим ссылки на картинки в стилях и мастере. Там вероятно просто не задумывались, что тему могут развернуть не на корневой коллекции сайтов.
Заметим, что в первой теме меню Site Actions уж как-то сильно поплохело. Наша оценка – честные 3 балла из 5. 3. Давайте теперь посмотрим, что у нас есть для SharePoint 2010. Тем для него далеко не так много. Бесплатных мы нашли вообще всего две. Одна из них ниже, а вторая прилагалась как пример к статье о том, как делать темы самим. Тема от nxg-dzigns выглядит вот так:  В целом вполне неплохо. Устанавливается достаточно легко. Но! Из мастера забыли вычистить служебные атрибуты __designer:Preview и __designer:Values. Очень интересно, как они такой мастер получили. У нас-то давно есть свой подготовленный regex для удаления этой радости, чтобы делать это не вручную, а хотя бы Find & Replace диалогом в Visual Studio. Вот, кстати, сам regex : ((__designer\:(Values|Preview|Templates))|__Preview)="([^\"]|[\n])*" Но мы его используем для тех файлов, что вытянули напрямую через FPRPC с портала с помощью нашей же тулзы WssSync (руки просто никак не дойдут очистку в саму тулзу встроить). В общем, очень занимательный факт. Итого наша оценка 4 из 5. 4. Итак. Теперь темы от MS. Начнем с пакета из 4-х тем. Когда-то они все были доступны для просмотра в живую на сайте wssdemo.com . Но после апгрейда сайта на SharePoint 2010 они потеряли всякий блеск и выглядят там мягко говоря странно. Итак ниже, что у нас получилось: Темы также загружаются через SharePoint Designer. К сожалению, имеют одну характерную для MS особенность – корректно смотрятся только в IE. В остальных браузерах на них бес слез смотреть нельзя. Итого, вполне подойдет для разнообразия и как основа для более глубокой кастомизации. Тетверка с плюсом. 5. И на последок 3 темы из 10 из второго набора Microsoft. Темы выполнены качественно. Устанавливаются либо вручную, либо с помощью Visual Studio 2008 extensions for SharePoint. Не так чтобы совсем тривиально, но без проблем. После установки тему можно выбрать, внимание!!!, в меню Site Settings > Site Theme . Т.е. это именно классические файлы тем - css файлы + картинки, а не дополнительные мастер страницы. Эти темы, кстати, также скиннят и системные страницы (те что в /_layouts), что тоже огромный плюс. Дизайн может местами спорный, но одну две выбрать наверняка сможет каждый. Итого оценка – отлично. Выводы. Кроме MS видимо очень мало кто стал заморачиваться с созданием хорошего бесплатного пакета тем. Видимо, сказывается относительная сложность работы. Большая часть тем при установке требует подготовки, либо наличия специалиста, готового с ними хорошо повозиться. В основном темы пока есть для 2007-го SharePoint-а, а для 2010-го же пока только начинают появляться. Но бесплатные темы есть, это радует.
Как-то все привыкли считать SharePoint Foundation 2010 (как и WSSv3) бесплатным продуктом. В принципе, оно так и есть. Однако, когда дело доходит до вопроса о полной стоимости решения на базе SharePoint-a всё оказывается не так просто.
Рассмотрим для примера ситуацию, когда нам нужно запустить SharePoint портал которым будут пользоваться 500 человек, 150 пользователей внутри компании, а остальные будут внешние (партнеры, поставщики, клиенты и т.п.). Мы проанализировали требуемый функционал, подумали и решили, что базовой версии SharePoint Foundation нам вполне будет достаточно. Вопрос, сколько нам это будет стоить?
Ответ «нисколько», понятное дело, неправильный. Потому что для каждого пользователя нам нужна валидная лицензия на Windows Server и на SQL Server который мы используем (если это не Express или Embedded).
Начнемс с Windows Server'a. Цены для расчета берем вот отсюда http://www.microsoft.com/windowsserver2008/en/us/pricing.aspx. Принципиально у нас три варианта:
Windows Server 2008 R2 Standard/Enterprise/DataCenter. Выбираем подходящую нам редакцию и докупаем недостающее число CAL-ов для всех внутренних и внешних пользователей.
Например, если берем Windows Server 2008 R2 Enterprise (25 CALs), то нам еще нужно 475 CAL-ов. Считаем грубо стоимость: $4000 за сам сервер + $200 * (475/5) за пакеты по 5 CAL-ов. Итого получается: $4000 + $19000 = $23000.
Windows Web Server 2008 R2. Нам этот вариант не подходит, поскольку предполагает использование портала только внешними пользователями. На число внешних пользователей ограничений нет, однако внутри компании сервер могут только максимум 15 человек (информация получена из телефонного общения с MS). Также, для управления учетками внешних пользователей нельзя будет использовать AD.
Соответственно, если бы нам нужно было только 15 внутренних пользователей и нас все остальные условия устраивают, то стоимость решения составила бы: $469.
- Windows Server 2008 R2 Standard/Enterprise/DataCenter + External Connector License (ECL) для подключения всех внешних пользователей + CAL-ы для внутренних. Возьмем тот же Enterprise Edition, получим $4000 за сервер + $200 * (150/5) за пакеты по 5 CAL-ов для внутренних пользователей + $2000 за ECL. Итого: $12000.
Отмечу, что для анонимных пользователей никакие дополнительные лицензии вообще не нужны.
Еще один совсем особый случай, это когда вы хотите предоставлять доступ к SharePoint порталу в качестве платной услуги для клиентов (т.е. по сути, предлагаете хостинг). В этом случае нужно заключать Service Provider License Agreement (SPLA) с реселлером MS. Для чего нужно будет также зарегистрировать свои отношения с MS. В общем, это отдельная история.
Теперь насчет SQL Server'a. С SharePoint Foundation идет специальная редакция SQL Server Embedded Edition, которая не имеет ограничения на размер базы, однако она ограничена по возможностям. Физически SQL Management Studio с нею, конечно же, использовать можно, только вот не знаю насколько это «поддерживаемое» решение. Можно также поставить SharePoint на SQL Server 2008 R2 Express Edition – данный вариант имеет ограничение на размер базы в 10Gb, 1CPU, 1Gb RAM, что скажем так, маловато, особенно с аппетитами 2010-го SharePoint-а. Ну и можно купить взрослую редакцию. Для SQL Server-a у нас два варианта лицензирования: по числу пользователей либо попроцессорно. Соответственно в последнем случае стоимость внедрения еще возрастет. Например, для SQL Server 2008 R2 Standard (1 proc) потребуется увеличить бюджет еще на $7171 (цены взяты вот отсюда http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx).
Вообще, при покупке большого количества лицензий стоимость будет несколько ниже, однако порядок цен именно такой.
Еще о лицензировании SharePoint-а хорошо написано на русском здесь: http://blogs.technet.com/b/vladkol/archive/2009/01/11/office-sharepoint-server-2007.aspx
И здесь на англ, хотя в примерах расчета есть неточности: http://www.jones.bz/index.php/2009/05/20/wss-sharepoint-and-a-good-ol-game-of-licensing/
В общем, надеюсь, данная статья поможет разобраться в темном деле лицензирования «бесплатного» SharePoint-а :)
Также рекомендую в любых не тривиальных случаях звонить и уточнять непосредственно у Microsoft.
Как-то всё времени не было написать о том, что:
- Мы выложили вебчасть 3D TagCloud for SharePoint 2010 на CodePlex. Вебчасть рисует симпатичное интерактивное 3д облако тэгов по social tag'ам SharePoint'а. Реализована на основе стандартной вебчасти TagCloud и Cumulus плагина для WordPress. Исходные тексты прилагаются.
- Watson Search переехал на новый адрес. Теперь у проекта есть собственный сайт: http://watson-search.com/ . По большей части нам отдельный сайт потребовался, чтобы ставить на нем разные эксперименты по продвижению проекта.
Кстати, если кто-нибудь будет использовать 3D TagCloud вебпарту на общедоступном проекте, напишите, пожалуйста, нам. Мы добавим на ваш проект ссылку на CodePlex страничку.
До выхода RTM версии 2010-го SharePoint-а остались считанные дни, и у нас уже очень активно идет разработка нескольких проектов под новую платформу.
Как оказалось, разработка для 2010-ой версии имеет, в сравнении с 2007-ой, массу интересных особенностей.
Командная разработка под SharePoint это вообще интересный разговор. Мы, например, никогда не использовали рекомендуемый MS (http://msdn.microsoft.com/en-us/library/bb428899.aspx) подход. Основное отличие у нас касается рабочего окружения для разработчика: разрабатываться полностью внутри ВМ, к тому же локальной, на наш взгляд не очень удобно. В студии все-таки намного приятнее (в плане скорости и отзывчивости) работать непосредственно на своем десктопе, а не через терминал или внутри ВМ. К тому же, рекомендуемый подход тяжел в плане лицензирования. Даже по партнерской программе, у нас не будет по паре лицензий Windows Server + MOSS на каждого разработчика.
Поэтому для 2007-го мы использовали «удаленную разработку», когда студия, SharePoint Designer и сами проекты установлены и физически находятся на машине разработчика, а ВМ-ки для очередного проекта с MOSS и Remote Debugger'ом крутиться в пуле на «центральном» сервере.
Вот. А с 2010-ым SharePoint-ом и новыми расширениями 2010-ой студии, которые умеют работать только локально, похоже, придется переходить «рекомендуемый» процесс. Что, сейчас, за неимением альтернатив и происходит, но уж очень болезненно. Все-таки, хотя новый студийный плагин и имеет кучу приятных плюшек в плане создания проекта, в области деплоймента изменений в процессе разработки для нас это шаг назад. Поэтому мы уже думаем, как это можно будет исправить.
Еще очень интересные моменты с новым SharePoint-ом:
- Встроенные студийные тесты нельзя использовать для тестирования SharePoint-a. Тестовый проект можно создать только на базе .Net 4.0, из которого невозможно использовать объектную модель SharePoint-a. Поэтому здесь нас опять выручает nUnit + Resharper. А вот связка nUnit + TestDriven.Net не захотела работать по той же причине, что и родные тесты – хостовый процесс, похоже, пускается под .Net 4.0 (хотя может быть это можно как-то полечить).
- В сравнении с 2007-ым, новая ВМ требует значительно больше оперативной памяти. Для 2007-го SharePoint-а нам в большинстве случаем хватало ВМ с 768Mb памяти (Win2003 32bit + MOSS), в редких случаях на тяжелых проектах машинкам выделялось по 1024Mb, и этого было вполне достаточно для комфортной работы. А вот для 2010-го (Win2008x64 + MSS + VS + SPD) требуется уже минимум 3Gb. И при этом, работу все равно нельзя назвать комфортной – тормозит.
- В плане средств виртуализации получается очень интересная картина. У MS сейчас нет десктопного решения для виртуализации с поддержкой 64 битных гостевых ОС. Есть Hyper-V, но это не десктоп. Посмотрел в интернете (http://twtpoll.com/0wwdj1), кто как решает эту проблему, так и есть. VmWare, VirtualBox (наш вариант), VmWare ESX, ну и Hyper-V, куда уж без него.
В общем, пока нам для 2010-го разрабатываться сложнее, чем для 2007-го. Интересно, как скоро MS исправит ситуацию с использованием объектной модели SharePoint-a из .Net 4.0?
|