【问题标题】:REST Batch\Bulk API implemetation in WCF similiar to Facebook APIWCF 中的 REST Batch\Bulk API 实现类似于 Facebook API
【发布时间】:2015-08-12 15:26:16
【问题描述】:

我正在实现新的 REST API 方法,该方法允许以批量\批量方式调用其他 REST API 方法。类似于 Facebook 的https://developers.facebook.com/docs/graph-api/making-multiple-requests

请求示例:

POST /batch
[
  {"method":"GET", "relative_url":"/user/anton"},
  {"method":"GET", "relative_url":"/user/vitaliy"}
  {"method":"POST", "relative_url":"/user/dan", "body":{name:Dan}}
]

响应示例:

status 200
[
  {"status":"200", "body":{name:"Dan"}},
  {"status":"404"},
  {"status":"201"}
]

简而言之,批处理方法应该在服务器端一个接一个地调用其他方法并将结果作为结果数组返回。

最简单的解决方案是在服务器端创建 .Net HttpClient 并逐个调用其他 WCF 方法。

问题是:如何在不通过 HttpClient 从外部调用 WCF 方法的情况下使用 WCF 基础设施来实现这一点?

原因 - 我不想进行网络往返旅行。 最完美的解决方案是使用 .Net Reflection,但这在 REST 抽象方面不是很好的解决方案

最接近的解决方案是创建包含 HttpRequestMessageProperty (URL, Headers, Method, Content-Type) 的 WCF 消息并将其发送到 WCF 基础架构处理(只是它是通过 HTTP 协议发送的)(对此不确定):

Message responseMessage = wcfInsfrastucture.Process(createWcfMessage(url, method,contentType,body));

目前我迷失在 WCF 示例和 WCF 服务器端通道架构中。 在Sending custom WCF Message to a service 中提出了最类似的问题,但我无法使其与现有配置的服务器端行为一起使用。

类似问题:

【问题讨论】:

    标签: c# wcf rest bulk


    【解决方案1】:

    如何在不通过 HttpClient 从外部调用 WCF 方法的情况下使用 WCF 基础架构实现这一点?

    我发现的唯一方法是通过 WCF 实现 request-response pattern

    1. 在 WCF 服务中创建单个入口点,该入口点接收抽象请求作为参数并返回抽象响应。

    例如,

    <OperationContract> function Execute(Request as IRequest) as IResponse
    
    1. 为服务操作创建具体的请求和响应类

    2. 为批处理/批量操作创建 CompositeRequestCompositeResponse

    所有服务要做的就是根据请求类型应用业务逻辑。

    如果服务接收到CompositeRequest,它只会为所有嵌套请求一一调用相同的Execute 方法,并将响应聚合到CompositeResponse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2017-03-07
      • 1970-01-01
      • 2018-07-08
      • 2020-12-06
      • 2012-12-29
      相关资源
      最近更新 更多