web服务方法重载非.net Web服务可能存在的问题

时间:2013-09-05 22:34:09

标签: wcf overloading

我正在设计一个具有重载方法的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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

由于OperationContract对每个操作都有不同的名称(这是重要的名称),因此不会出现问题。 WSDL消费者将不知道您使用重载来实现。您也可以打开WSDL,看看这是两个不同的操作。