【问题标题】:Ideas on patterns for a data file based WCF REST web service关于基于数据文件的 WCF REST Web 服务模式的想法
【发布时间】:2011-03-15 15:49:06
【问题描述】:

我们有一个现有的专有数据处理应用程序,在我们的一台服务器上运行,我们希望将其公开为 Web 服务,供我们的客户远程提交作业。本质上,系统采用一组配置参数和一个或多个数据文件(文件的数量取决于特定的配置模板,但正常的配置是2个文件)。然后,应用程序获取输入文件,对其进行处理,并输出单个结果数据文件(所有文件都是分隔文本/CSV 或制表符)。

我们现在想将此流程公开为服务。根据我们当前的设置和现有平台,我们相当有信心使用 WCF 4.0 作为框架,并可能使用 REST 作为服务格式,尽管在某些时候可能需要 SOAP 实现。

虽然我在 SOA、WCF 和 REST 方面做了很多阅读,但我对如何建模此服务的其他想法很感兴趣。特别是作业与输入所需文件的一对多关系。使用标准 CRUD 命令在 REST 中对“作业”建模似乎很简单。但是,预定义的“作业类型”参数定义了必须包含的文件数。作业类型“A”可能需要两个输入文件,而“B”需要 3 个才能运行作业。

鉴于此,对工作进行建模的最佳方法是什么?我是否在作业的初始创建中包含多个文件?我是否创建一个作业,然后有一个“addFile”方法,然后我可以上传必要数量的文件?

这些作业将不得不异步运行,因为它们可能需要时间。完成后,最好只在作业对象中有一个状态字段,并要求客户端定期向系统查询作业状态,或者让客户端在作业完成时提供一个 URL 来“ping”?

我们仅处于服务的规划阶段,因此我们将不胜感激。

【问题讨论】:

    标签: asp.net wcf web-services rest


    【解决方案1】:

    要为 REST 建模,请考虑资源。文件是作业资源的一部分还是单独的资源。

    如果它们是单独的资源,那么我将有一种方法可以单独上传它们。他们如何链接取决于您 - 因此您可以在上传文件时将文件与作业相关联,或者您是否可以在现有文件和作业之间创建链接(现在也将链接视为单独的资源)。

    如果您的文件不被视为单独的资源,那么我会将它们与作业内联,作为单个创建。

    【讨论】:

    • 罗伯特,这些文件是这项工作的关键组成部分。没有它们,这项工作就无法运行,它们本身毫无意义,所以你的观点很好。然而,然后我们进入实施的具体细节。我不认为 WCF 可以在一个请求中上传多个文件。如果我有一个“/job”端点并且我发布了一个新工作,我如何处理一次提交多个文件和元数据?这是否超出了 WCF REST 可以处理的范围?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多