Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ASMX Web服务迁移到WCF时如何保持干燥_Wcf_Web Services_Dry - Fatal编程技术网

从ASMX Web服务迁移到WCF时如何保持干燥

从ASMX Web服务迁移到WCF时如何保持干燥,wcf,web-services,dry,Wcf,Web Services,Dry,使用.NETFramework3.5c#,我正在从基于SOAP的Web服务转向基于JSON的WCF服务。我的所有web服务都源自一个公共服务基类,该基类具有会话验证、客户端身份验证、数据库连接、日志记录等公共功能。在我的所有web服务方法中,我使用一行代码调用基类上的一个公共方法来执行公共任务 base.InitCallThread() Q1:为了避免编写数百行重复代码,在WCF中执行相同或类似操作的最佳方法是什么 问题2:如果我同时支持基于SOAP的Web服务和基于JSON的WCF服务的相同

使用.NETFramework3.5c#,我正在从基于SOAP的Web服务转向基于JSON的WCF服务。我的所有web服务都源自一个公共服务基类,该基类具有会话验证、客户端身份验证、数据库连接、日志记录等公共功能。在我的所有web服务方法中,我使用一行代码调用基类上的一个公共方法来执行公共任务

base.InitCallThread()
Q1:为了避免编写数百行重复代码,在WCF中执行相同或类似操作的最佳方法是什么


问题2:如果我同时支持基于SOAP的Web服务和基于JSON的WCF服务的相同接口,那么共享相同公共功能的最佳方式是什么?我想可以与这两个类共享http会话?

您应该将基类代码重构为一个单独的类。在ASMX服务中调用与基类不同的类;在WCF服务中,从每个单独的服务调用它,或者使用一个WCF扩展机制集中调用它


WCF允许在具有不同绑定的多个端点上公开相同的服务。您可以使用SOAP的
basicHttpBinding
公开相同的WCF服务,同时为JSON公开
webHttpBinding

您应该将基类代码重构为单独的类。在ASMX服务中调用与基类不同的类;在WCF服务中,从每个单独的服务调用它,或者使用一个WCF扩展机制集中调用它


WCF允许在具有不同绑定的多个端点上公开相同的服务。您可以使用SOAP的
basicHttpBinding
公开相同的WCF服务,同时为JSON公开一个
webHttpBinding

Q1:您可以从相同的ServiceBase类派生出与以前相同的通用功能。WCF在这件事上不限制您。它只需要实现一些接口


问题2:您可以通过web.config(或编程)配置定义多个绑定。

问题1:您可以像以前一样,从具有公共功能的同一ServiceBase类派生。WCF在这件事上不限制您。它只需要实现一些接口


问题2:您可以通过web.config(或编程)配置定义多个绑定。

很抱歉,我应该提到这一点,但我不能从同一个ServiceBase类派生,因为我的ServiceBase类派生自System.web.Services.WebService,除非我找到一个可以共享b/w WS和WCF的公共基类。如果您不想更改现有代码,则派生的替代方法是合成。很抱歉,我应该提到这一点,但我不能从与我的ServiceBase类派生自System.Web.Services.WebService相同的ServiceBase类派生,除非我找到一个可以共享b/w WS和WCF的公共基类。如果您不想更改现有代码,则派生的替代方法是合成。