我有一些与Web服务(.asmx)转换为WCF相关的基本问题。我们有一个运行网站,使用大量的Web服务。这些Web服务使用具有业务逻辑的通用DLL。我们计划将Web服务转换为WCF。由于有许多Web服务,我们计划一次转换一个。首先,将有一个WCF和许多Web服务(asmx)驻留在生产服务器上。我对如何使网站运行有一些困惑--WCF和ASMX都驻留在一个地方。如果有人能回答我的疑问,我将不胜感激:
我可以为.asmx网络服务和WCF服务共享相同的web.config文件吗?如果是,那么我需要做些什么来确保两者同时工作。添加ServiceModel标记对于现有的web.config是否足够?
我可以使用web.config存储一些可以在两个服务之间共享的配置参数--WCF和.asmx吗?怎么称呼它?
目前,常见的dll(业务层)正在使用HTTPContext.Current来缓存一些值。如何确保代码适用于WCF和.asmx调用?转换代码的最佳方法是:
xslt = (XslCompiledTransform)HttpContext.Current.Cache[fileName];
string XslFilePath = HttpContext.Current.Server.MapPath(@"~/xsl/" + fileName);
什么是WCF等价物?
最后,如何在生产服务器中部署WCF更改?我只需要复制服务dll和.svc文件吗?
我知道,我有很多问题,这些对你们来说可能看起来很简单,但我很难弄明白。
答案 0 :(得分:2)
1)我可以为.asmx web服务和.as共享同一个web.config文件 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兼容性模式,并且这样做,a)永久地将自己绑定到IIS,并且b)可以访问所有常见的HTTP上下文和类似的东西。有关详细信息,请参阅:WCF Services and ASP.NET。
4)最后,如何在生产服务器中部署我的WCF更改?我 只需要复制服务dll和.svc文件?
复制服务DLL,SVC文件,进行配置更改 - 就是这样!