我们有一个现有的专有数据处理应用程序,可在我们的某个服务器上运行,我们希望将其作为Web服务公开,以便我们的客户远程提交作业。实质上,系统采用一组配置参数和一个或多个数据文件(文件数取决于特定的配置模板,但普通配置是2个文件)。然后,应用程序获取输入文件,处理它们,并输出单个结果数据文件(所有文件都是分隔的文本/ CSV或制表符)。
我们现在希望将此流程公开为服务。基于我们当前的设置和现有平台,我们非常有信心我们希望将WCF 4.0作为框架,并且可能使用服务格式的REST,尽管在某些时候可能需要SOAP实现。
虽然我正在阅读有关SOA,WCF和REST的大量内容,但我对如何建模此服务的其他想法感兴趣。特别是,作业与输入所需文件的一对多关系。使用标准CRUD命令在REST中建模“作业”似乎非常简单。但是,预定义的“作业类型”参数定义了必须包含的文件数。作业类型“A”可能需要两个输入文件,而“B”需要3才能运行作业。
鉴于此,对工作进行建模的最佳方式是什么?我是否在初始创建作业时包含多个文件?我是否创建了一个作业,然后使用“addFile”方法,然后我可以上传必要数量的文件?
然后,作业必须异步运行,因为它们需要时间。一旦完成,最好是在作业对象中只有一个状态字段,并要求客户端定期查询系统的作业状态,或者让客户端在作业完成时提供“ping”的URL?
我们只处于服务的规划阶段,因此任何见解都将受到赞赏。
答案 0 :(得分:1)
要为REST建模,请考虑资源。这些文件是作业资源的一部分还是它们是独立的资源。
如果它们是单独的资源,那么我会有一种方法单独上传它们。它们如何链接取决于您 - 因此您可以在上载文件时将文件与作业相关联,或者您是否有办法在现有文件和作业之间创建链接(现在也将链接视为单独的资源)。
如果您的文件不被视为单独的资源,那么我会将它们与作业内联,作为单个创建。