Я планирую свою систему IoT и сравниваю Akka.NET с Orleans. В целом Orleans API более близок к стандартам .NET, но мне интересно, есть ли другой способ связи с Grain? В документации я вижу, что мы определяем интерфейс как
public interface IDevice : IGrainWithGuidKey
{
Task TurnOn(TurnOnCommand command);
Task TurnOff(TurnOffCommand command);
}
И использовать это так
IDevice device = GrainFactory.GetGrain<IDevice>(id);
Это нормально, когда у нас есть актеры с очень строгим интерфейсом, но дома у нас много устройств, и я не хочу определять 100-кратные интерфейсы для каждого из них. Я бы предпочел, чтобы у каждого из них был набор обработчиков для команд, которые он может обрабатывать, и клиент может вызывать
device.Execute(new TurnOnCommand())
без определения интерфейса для каждого. Возможно ли это в Орлеане?