我正在设计一个具有重载方法的Web服务,有人说我们应该尽量不重载Web服务中的方法,因为可能会出现生成wsdl或非.net服务尝试使用这些方法的问题。
我通过创建一个带有两个add方法的简单服务来测试生成wsdl的场景,其中一个采用整数和其他double并且没有问题。
所以想检查一下 1.如果我错过了我忽略的wsdl中的某些内容。 2.非.net webservice cosuming服务是否有任何已知问题与功能过载。 3.如果可以,建议不要使用重载函数吗?
以下是我的测试服务的样子 - 服务库
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
namespace EvalServiceLibrary
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class EvalService: IEvalService
{
public int AddEval(int a, int b, int c)
{
return a + b + c;
}
public double AddEval(double a, double b, double c)
{
return a + b + c;
}
}
}
- inerface代码是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace EvalServiceLibrary
{
[ServiceContract]
public interface IEvalService
{
[OperationContract(Name = "Addint")]
int AddEval(int a, int b, int c);
[OperationContract(Name = "Addfloat")]
double AddEval(double a, double b, double c);
}
}
- 服务代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
namespace EvalServiceLibrary
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class EvalService: IEvalService
{
public int AddEval(int a, int b, int c)
{
return a + b + c;
}
public double AddEval(double a, double b, double c)
{
return a + b + c;
}
}
}
答案 0 :(得分:1)
由于OperationContract对每个操作都有不同的名称(这是重要的名称),因此不会出现问题。 WSDL消费者将不知道您使用重载来实现。您也可以打开WSDL,看看这是两个不同的操作。