项目解决方案结构

时间:2015-03-09 09:11:21

标签: c++ visual-studio projects-and-solutions

我正在计划一个我将用C ++开发的新项目。我需要一个好的解决方案结构,以便快速进行项目概述。我的项目是基于tcp的服务器。该服务器能够将文件和文本从客户端保存到数据库或文件系统中。服务器还可以将数据库中的文件和数据发送回客户端。我的结构应该如下:

Solution
- main.cpp
- DataAccess
--- Header
--- Source
- Business
--- Header
--- Source
- CrossCutting
--- Header
--- Source
- Server
--- Header
--- Source
--------------------------------
- External Dependencies
- Tests (Unit and Integration)
- Documentation

这是我的主意。这里有一个关于这个文件夹结构的简介:

DataAccess:这是逻辑和数据(数据库,io)之间的连接

业务:这是所有的逻辑。只有企业才能访问数据访问层

服务器:这是我的服务器层。客户请求将在那里处理。只有服务器层才能访问业务层。

CrossCutting:这一层有点像物质。以下是几个层次中需要的函数,类,实体等。

我认为其他文件夹应该清楚。如果没有,请告诉我们。 您对此解决方案结构有何看法?这是一个好的开始还是我需要返工?

1 个答案:

答案 0 :(得分:1)

  

您对此解决方案结构有何看法?这是一个好的开始还是我需要返工?

这是一个好的开始;它可以使用一些返工:)

如果您考虑单个项目,这很好。理想情况下,您应该将其拆分为多个项目(作为单独的lib / dll项目),并拥有一个包含main.cpp的主项目,并启动应用程序/服务器/服务。

分成多个项目的优点:

  • 每个项目的依赖项划分
  • 提高了代码的可测试性
  • 强制执行责任分离(超过单个项目)并且内部协议的形式化更好(至少在理论上 - 您必须注意正式化内部协议)。

我会考虑以下更改:

root //项目根,源代码控制根等

  • ExternalDependencies
  • 文档
  • 的Src
    • 解决方案文件[链接到以下四个项目和测试]
    • 测试
      • 在这里包含测试项目[每个在它自己的目录中]
      • -
    • 申请[dir]
      • 的main.cpp
      • 主项目文件(我认为是.vcxproj)
    • 数据访问
      • 标题和来源,不拆分成单独的目录(因为这是Visual Studio的默认设置,它将减少由visual studio中的默认设置引起的错误)
      • 项目文件
    • 业务[与DataAccess相同的结构] ...

我还会在解决方案文件附近定义一些公共属性页面,在那里我将指定公共构建和临时构建目录,然后在项目中继承这些属性页面;这将集中构建工件和二进制文件,并简化常见设置的编辑。

注意:我目前正在使用这种结构处理一个相对较大的项目(解决方案中约有180个项目)。