Должен ли я держать решения и функции в соотношении 1: 1?

У меня есть комплексное развертывание sharepoint с несколькими EventReceivers и рабочими процессами.

У меня также есть изменения схемы существующих списков, добавление новых столбцов метаданных и изменение существующих столбцов.

Должен ли я упаковать одну функцию, приемник событий или рабочий процесс в одно решение или поместить несколько функций в одно решение, поскольку все они работают вместе?

Одна из основных причин, по которой я спрашиваю, - это будущие обновления кода. Если функции разделены, то обновление одной части кода не потребует повторного развертывания всех функций в решении. Это то, о чем я должен беспокоиться, или "stsadmin -o upgradedesolution" решает любые проблемы с обновлением решения с множеством функций?

Дайте мне знать, если это имеет смысл для любого гуру SharePoint там.

Спасибо,
Кит

Обновление: Глядя на сайт, на который ссылается Дракса, я нашел этот справочный сайт: http://msdn.microsoft.com/en-us/library/aa543659.aspx

Это утверждение, по-видимому, сильно затрудняет обновление функций в решениях:

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

  • Удаление старых функций в новой версии решения.

  • Добавление новых функций в обновление решения.

  • Обновление или изменение сборки приемника для существующих функций в новой версии решения.

  • Добавление или изменение элементов Feature (файлы Element.xml) в новой версии решения.

  • Добавление или изменение свойств объекта в новой версии решения.

  • Изменение идентификатора или области действия старых функций в новой версии решения.

  • Удаление элементов Feature (файлы Element.xml) в новой версии решения.

  • Удаление свойств объекта в новой версии решения.

Итак... Что вы можете сделать с обновлением решения?

3 ответа

Решение

Я бы посоветовал не разбивать все на несколько решений. Поддержание, которое может быстро стать кошмаром. Попробуйте структурировать свой проект, который должен использоваться для создания WSP, таким же образом, как 12 папок на sharepoint. Тогда вы можете использовать WSP Builder, последняя стабильная версия приносит много полезных вещей.

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

Редакция:

Поэтому я провел небольшое исследование по теме обновления MOSS. По мнению MS, существует два способа обновления решений:

  1. Обновление на месте
  2. Инкрементное обновление

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

Инкрементное обновление (так его называет MS, скорее всего) не зависит от встроенных решений. Это означает, что каждый может реализовать это самостоятельно:(. Что еще лучше, я не смог найти никаких рекомендаций для этого подхода. Я полагаю, что этот подход вы хотели бы использовать, это пример постепенного обновления (разделение проекта на много независимых решений).

Также обратите внимание, что инкрементное обновление официально не поддерживается MS.

Так что я не знаю, какой совет тебе дать. Одиночный WSP более пригоден для обслуживания, чем некоторые из них, даже если вы вносите незначительные изменения, обновления работают отлично. But if you need to make some bigger structural changes problems start to show.

I'll probably wait and see if people with more MOSS expertise can say something about this topic.

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

UpgradeSolution действительно удобен, если вы просто обновляете сборку и оставляете предоставленные файлы без изменений.

Если вы не укажете -local, то upgradedesolution выполнит полный iisreset для всей вашей инфраструктуры. Это действительно стоит отметить, когда вы планируете подходящее время для выполнения обновлений.

Другие вопросы по тегам