开源asp.net mvc项目的项目结构建议

时间:2009-09-01 18:35:56

标签: asp.net-mvc content-management-system

您如何看待基于asp.net mvc应用程序构建的开源CMS应用程序的项目结构?该项目的昵称是“Gol”。

以下帖子概述了基本要求。

Ideas for OpenSource CMS in ASP.NET MVC

目前我正在考虑像这样放下......

  • Gol.Core.Session(包含真实和虚假的会话管理器)
  • Gol.Core.Caching(包含缓存,包括velocity,enterprise lib。provider)
  • Gol.Core.Logging(包含日志记录组件和提供程序)
  • Gol.Core.Instrumentation(包含与仪器相关的项目)
  • Gol.Core.UI(UI助手,以及与UI相关的其他内容)
  • Gol.Core.Security(安全,身份验证相关的事情)
  • Gol.Core.Utilities(常用效用函数,如加密,辅助方法等)。
  • Gol.Core.Metadata(元数据管理器)。
  • Gol.Web.Controllers(所有控制器都在这里)。

  • Gol.Cms.Contracts(包含服务合同)

  • Gol.Cms.Model(包含服务模型)
  • Gol.Cms.Services(包含服务实现)。

  • Gol.Web(包含视图的网络项目)

  • Gol.Test(或Gol.Specification)
你怎么看?结构是否过载/膨胀?

根据您的经验欢迎您的想法/建议(没有特别关注asp.net mvc)。

这可能对其他可能对设计初始项目结构感兴趣的人有所帮助。

3 个答案:

答案 0 :(得分:3)

从1个项目开始,构建一些功能性的东西。仅添加新项目作为增长需求。我已经开始这样的新项目,计划一个宏伟的VS解决方案,其中包含令人印象深刻的单独项目,但最终却浪费时间。您最终会尝试将您的设计融入项目结构中,这是愚蠢的 - 项目结构可以帮助您。确定如何组织代码的唯一方法是使用代码进行组织。在构建时逐渐增加它比在前面尝试更容易。

答案 1 :(得分:1)

我通常使用以下项目构建我的MVC项目:

 web
    web.Controller
    model
    Business Logic
    Data Access
    Services
    Any Libraries for sessions, caching etc.

你有一个结构合理的项目,尽管我认为你可以采取一些措施来改进它。

为您拥有的每个图层创建一个测试项目,以便您可以隔离测试。如果更改表示层,则可以转储与其关联的任何测试,并轻松移动业务逻辑。我还要为每个图层创建另一个集成测试项目。这样您就可以将它们排除在外,以便更快地进行持续集成编译。

我也没有Goi.Core.UI中的UI代码。您的UI代码可能是用于演示文稿的错误,应该存在于Goi.web

祝你的项目好运

答案 2 :(得分:1)

对于更大的应用程序,我强烈建议使用MVC V2的区域。模块化您的工作有助于长期可维护性。您可以在此处找到相关信息:http://msdn.microsoft.com/en-us/library/ee307987(VS.100).aspx

从那里我将创建一个Gol.Areas与你们所有的区域项目(它们将包含你的控制器和每个区域的视图)。

如果您处理任何网络服务,我也会使用Gol.Communication图层。

我在“企业发展”层面给你这个建议。

对于测试,您可能会在尝试将测试与逻辑层分开时创建大量工作。只是一个想法。