Распространение службы приложений в качестве службы WCF - PullRequest
1 голос
/ 04 октября 2010

У меня есть описание моих Application Services с использованием моих причудливых классов ( ServiceDescription класс, который содержит коллекцию ServiceMethod описания, для упрощения).

Теперь я хочувыставить одну Сервис приложений как одну Сервис WCF (один Контракт).Текущее решение очень слабое - у меня есть консольное приложение, которое генерирует файл * .svc для каждой службы приложений ( ServiceDescription ).Существует один метод (Операция), сгенерированный для одного ServiceMethod .

. Это работает хорошо, но я хотел бы сделать его лучше.Его можно улучшить с помощью шаблона T4, но я уверен, что в WCF есть еще лучший способ.

Я все еще хотел бы иметь один файл * .svc на одну Службу приложений, но не хочу генерироватьметоды (для соответствующих методов службы приложений).Я уверен, что должны быть некоторые интерфейсы, которые позволяют обнаруживать операции динамически, во время выполнения.Может быть IContractBehavior ...

Спасибо.

EDIT1 : я не хочу использовать общий контракт операции, потому что я хотел бы получитьвозможность генерировать прокси службы со всеми операциями.

Я уверен, что если я пишу службу WCF и операции вручную, то WCF использует отражение для обнаружения операций в службе.Теперь я хотел бы настроить эту точку, чтобы не использовать отражение, просто используйте вместо этого мои «операции обнаружения кода».

1 Ответ

0 голосов
/ 04 октября 2010

Я думаю, что в этом случае нет ничего плохого в генерации статического кода.На мой взгляд, это лучшее решение, чем динамическая генерация контрактов.Имейте в виду, что ваш контракт - это единственное свидетельство, которое вы имеете / предоставляете, чтобы служба выполняла определенные операции над множествами.

Основная проблема, которую я вижу в отношении динамического подхода, связана с управлением версиями и совместимостью.Если все генерируется динамически, вы можете в конечном итоге прозрачно протолкнуть критические изменения в систему и создать некоторые проблемы с существующими клиентами.

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

Но если вы действительно хотите динамически обрабатывать сообщения, вы можете использовать общий контракт операции (со свойством Action, установленным на *) и вручную перенаправить сообщения в службы приложений.Имейте в виду, что вы потеряете возможность генерировать из службы прокси, содержащий список доступных операций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...