gpt4 book ai didi

winapi - 将Windows支持添加到POSIX项目...多么痛苦?值得付出努力吗?

转载 作者:行者123 更新时间:2023-12-04 17:59:34 31 4
gpt4 key购买 nike

我正在尝试/正在考虑使CppCMS-C++ Web Framework项目更跨平台。

今天,我可以轻松地支持Linux,OpenSolaris,FreeBSD甚至Cygwin。但是,当涉及到 native Windows时,它将变得非常痛苦:

情况概述:

  • 我是POSIX/Linux开发人员,几乎不熟悉Visual Studio和Win32 API等 native Windows开发工具。但是,我为此平台做了一些工作,因此我了解Windows与世界完全不同的局限性和事实。
  • 这个Web项目使用在Unix世界中很流行的API,例如:在大多数UNIX Web服务器中实现的CGI,FastCGI和SCGI。但我知道我将无法在IIS中使用它,因为它不支持基于TCP/IP的FastCGI(仅Windows管道)。

    因此,即使可行,它也可能仅在Apache的Windows端口上运行。
  • 我主要依靠POSIX API:
  • 预 fork 可在崩溃时保持较高的生存能力(Windows下不支持),因此该功能将丢失。
  • 我使用了一些文件锁定功能(但是我可以不用 fork 就放弃它们)
  • 我大量使用 native pthread,即使我可以将它们替换为Boost.Thread
  • 我可能永远无法支持Visual Studio(也许2010年支持C++ 0x),因为我依靠的是我使用的大多数编译器都支持的C++ 0x decltype/auto功能或typeof/__ typeof__扩展: ,英特尔,阳光工作室。 (说实话:我可以在没有它们的情况下工作,但是它使框架用户的工作更加轻松。
  • 我非常重视自动工具,我无法用CMake,bjam或friends代替它们,因为在支持国际化,交叉整理,程序包管理方面,它们只是没有给我解决方案。
  • 有很多烦人的问题,例如在Windows下缺少gmtime_r或localtime_r,还有许多其他问题只需要我重写它们或将其替换为第3部分库。
  • 仍然有许多像UNIX一样移植到Win32的库:iconv,gcrypt和其他几乎没有移植过的库,例如libdbi,它们在Windows上有很多限制。

  • 底线:

    有许多不平凡的工作要做,即使完成了,它也可能仅适用于MingW工具,而不适用于Windows程序员所使用的“ native ”工具。
    熟悉。

    因此,我的问题是:
  • 这样的MingW端口值得努力吗?这会有助于建立更大的社区吗?
  • 是否有人有经验将大型项目从POSIX环境移植到
    Win32 API是?
  • 它将对Windows开发人员有用吗?

  • 编辑:

    对我而言,了解有多少Windows开发人员更喜欢使用Windows也很重要
    开源开发工具,MingW优于Microsoft开发解决方案,例如VS。

    编辑#2:有关“ native ” Windows解决方案和IIS的说明。

    实际上,使用IIS运行框架确实是一个难题。我解释:
  • 该项目与FastCGISCGI相关联的标准 Web服务器API允许通过sinlge套接字接受许多请求。因此,在应用程序方面,我接受新的请求,然后继续执行并返回答案。有时,多个线程处理多个请求。

    因此,实现一个或两个标准协议(protocol)后,我便可以与任何现有服务器(Apache,lighttpd,nginx,切诺基...或任何其他服务器)进行通信。 IIS除外
  • IIS具有FastCGI的实现,但是... supports only 1 connection per local process仅由Web服务器控制...

  • 所以...绝对没有将我的应用程序连接到IIS的标准方法。

    请注意,我实现了 标准 Web服务器API,我既没有实现IIS专有的ISAPI也没有实现Apache专有的API,即使第二种对于定位UNIX世界也更为重要。

    因此,仅Windows IIS Web世界还没有真正准备好进行此类项目的合作,因此,如果有人在Windows下使用它,它将与更多开放的Web服务器一起使用。

    最佳答案

    您应该根据用户需求做出决定。用户曾经要求在Windows上使用该框架吗?如果是这样,他们是否解释了为什么要使用Windows(例如,他们还有哪些其他限制,他们想使用什么Web服务器等)?

    通常,Windows用户确实希望事情以Windows方式运行。这意味着Visual Studio支持,IIS支持,MSI安装程序等。如果仍然感觉像是Unix,我宁愿使用Unix,而不是使用半工作端口。

    关于winapi - 将Windows支持添加到POSIX项目...多么痛苦?值得付出努力吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237360/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com