Сценарий:
- Windows Workflow Foundation (WF) в .NET 4
- Рабочий процесс, развернутый как служба WCF
- Несколько операций получения, все с одинаковымипараметры
- Имя операции соответствует имени операции
- Использование постоянного рабочего процесса SQL Server
- (без SharePoint)
По умолчанию знание рабочего процессавстраивается в клиенты при добавлении ссылки на сервис и создании прокси.Клиент знает, какие методы WCF доступны.
Я хочу отделить рабочий процесс от клиентов, по сути, создав «общего» клиента, который может работать с любым рабочим процессом, соответствующим определенным соглашениям.Клиент запросит хранилище экземпляров SQL, чтобы определить, какие действия / операции / закладки (и) данный экземпляр ожидал (это уже стандартный столбец - ActiveBookmarks), а затем предоставит этот выбор пользователю.
Таким образом, рабочий процесс может быть изменен без перекомпиляции / повторного развертывания клиентов.Несколько коммерческих систем BPM работают таким образом;Вы можете добавить новые клиентские действия, и они автоматически появятся в рабочей очереди клиента.Все динамически обнаруживается.
Как это можно сделать?Требуется ли использование Reflection.Emit для генерации прокси на лету?Было бы проще, если бы каждая операция использовала свой контракт на обслуживание?