【问题标题】:How to handle 30 request using single wcf operation?如何使用单个 wcf 操作处理 30 个请求?
【发布时间】:2013-10-07 10:44:01
【问题描述】:

我在设计解决方案时有点卡住了,因此需要您的专业知识和建议。

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

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

我不知道如何在单个操作中解决这个问题。我不想创建 30 个操作来单独处理请求。

【问题讨论】:

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

标签: c# .net wcf design-patterns


【解决方案1】:

如果您的请求类型都派生自同一类型,您可以使用 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)

【讨论】:

    【解决方案2】:

    棘手的棘手

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

    【讨论】:

    • OP 说请求都不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多