Является Windows Workflow Foundation Statemachines, подходящий для высокопроизводительных сценариев?

От документация :

Условные выражения (иногда названный “ternary operator”) имеют самый низкий приоритет всех операций Python.

выражение x if C else y сначала оценивает условие, C ( не x ); если C верен, , x оценен, и его значение возвращено; иначе y оценен, и его значение возвращено.

См. PEP 308 для получения дополнительной информации об условных выражениях.

Новый начиная с версии 2.5.

6
задан Joachim Kerschbaumer 19 August 2009 в 18:39
поделиться

4 ответа

Конечные автоматы отлично подходят для высокопроизводительной системы. Если вам действительно нужна очень высокая производительность, использование основы рабочего процесса добавляет много сложностей и накладных расходов. Я обнаружил, что biztalk совершенно не подходит для очень высокой производительности.

5
ответ дан 9 December 2019 в 20:46
поделиться

В настоящее время Microsoft используют WF в своих серверных продуктах, и они расширяют это. Так, например, механизм WF можно найти в Share Point Server (MOSS) и в BizTalk Server. Оба достаточно хорошо масштабируются и допускают сценарии горизонтального масштабирования, т. Е. Вы добавляете больше (дешевого) оборудования в кластер с балансировкой нагрузки, если вам требуется больше вычислительной мощности.

HTH, Томас

1
ответ дан 9 December 2019 в 20:46
поделиться

Это не говорит напрямую о производительности, но если вы планируете в конечном итоге перейти на WF 4.0, вы должны знать, что StateMachineActivity, скорее всего , не поможет .

1
ответ дан 9 December 2019 в 20:46
поделиться

Если вы ищете высокопроизводительную машину высокой производительности .NET, я бы рекомендовал . Вот выдержка с сайта проекта:

поддерживаются большинство стандартных состояний конструкций:

  • общая поддержка состояний и триггеры любого типа .NET (цифры, Строки, enums и т. Д.)
  • Иерархические состояния вход / выход События для государств
  • Охранные предложения для поддержки условного Переходы
  • Анноспекция

также предусмотрены некоторые полезные расширения:

  • Возможность хранения состояния внешне (Например, в отслеженном свойстве Pinq к SQL)
  • Параметрированные триггеры
  • Условия ReentRant

Конфигурация следующая:

var phoneCall = new StateMachine<State, Trigger>(State.OffHook);

phoneCall.Configure(State.OffHook)
    .Permit(Trigger.CallDialed, State.Ringing);

phoneCall.Configure(State.Ringing)
    .Permit(Trigger.HungUp, State.OffHook)
    .Permit(Trigger.CallConnected, State.Connected);

phoneCall.Configure(State.Connected)
    .OnEntry(() => StartCallTimer())
    .OnExit(() => StopCallTimer())
    .Permit(Trigger.LeftMessage, State.OffHook)
    .Permit(Trigger.HungUp, State.OffHook)
    .Permit(Trigger.PlacedOnHold, State.OnHold);

// ...

phoneCall.Fire(Trigger.CallDialled);
Assert.AreEqual(State.Ringing, phoneCall.State);

И приятная вещь заключается в том, что поскольку он реализует универсальные, вы можете использовать INT или строку для представления состояний и триггеров, позволяя вам очень легко интегрироваться с вашей базой данных или ORM. Красота состоит в том, что нет дополнительного хоста выполнения, о котором вы должны беспокоиться, просто загрузите состояние State с текущим состоянием с объекта или записи, и вы хотите пойти.

5
ответ дан 9 December 2019 в 20:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: