Поделиться через


Корреляция запросов сообщений LINQ

В примере LinqMessageQueryCorrelation показано, как выполнять корреляцию на основе контента, используя пользовательскую MessageQuery реализацию, а не системнуюXPathMessageQuery.

Что демонстрирует

Пользовательская корреляция MessageQuery на основе содержимого.

Обсуждение

Этот образец показывает, как выполняется расширение базового класса MessageQuery с целью корреляции. Пользовательская реализация LinqMessageQuery позволяет пользователям выдавать XName для поиска внутри сообщения с использованием XLinq. Данные, полученные в результате выполнения запроса, используются для формирования ключа корреляции с целью перенаправления сообщений в соответствующий экземпляр рабочего процесса.

Настройка, сборка и выполнение образца

  1. В этом образце доступ к службе рабочего процесса предоставляется через конечные точки HTTP. Чтобы запустить этот пример, необходимо добавить правильные списки управления URL-адресами (см. инструкции по настройке HTTP и HTTPS), выполнив Visual Studio как Администратор istrator или выполнив следующую команду в командной строке с повышенными привилегиями, чтобы добавить соответствующие списки управления доступом. Убедитесь, что подставлены нужный домен и имя пользователя.

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. После добавления списков управления доступом по URL-адресу выполните следующие действия.

    1. Постройте решение.

    2. Задайте несколько проектов запуска, щелкнув решение правой кнопкой мыши и выбрав "Задать запускаемые проекты". Добавьте службу и клиент (в этом порядке) в качестве нескольких проектов запуска.

    3. Запустите приложение. На консоль клиентского приложения выводится рабочий процесс, вначале отправляющий заказ, затем получающий идентификатор заказа на покупку и, наконец, подтверждающий заказ. В окне службы будут выведены сведения об обрабатываемых запросах.