Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 模型视图控制器-哪个组件传统上处理文件I/O?_Model View Controller_Design Patterns_File Io - Fatal编程技术网

Model view controller 模型视图控制器-哪个组件传统上处理文件I/O?

Model view controller 模型视图控制器-哪个组件传统上处理文件I/O?,model-view-controller,design-patterns,file-io,Model View Controller,Design Patterns,File Io,在传统的MVC应用程序中,哪个组件(模型、视图或控制器)负责将模型读写到磁盘?MVC只是更大体系结构的一部分 诸如持久性之类的基础设施问题通常由MVC triad之外的一些类/对象来处理。MVC中不必有任何磁盘io。如果有,它可能属于模型内部或附近,如果这是持久化的内容。MVC通常是一个表示层框架,在基于表示的应用程序中位于顶部。在实际的企业应用程序中,它下面可能有几个层 通常,这是在另一个层中完成的:您可以将其命名为业务层或服务层,就像其他人发布的一样,您通常会在MVC应用程序下面有一个域/业

在传统的MVC应用程序中,哪个组件(模型、视图或控制器)负责将模型读写到磁盘?

MVC只是更大体系结构的一部分


诸如持久性之类的基础设施问题通常由MVC triad之外的一些类/对象来处理。

MVC中不必有任何磁盘io。如果有,它可能属于模型内部或附近,如果这是持久化的内容。

MVC
通常是一个表示层框架,在基于表示的应用程序中位于顶部。在实际的企业应用程序中,它下面可能有几个层


通常,这是在另一个层中完成的:您可以将其命名为
业务层
服务层

,就像其他人发布的一样,您通常会在MVC应用程序下面有一个域/业务层/数据层。如果您正在寻找一些关于如何使用实体框架实现这样一个堆栈的好例子,请查看NerdDinner和MVC音乐商店示例


围绕“层”和架构模式存在一些复杂性和大量混乱。如果您正在寻找最简单的答案,并且为了简单起见,您已经决定代码的每个部分将位于(模型、视图或控制器)中的一个且仅位于其中一个,那么我给您的答案是为您的数据库访问选择模型。现实情况是,所有的架构模式都是不完美的,您只需看看体验后的感觉如何。

简短回答:模型层

大多数形式的存储都是模型层的一部分(模板和类的自动加载除外)。在完全实现的模式层中,您将拥有一组与低级存储(SQL、缓存、REST API、noSQL、文件系统等)抽象直接交互的对象

如果您的应用程序正在主动地读写文件系统(它实际上可能是装载的远程内存,您可以通过SSH隧道通过Fuse装载它..这无关紧要),这将由处理存储逻辑的结构来处理。通常是某种形式的(也可能是,和/或类似的结构)


存储抽象通常负责从数据库中存储数据并将数据检索到数据库中。在大型应用程序中,域对象和存储逻辑结构之间的这种交互包含在其中,以隔离应用程序和域业务逻辑在表示层中的泄漏。

您能详细说明一下吗?使用MVC模式并保存/加载模型(即,某种简单的文档、图像等,处理器应用程序)的示例性体系结构是什么样的?与MVC逻辑相比,保存文件的逻辑会走到哪里?@weberc2-没有“示范性”架构。每个应用程序都有不同的体系结构需求。但是有一种方法可以将模型实体序列化/反序列化到磁盘,这就是一种选择。那么,模型序列化逻辑和文件I/O逻辑之间是否没有典型的关系呢?如果存在典型的关系,什么样的实体可以处理文件I/O,以及它与模型的关系是什么?