加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

winapi – 添加Windows对POSIX项目的支持……多么痛苦?值得努力

发布时间:2020-12-14 02:02:23 所属栏目:Windows 来源:网络整理
导读:我正在尝试/考虑制作 CppCMS – C Web Framework项目更多的跨平台. 今天我可以轻松支持Linux,OpenSolaris,FreeBSD甚至Cygwin.但是当涉及Native Windows时,它变得非常痛苦: 情况概述: 我是POSIX / Linux开发人员,我对Visual Studio和Win32 API等Native Wind
我正在尝试/考虑制作 CppCMS – C Web Framework项目更多的跨平台.

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

情况概述:

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

因此,即使它可以工作,它也可能仅在Apache的Windows端口上运行.
>我在POSIX API上大量接力:

> Pref-forking允许在崩溃的情况下保持高生存能力(Windows不支持),因此这个功能将会丢失.
>我使用了一些文件锁定功能(但我可以放弃它而不用分叉)
>我大量使用本机pthreads,即使我可以用Boost.Thread替换它们

>我可能永远无法支持Visual Studio(可能是2010年支持C 0x),因为我继续使用我使用的大多数编译器支持的C 0x decltype / auto功能或typeof / __ typeof__扩展:gcc,intel,sun工作室. (说实话:我可以在没有它们的情况下工作,但它使框架用户的生活更容易.
>我在autotools上大量接力,我不能用CMake,bjam或朋友替换它们,因为当涉及到支持国际化,交叉复制,包管理时,他们只是没有给我一个解决方案.
>有很多令人烦恼的问题,例如在Windows下缺少gmtime_r或localtime_r,以及许多其他需要我重写或用第3部分库替换它们的内容.
>仍有许多“类似UNIX”的库移植到Win32,如:iconv,gcrypt和其他一些像libdbi一样几乎没有移植的库,它们对Windows有许多限制.

底线:

有很多非常重要的工作要做,即使它完成了,它可能只适用于MingW工具而不是Windows程序员所使用的“本机”工具.
熟悉.

所以,我的问题是:

>这样的MingW港口值得努力吗?这有助于建立更大的社区吗?
>是否有人有过将大型项目从POSIX环境移植到其中的痛苦经历
Win32 API是?
>它对Windows开发人员有用吗?

编辑:

对我来说,了解有多少Windows开发人员更喜欢使用它也很重要
开源开发工具,MingW超过VS等微软开发解决方案.

编辑#2:关于“原生”Windows解决方案和IIS的清除.

事实上,用IIS运行框架确实很难.我解释:

>该项目与标准Web服务器API相关,如FastCGI或SCGI,允许通过sinlge套接字接受许多请求.因此,在应用程序方面,我接受新请求继续它并返回答案.有时几个线程处理多个请求.

因此,实现一个或两个标准协议我打开与任何现有服务器的通信:Apache,lighttpd,nginx,cherokee ……或任何其他服务器;除了IIS之外
> IIS已经实现了FastCGI,但是…它只是由Web服务器控制的supports only 1 connection per local process …

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

请注意,我实现了标准的Web服务器API,我没有实现既不是IIS专有的ISAPI也不是Apache专有的API,即使是第二个更重要的是针对UNIX世界.

所以,只是Windows IIS Web世界还没有为这样的项目做好合作准备,所以如果有人在Windows下使用它,它会将它用于更开放的Web服务器.

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读