C# 如何使用单个wcf操作处理30个请求?

C# 如何使用单个wcf操作处理30个请求?,c#,.net,wcf,design-patterns,C#,.net,Wcf,Design Patterns,在设计我的解决方案时,我被困在了某个地方,因此需要您的专业知识和建议 问题是:我有30种类型的请求,每种请求都有不同的参数,因此我将这30种请求视为30种不同的请求输入,但所有请求类型的响应都是相同的 现在我需要在我现有的wcf服务中创建一个操作,它可以满足所有30种类型的请求 我不知道如何在单一操作中满足这一要求。我不想创建30个操作来单独处理请求。 public void MyOperation(List<InputType> inputs) {

在设计我的解决方案时,我被困在了某个地方,因此需要您的专业知识和建议

问题是:我有30种类型的请求,每种请求都有不同的参数,因此我将这30种请求视为30种不同的请求输入,但所有请求类型的响应都是相同的

现在我需要在我现有的wcf服务中创建一个操作,它可以满足所有30种类型的请求

我不知道如何在单一操作中满足这一要求。我不想创建30个操作来单独处理请求。

public void MyOperation(List<InputType> inputs)
        { 
            // your stuffs here. 

        }
public void MyOperation(列出输入)
{ 
//你的东西在这里。
}
棘手

public void MyOperation(List<InputType> inputs)
        { 
            // your stuffs here. 

        }
public void MyOperation(列出输入)
{ 
//你的东西在这里。
}

如果您的请求类型都来自同一类型,则可以使用ServiceKnownTypes属性以多态方式公开它们:

[DataContract]
[KnownType(typeof(RequestFromThisGuy))]
[KnownType(typeof(RequestFromThisOtherGuy))]
public class UberRequest
{
    ...
}

[DataContract]
public class RequestFromThisGuy: UberRequest
{
    ...
}

[DataContract]
public class RequestFromThisOtherGuy: UberRequest
{
    ...
} 
然后您的服务操作:

[OperationContract]
CommonResponseType DoSomething (UberRequest request)

如果您的请求类型都派生自同一类型,则可以使用ServiceKnownTypes属性以多态方式公开它们:

[DataContract]
[KnownType(typeof(RequestFromThisGuy))]
[KnownType(typeof(RequestFromThisOtherGuy))]
public class UberRequest
{
    ...
}

[DataContract]
public class RequestFromThisGuy: UberRequest
{
    ...
}

[DataContract]
public class RequestFromThisOtherGuy: UberRequest
{
    ...
} 
然后您的服务操作:

[OperationContract]
CommonResponseType DoSomething (UberRequest request)

您是否看到这30种请求类型都有可能具有公共基类,或者它们可以实现一个公共接口,或者它们都具有不同的结构,并且在行为列表上也有所不同?方法重载或泛型有什么坏处?如果我理解正确的话……)这是要修改的现有操作还是要创建新操作。如果您正在创建一个新操作,您可以将枚举作为一个参数传递,该参数将标识请求类型,并相应地在您的操作中进行处理。您是否看到这30个请求类型都有可能具有公共基类,或者它们可以实现一个公共接口,或者它们都具有不同的结构,并且在请求列表上也不同行为?方法重载或泛型有什么坏处?如果我理解正确的话……)这是要修改的现有操作还是要创建新操作。如果您正在创建一个新操作,您可以将枚举作为参数传递,该参数将标识请求类型,因此可以在您的操作中进行处理。OP表示请求都不同。OP表示请求都不同。