我面临着设置一个允许用户进行以下操作的系统:
我应该如何跟踪在步骤1中发生的正在进行的过程,以及如何根据步骤2和4的要求将正确的事件/消息传回UI;
用户界面如何了解正在进行的流程?文件系统上的魔术文件夹和令牌?会话状态?由进程写入并由前端代码读取的数据库?
我想知道这是否经常遇到并且有“标准方式”实施?
仅供参考,我的筹码是:
答案 0 :(得分:2)
在客户端(在您的情况下是MVC控制器)创建一个具有标识的显式Command对象(很可能是GUID)。然后通过生成新线程或通过ServiceBus向后端进程发送单向消息,并将命令ID返回到View。
当您的后端进程正常工作时,View可以使用JavaScript进行轮询以查找是否存在URI。 例如http://www.mysite.com/asyncresults/GUID.js
然后,您的后端进程可以使用JSON对象在文件系统上创建GUID.js,这些对象为您提供足够的信息来呈现进度更新。
当客户端轮询文件时,它将收到404,直到该文件存在。当您收到200时,您可以使用包含的JSON来呈现您的UI。
此解决方案可扩展且易于实施。