Рекомендации по созданию параллельных сборок

В следующих рекомендациях описывается, как создавать собственные параллельные сборки COM или Win32. Вам может не потребоваться создавать собственные параллельные сборки, если необходимые функциональные возможности предоставляются одной из поддерживаемых параллельных сборок Майкрософт. В этом случае используйте сборки, предоставляемые корпорацией Майкрософт, и следуйте инструкциям по использованию параллельных сборок в статье Использование изолированных приложений и параллельных сборок.

Сначала подумайте, является ли компонент подходящим кандидатом для параллельной сборки. Дополнительные сведения см. в статье Следует ли предоставлять общий компонент в виде параллельной сборки?

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

  • Решите, какие ресурсы следует включить в сборку. Помните, что сборка состоит из одного или нескольких файлов, которые всегда предоставляются приложениям и клиентам вместе. Сборка выступает в качестве основной единицы, используемой для именования, привязки, управления версиями, развертывания и настройки по умолчанию. Как правило, если не уверены в том, принадлежат ли два ресурса одной сборке, рекомендуется создавать их для перехода в отдельные сборки. Как правило, параллельная сборка состоит из одной библиотеки DLL.
  • Создайте манифест сборки для сборки. Манифест должен описывать COM-объекты или библиотеки типов в сборке. Дополнительные сведения о том, что следует создать в манифесте сборки, см. в разделе Манифесты сборки.
  • Оцените использование объектов, если в системе выполняется несколько версий сборки. Определите, требуются ли для разных версий сборки отдельные структуры данных, такие как файлы, сопоставленные с памятью, именованные каналы, зарегистрированные сообщения и классы Windows, общая память, семафоры, мьютексы и драйверы оборудования. Все структуры данных, используемые в разных версиях сборок, должны быть версиями с обратной совместимостью. Определите, какие структуры данных можно использовать в разных версиях, а какие структуры данных должны быть закрытыми для версии. Определите, требуются ли для общих структур данных отдельные объекты синхронизации, такие как семафоры и мьютексы.
  • Создайте библиотеку DLL для работы в качестве параллельной сборки, следуя рекомендациям, приведенным в статье Создание библиотеки DLL для параллельной сборки.
  • Создайте набор файлов заголовков и вспомогательных функций, чтобы обеспечить простой способ версий разделов реестра, содержащих состояние сборки. Сборки обычно сохраняют параметры состояния в разделах реестра. Параметры реестра должны быть написаны на основе отдельных версий, чтобы изолировать несколько версий сборки, которые могут выполняться одновременно. Разработайте параллельную сборку и библиотеку DLL для правильного хранения и обработки состояния сборки во время параллельных сценариев совместного использования. Следуйте рекомендациям из раздела Создание хранилища состояний для параллельных сборок.
  • Разработчики приложений, использующих частные сборки , должны защищать каталог приложений. Если приложение установлено с помощью установщика Windows, каталог приложения можно защитить с помощью таблицы LockPermissions. Как правило, системе предоставляется доступ на чтение, запись и выполнение частных сборок; всем остальным процессам предоставляется доступ только на выполнение и чтение.
  • Протестируйте сборку с помощью сценариев с параллельным доступом, чтобы убедиться, что она является допустимой параллельной сборкой. Успешной установки сборки недостаточно, чтобы гарантировать, что она будет работать должным образом.
  • Имитируйте метод нумеровки обновлений для сборки. Каждая сборка связана с номером версии из четырех частей. Слева направо основная, дополнительная часть, часть сборки и редакции разделяются точками. Измените основной или дополнительный номер сборки для версии, несовместимой с более ранними версиями. Измените только части сборки и редакции для обратной совместимости изменений сборки. Например, разработчик может использовать метод нумеровки, в котором все номера версий 1.0.0.* ссылаются на обновление версий сборки до версии 1.0.0.0.