Вопросы WCF - Разоблачение - PullRequest
1 голос
/ 16 июня 2011

Нам нужны следующие виды услуг:

  1. Публично доступно. Пользователь аутентифицирован с сертификатом X509,
  2. Внутренний. Используется нашим веб-сайтом. Пользователь проходит аутентификацию на веб-сайте, и имя пользователя передается службе.
  3. Публично доступно. Пользователь аутентифицируется на основе переданного токена, сопоставленного с его IP-адресом (устаревшая функциональность, которую мы должны поддерживать).

Прямо сейчас я реализовал # 1, создав SVC-файлы в проекте службы WCF. Они настроены в файле конфигурации. Я ничего не указываю в разделе, и кажется, что файлы SVC используют привязки по умолчанию (те, которые не имеют атрибута name). Это звучит правильно?

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

Мы хотим автоматически генерировать наши сервисы (файлы svc) с использованием шаблонов T4. Это работало до сих пор, но если я продолжу, мне нужно сгенерировать файл web.config (что усложняет его обслуживание). Есть ли способ разделить раздел модели system.service файла конфигурации?

Спасибо.

1 Ответ

0 голосов
/ 16 июня 2011

Файлы web.config (и app.config) можно разбить на отдельные файлы, как показано ниже. Вы можете инкапсулировать весь элемент system.serviceModel, если вы этого хотите.

<system.serviceModel>
    <services configSource="services.config" />

    <behaviors configSource="behavior.config" />

    <bindings>
        <wsHttpBinding>
            <binding name="Http" receiveTimeout="00:10:00">
                <security mode="None">
                    <transport clientCredentialType="None" />
                    <message clientCredentialType="None" establishSecurityContext="false" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>

    <!-- rest of WCF elements inline as in the bindings element or in other files -->
</system.serviceModel>

Вам просто нужно создать каждый из указанных файлов. Это отличный способ поместить конкретные параметры среды (т. Е. Dev, QA, Staging, Prod) в отдельные файлы, чтобы вы могли параметризовать сценарий развертывания.

...