【问题标题】:How to write complex application to be used under G-WAN如何编写在 G-WAN 下使用的复杂应用程序
【发布时间】:2018-04-29 11:42:04
【问题描述】:

我想了解使用 GWAN 开发应用程序时的良好做法。

我有一个将使用 C++ OOP 的启动小应用程序(但是大项目的关键部分)。至少这意味着我有一些类可以根据 HTTP 请求进行初始化。

在为 GWAN 开发时,我应该如何构建资源以便以有效和实用的方式使用它们?我是否必须单独开发应用程序并像共享/静态库一样链接它?或者我可以包括它们,然后 GWAN 像对 CSP 文件夹中的脚本一样进行构建吗?我发现如果我将它们放在 CSP 文件夹中,结果是无法启动服务器,因为它在保存类实现的 cpp 文件中缺少主要功能而失败。正因为如此,我接受将源代码放入 CSP 不是完成工作的方式,并且应该只有初始脚本将所有请求路由到应用程序。

与此相关的另一件事是,我正在努力寻找实际的工作环境,以便在我必须构建一个库以通过 CSP 使用的情况下更快地构建和测试。也许我会创建一种单独测试应用程序的方法,但是目前在 GWAN 环境中快速测试对我来说是一个不可见的解决方案,我相信这是存在的。

在 GWAN 下部署更新版本的 APP 应该尽可能简单和快速 - 方法是什么?我确实知道通过确认上述问题的答案可能会清楚这个问题,但让我留下它以防万一我对整个主题的当前理解非常错误。

【问题讨论】:

    标签: g-wan


    【解决方案1】:

    /csp 目录应该只包含入口点servlets - 即,可以由远程客户端调用的带有main() 的源代码文件。

    您可以将源代码形式(或编译形式)的函数(从多个 servlet 调用)放在 /includes (.h) 和 /libraries 目录 (.c, * .obj、*.a、*.lib)。

    可以使用用于测试代码的 servlet 进行快速开发和测试,直到代码成熟到可以存储在 /includes 或 /libraries 中。

    对于大型项目,使用预编译库非常有意义,因为这将加速动态 servlet 编译(与大量包含文件相比)。

    最后但并非最不重要的一点是,G-WAN 是为精益编码而设计的,C++ 可能不像普通 C 那样最佳——只要想想构造函数的隐藏成本、它们的顺序、它们有时冗余的操作、隐藏的内存分配等 - 除了巨大的 C++ 运行时开销、高编译时间、黑盒标准库等之外。

    在 TWD,对于 Global-WAN(依赖于 G-WAN),我们花了很多时间用纯 C 重写 C++(非标准)库,在性能、错误和死锁清理和内存使用。

    你看不到的东西可能会受到伤害 - 并且会受到严重伤害,因为,直到为时已晚,你才会看到它。

    希望这会有所帮助。

    【讨论】:

    • 您能否让我明白这一点 - GWAN 是否有可能构建源代码(.h 和 .cpp)或每个 cpp 都需要 main() 函数,如果是这样,我必须提出/includes 中的它们,我想只有 .h 会受支持,并且可以在其中实现吗?今晚我将能够检查它。这是我将打开项目并重新阅读您的答案的时间,之后我将再次回来讨论或接受问题/答案。总的来说,你证实了我的观点。感谢您提供 C 语言信息。我会花时间尝试C和C++的最低版本的APP
    • 首先,*.c 文件可以像 *.h 文件一样从 /includes 中包含。其次,*.c 文件可以用作 /libraries 文件夹中的库。第三,许多(但不是全部)C++ 程序会导致并发(基于运行时)问题。隐藏的内存分配确实(sbrk() 锁定)就像 rand() 和许多其他原语一样,但是对于大型 C++ 库,事情很快就会变得讨厌 - 这就是为什么用纯 C 重写可以让您发现并面对这些问题(隐藏的代码要少得多- 并且您可以轻松地重写 C 标准库调用 - 使用 C++ 几乎不可能完成的任务。
    猜你喜欢
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多