Проблемы для преобразования веб-службы (asmx) в WCF - PullRequest
2 голосов
/ 01 февраля 2011

У меня есть несколько основных вопросов, связанных с преобразованием веб-службы (.asmx) в WCF. У нас есть работающий веб-сайт, который использует множество веб-сервисов. Эти веб-сервисы используют общую библиотеку DLL с бизнес-логикой. Мы планируем преобразовать веб-сервисы в WCF. Поскольку существует множество веб-сервисов, мы планируем конвертировать по одному. Итак, для начала будет один WCF и много веб-сервисов (asmx), находящихся на рабочем сервере. У меня есть некоторая путаница в том, как заставить веб-сайт работать как с WCF, так и с ASMX, расположенными в одном месте. Буду признателен, если кто-нибудь ответит на мои вопросы:

  1. Могу ли я использовать один и тот же файл web.config для веб-службы .asmx и службы WCF? Если да, то что мне нужно сделать для того, чтобы оба работали одновременно. Добавление тега ServiceModel достаточно для существующего web.config?

  2. Могу ли я использовать web.config для хранения некоторых параметров конфигурации, которые могут использоваться двумя службами - WCF и .asmx? Как это назвать?

  3. В настоящее время обычная dll (бизнес-уровень) использует HTTPContext.Current для кэширования некоторых значений. Как я могу убедиться, что код работает для вызовов WCF и .asmx? Как лучше конвертировать код, похожий на:

    xslt = (XslCompiledTransform)HttpContext.Current.Cache[fileName];
    string XslFilePath = HttpContext.Current.Server.MapPath(@"~/xsl/" + fileName);
    

    Что такое эквивалент WCF?

  4. Наконец, как я могу развернуть мои изменения WCF на рабочем сервере? Мне просто нужно скопировать служебную DLL и файл .svc?

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

1 Ответ

2 голосов
/ 01 февраля 2011

1) Можно ли использовать один и тот же файл web.config для веб-службы .asmx и службы WCF?

Да, безусловно - конфиг WCF находится в разделе <system.serviceModel> (в основном), так что это вообще не проблема.

2) Могу ли я использоватьweb.config для хранения некоторых параметров конфигурации, которые могут использоваться двумя службами - WCF и .asmx?

Если вы создаете свой собственный раздел конфигурации или группу разделов - да, конечно.Как веб-служба ASMX, так и ваш код WCF могут читать этот пользовательский раздел конфигурации - это все стандартные элементы .NET, действительно (см .: Как: создать пользовательские разделы конфигурации с помощью ConfigurationSection )

3) В настоящее время обычная dll (бизнес-уровень) использует HTTPContext.Current для кэширования некоторых значений.

Вы можете включить режим совместимости ASP.NET для своих служб WCF, и, делая это, вы а) навсегда привязываетесь к IIS и б) получаете доступ ко всему обычному HTTP-контексту и тому подобномукак это.См. Службы WCF и ASP.NET для получения дополнительной информации.

4) Наконец, как я могу развернуть изменения WCF на рабочем сервере?Нужно ли мне просто скопировать служебную DLL и файл .svc?

Скопируйте служебные DLL-файлы, SVC-файл, внесите изменения в конфигурацию - и все!

...