Model view controller 在MVC中,后台任务的代码属于哪里?
我使用的是ASP.NET,但我确信这适用于任何(或大多数)MVC框架 创建新的web项目时,您将获得代码的基本文件夹/语义结构:Model view controller 在MVC中,后台任务的代码属于哪里?,model-view-controller,asp.net-mvc-2,semantics,project-organization,Model View Controller,Asp.net Mvc 2,Semantics,Project Organization,我使用的是ASP.NET,但我确信这适用于任何(或大多数)MVC框架 创建新的web项目时,您将获得代码的基本文件夹/语义结构: 控制器(来自浏览器的服务请求) 模型(存储和操作数据) 视图(HTML页面) 内容(静态内容) 脚本(JavaScript) 应用程序数据(数据库文件) 这很好,但是如果我想让代码与浏览器请求分开运行——例如,可能一个请求运行一些代码,但在另一个线程中,并在请求完成后继续执行。或者如果代码只是周期性地独立于请求运行,该怎么办 在我的例子中,代码可以处理数据——生成
- 控制器(来自浏览器的服务请求)
- 模型(存储和操作数据)
- 视图(HTML页面)
- 内容(静态内容)
- 脚本(JavaScript)
- 应用程序数据(数据库文件)
在我的例子中,代码可以处理数据——生成数据,清理数据,等等——这让我觉得它应该放在模型中。但它不是真正的“模型”数据,它只是在后台工作。这类东西有语义位置吗?您可以在这里使用队列,如MSMQ、RabbitMQ等。每个需要卸载的请求都可以排队,外部服务将从队列中弹出项目并开始逐个处理。服务本身可以是普通的windows服务,尽管您可能在这里使用WCF。您甚至可以将工作流集成到其中以实现更复杂的处理场景。我通常为这些类型的项目创建一个名为“services.servicename”的单独命名空间 编辑: 您可能会在这里看到两个部分。要使类似的功能发挥作用,您需要一个服务来接收应用程序的请求并将它们添加到队列中。还有另一个服务来实际处理队列。您可能会在解决方案中看到三个不同的项目来实现这一点。现在,我以前已经使用WCF完成了这项工作,因此我的建议是ns基于WCF技术。以下是您的项目结构的外观
您的应用程序-->QueueRequestContract(IMyService)-->QueueRequest服务(实现IMyService).您可以在此处使用队列,如MSMQ、RabbitMQ等。每个需要卸载的请求都可以排队,外部服务将从队列中弹出项目并开始逐个处理。该服务本身可以是一个普通的windows服务,尽管您可能在此处使用WCF。您甚至可以集成工作流int我通常为这些类型的项目创建一个称为“services.servicename”的单独名称空间 编辑: 您可能会在这里看到两个部分。要使类似的功能发挥作用,您需要一个服务来接收应用程序的请求并将它们添加到队列中。还有另一个服务来实际处理队列。您可能会在解决方案中看到三个不同的项目来实现这一点。现在,我以前已经使用WCF完成了这项工作,因此我的建议是ns基于WCF技术。以下是您的项目结构的外观
您的应用程序-->QueueRequestContract(IMyService)-->QueueRequest服务(实现IMyService)。在一个单独的进程中,通过MQ连接。@Ignacio也单独创建了一个项目?另外--请原谅,我今天刚开始学习C#和ASP.NET…MQ是什么?我对“项目”一无所知;我在.NET中什么都不做。在一个单独的进程中,通过MQ连接。@Ignacio也单独做一个项目吗?另外--请原谅,我今天才开始学习C#和ASP.NET…MQ是什么?我对“项目”一点都不了解;我什么都不做.NET。很酷,谢谢。这类事情在项目结构中会出现在哪里?很酷,谢谢。这类事情在项目结构中会出现在哪里?