Управление версиями интерфейса
В этой статье вы узнаете, как использовать управление версиями интерфейса зерна. Управление версиями состояния Grain выходит из область.
Обзор
В данном кластере силосы могут поддерживать разные версии типа зерна.
В этом примере клиент и Silo{1,2,3} были скомпилированы с интерфейсом 1.A
Silo 4 был скомпилирован с A
версией 2.
Ограничения
- Нет управления версиями в рабочей роли без отслеживания состояния
- Интерфейсы потоковой передачи не имеют версий
Включение управления версиями
Если атрибут версии не добавляется явным образом в интерфейс зерна, то зерна имеют версию по умолчанию 0. С помощью versionAttribute в интерфейсе зерна можно использовать версию:
[Version(X)]
public interface IVersionUpgradeTestGrain : IGrainWithIntegerKey
{
}
Где X
номер версии интерфейса зерна, который обычно монотонно увеличивается.
Совместимость версий и размещение
Когда вызов из набора версий поступает в кластер:
- Если активация не существует, будет создана совместимая активация
- Если активация существует:
- Если текущая не совместима, она будет деактивирована и будет создана новая совместимая (см . стратегию выбора версий).
- Если текущий совместим (см . совместимые зерна), вызов будет обрабатываться нормально.
По умолчанию:
- Все версии зерна должны быть только обратно совместимыми (см . рекомендации по обратной совместимости и совместимые зерна). Это означает, что зерно версии 1 может вызывать зерно версии 2, но зерно версии 2 не может вызывать версию 1.
- Если в кластере существует несколько версий, новая активация будет случайным образом помещена в совместимое хранилище.
Это поведение по умолчанию можно изменить с помощью GrainVersioningOptions:
var silo = new HostBuilder()
.UseOrleans(c =>
{
c.Configure<GrainVersioningOptions>(options =>
{
options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
});
});
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по