我正在使用ASP.NET MVC开发一个视频网站.
我想在我的应用程序中使用的一项功能是转换视频.但由于转码过程可能非常耗时,我想向客户端用户展示该过程的进度.
因此,我的架构是使用一个控制器操作来处理整个转码过程并将其进度写入存储在服务器上的文件中.同时我使用Ajax调用另一个控制器操作来读取指定的文件,检索进度信息并将其发送回客户端,以便在转码过程中每2秒显示一次.
为了实现我的计划,我编写了以下代码:
服务器端:
public class VideoController : Controller
{
//Other action methods
....
//Action method for transcoding a video given by its id
[HttpPost]
public async Task<ActionResult> Transcode(int vid=0)
{
VideoModel VideoModel = new VideoModel();
Video video = VideoModel.GetVideo(vid);
string src = Server.MapPath("~/videos/")+video.Path;
string trg = Server.MapPath("~/videos/") + +video.Id+".mp4";
//The file that stores the progress information
string logPath = Server.MapPath("~/videos/") + "transcode.txt";
string pathHeader=Server.MapPath("../");
if (await VideoModel.ConvertVideo(src.Trim(), trg.Trim(), logPath))
{
return Json(new { result = "" }); …Run Code Online (Sandbox Code Playgroud) 在当前系统中,一些功能/用例可能需要多个阶段才能完成整个过程.示例类似于用户注册,其可包含两个阶段:在数据库上插入用户记录和电子邮件激活.或者对于网上银行的汇款,它需要在实际交易发生之前填写转账信息和短信验证的阶段.我想知道如何绘制这种功能/用例的序列图.
更具体地说,我已经使用MVC模式绘制了用户注册示例的序列图,该模式显示在底部.在该图中,两个阶段被红线分开.此外,我跳过处理故障或异常的逻辑,例如数据库中已存在的无效输入或用户名,以使其更简单.看来这个图中涉及的对象太多了,我应该用这种方式绘制序列图吗?或者每个阶段使用2个序列图更好?