我对单独使用应用服务和将应用服务与 Web 作业结合使用之间的差异感到困惑。
我有一个计算密集型任务(2-20 分钟),必须手动触发(用户不时要求它)。现在一切都发生在一个应用程序服务中。我正在考虑将这个繁重的过程提取到另一个应用程序服务中的网络作业中。这个新的应用程序服务将为空(不提供 api),但托管此 Web 作业,我将从第一个应用程序服务触发该作业。
我很担心第二个应用程序服务将为空。 我可以使用第二个应用程序服务来完成工作而不使用 webjobs(仅 WebApi 项目)吗?或者我应该坚持网络工作?这两种方法有何优缺点?
最佳答案
在我看来,我们不应该比较 Web api 和 Web 作业。因为这两个东西用于不同的环境。
网络作业功能:
Web 作业可以配置为手动触发或在 时间表。
Web 作业可以配置为持续运行(也称为始终持续运行)
- 可以将 Web 作业设置为根据其他 Azure 服务中的事件触发,例如添加到存储队列、服务总线队列或主题的新消息
- Web 作业可以长时间运行
- Web 作业可以短期运行
- 网络作业可以用任何语言作为命令行可执行文件或脚本来实现
可以实现 Azure Web 作业来满足任何后台处理需求。
因此,如果您想使用后台处理并且不想将响应返回到任何其他应用程序。我建议你可以选择webjobs。
Web api 很容易构建 HTTP 服务供客户获取响应。
所以这是用来与他人互动的。所以如果你想得到结果并在任何其他地方使用。您可以选择 Web api。
Web API 功能:
- 属性路由
- CORS - 跨源资源共享
- OWIN(.NET 开放式 Web 界面)自托管
- Web API OData ...
总而言之,如果计算不会与其他人交互(将结果返回给客户),我建议您可以选择Web作业。
关于Azure 应用服务 VS WebJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46213167/