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

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

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

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

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