5

通常,MVC 框架的结构类似于:

/models
/views
/controllers
/utils

但是,在 Web 应用程序套件中,我认为将所有模型、视图和控制器聚集在一起可能不是为了清晰起见最好的方法,除非我将系统视为一个应用程序而不是应用程序套件。但是,有些东西将每个“应用程序”联系在一起,例如用户和用户角色的概念。

所以我有三种可能的解决方案:

(1) 做我不想做的事,将每个模型、视图和控制器放在一起,不管它属于哪个应用程序。这将套件视为单个应用程序,因为它们由包括用户在内的多个公共线程捆绑在一起。

(2) 按应用对代码进行分组。

/app1
    /models
    /views
    /controllers
    /utils
/app2
    /models
    /views
    /controllers
    /utils

(3) 按类型对代码进行分组,让实用程序代码在所有应用程序之间共享。

/models
    /app1
    /app2
/views
    /app1
    /app2
/controllers
    /app1
    /app2
/utils

有没有我错过的选项?对于未来的开发人员来说,最合乎逻辑的方案是什么?我个人更喜欢 2 和 3,但也许大多数人会期望 1。

4

4 回答 4

6

2是一个好的开始。您应该考虑拥有一个通用文件夹,您可以在其中存储应用程序套件中所有应用程序使用的任何通用模型、视图和实用程序。

/app1
   /models
   /views
   /controllers
   /utils
/app2
   /models
   /views
   /controllers
   /utils
/common
   /models
   /views
   /utils
于 2008-10-07T13:28:06.743 回答
5

假设您想要对应用程序进行一些分离,那么 2) 似乎是您的最佳选择。您还可以在“/app#”级别有一个“/common”文件夹,用于跨所有应用程序共享资源……例如共享实用程序类或其他。

于 2008-10-07T13:26:42.800 回答
1

如果您的应用程序共享数据,那么(对我而言)将模型分组在一起可能是有意义的。

然而,对于视图和控制器来说,将它们分开可能更有意义,因为我假设它们具有独立的业务逻辑和表示。

此外,如果您的应用程序单独保存在版本控制中(您正在使用版本控制,对吗?:),这使得第一个或第三个选项难以实现。

所以考虑到所有事情,我可能会在顶层分离应用程序,就像你的第二个例子一样。

于 2008-10-07T13:22:36.600 回答
1

我通常按​​功能对代码进行分组,因此在您的情况下按应用程序分组对我来说最有意义。原因是,如果我想处理特定功能,我不应该在三个单独的文件夹中搜索我需要的组件。如果您按高级功能分组,您就会知道您需要的一切都在一起。

于 2008-10-07T13:24:52.850 回答