关于将Web服务(asmx)转换为WCF的问题

问题描述:

我有一些与将Web服务(.asmx)转换为WCF相关的基本问题。我们有一个使用大量Web服务的正在运行的网站。这些Web服务使用具有业务逻辑的通用DLL。我们计划将Web服务转换为WCF。由于有许多Web服务,我们计划一次转换一个。因此,首先会有一个WCF和许多Web服务(asmx)驻留在生产服务器上。我对如何使网站同时运行WCF和ASMX存在一些困惑。我将不胜感激,如果有人能回答我的疑问:关于将Web服务(asmx)转换为WCF的问题

  1. 我可以共享双方的.asmx Web服务和WCF服务的同一web.config文件?如果是的话,那么我需要做哪些改变才能确保两者同时工作。添加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文件?

我知道,我有这么多的问题,这些可能看起来很简单,但我很难找出它们。

+0

@user:我们实际上比较喜欢每个问题的一个问题。 – 2011-02-01 17:27:04

+1

@用户:另外,顺便说一句,你区分WCF和“Web服务”。 WCF是Web服务,还有更多,并取代ASMX。 – 2011-02-01 17:27:53

1)我可以共享同一个web.config文件的.asmx web服务和 WCF服务吗?

是的,绝对 - WCF的配置家住<system.serviceModel>部分(大部分),所以这是没有问题的。

2)我可以使用web.config存储一些配置参数 可以在两个服务之间共享 - WCF和.asmx吗?

如果您创建自己的自定义配置节或节组 - 是的,当然。无论是ASMX Web服务以及您的WCF的代码可以读取自定义配置节 - 这是所有标准的.NET的东西,真正的(参见:How to: Create Custom Configuration Sections Using ConfigurationSection

3)目前,常见的DLL(经营层)是使用 HTTPContext.Current来缓存一些值。

你可以打开你的WCF服务的ASP.NET器兼容性模式,这样做,你一)配合自己永远IIS,和b)获得所有像通常的HTTP上下文和东西。请参阅:WCF Services and ASP.NET了解更多信息。

4)最后,如何在生产服务器上部署我的WCF更改? 只需要复制服务DLL和.svc文件?

复制服务DLL(s),SVC文件,使配置更改 - 就是这样!