项目解决方案结构

Project solution structure

我正在计划一个用 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:这一层有点特殊。这里有函数、类、实体等,将在多个层中需要。

我想其他文件夹应该清楚了。如果没有,让我知道他们。 您如何看待这个解决方案结构?这是一个好的开始还是我需要返工?

What do you think about this solution structure? Is this a good start or should I need rework?

这是一个好的开始;它可能需要一些返工:)

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

拆分成多个项目的优点:

  • 每个项目的依赖关系划分
  • 改进了代码的可测试性
  • 职责分离被强制执行(比单个项目更多)并且内部协议的形式化更好(至少在理论上 - 你必须注意将你的内部协议形式化)

我会考虑以下更改:

root // 项目根目录、源代码管理根目录等

  • 外部依赖关系
  • 文档
  • 来源
    • 解决方案文件[链接到下面的四个项目和测试]
    • 测试
      • 这里包含测试项目[每个都在它自己的目录中]
      • -
    • 应用[目录]
      • main.cpp
      • 主项目文件(我认为是.vcxproj)
    • 数据访问
      • headers and sources, not split into separate directorys (because this is the default and it will reduce the default settings caused by default settings in visual studio)
      • 项目文件
    • 业务[与 DataAccess 结构相同] ...

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

注意:我目前正在做一个比较大的项目(解决方案中有~180个项目),使用的是这种结构。