cweb-frameworksansi-cg-wan

G-WAN analogs


Today I found web-framework written in ANSI C - G-WAN.

I like it, but it is not open source and maintained only by one developer. I am afraid of using it in production.

Do you know any more serious frameworks, that allow to write web services in ANSI C?

I am interested only in ANSI C, not C++.

UPD: I googled Raphters framework. Now I am cheking it out.


Solution

  • Working on G-WAN, I also value the ability to use C for a server.

    Your pick, Raphters (like Nginx by the way), was also started "by one developer only".

    But Raphters started in 2011 (is it more mature than G-WAN starting in 2009?) and the last update is almost one year old (is it better maintained than G-WAN?).

    The author of Raphters says "G-WAN comes with more though". He might know better than us.

    If you are looking for "any more serious frameworks, that allow to write web services in ANSI C" then look at Tuxedo, developed by AT&T in the 1980s.

    After 30 years, Tuxedo is 'mature', 'well-maintained', and ORACLE (the new owner) is most probably here to stay.

    But Tuxedo does not provide the performance of G-WAN (850,000 TPS). Below is the same weightp test on the same machine for Tuxedo (15,000 TPS and quickly dying despite the powerful hardware):

     Concurrency / min / average / max
     ---------------------------------
     1,    5477,    6151,     8161
     10,   7894,   11416,    15451
     20,   8177,   11894,    15578
     30,   10064,  13246,    15499
     40,   1,        909,     8885
     50,   1,         18,      130
     60,   1,          1,        1
     70,   1,          1,        1
     80,   1,          1,        1
     90,   1,          1,        1
     100,  1,          1,        1
    

    An ApacheBench (AB) test of Tuxedo confirms the test above (AB is slower than weighttp used above):

    ab -n 100000 -c 10 -k "http://127.0.0.1:8080/"
    
    Server Software:        Oracle
    Server Hostname:        127.0.0.1
    Server Port:            8080
    
    Document Path:          /
    Document Length:        266 bytes
    
    Concurrency Level:      10
    Time taken for tests:   12.462 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Keep-Alive requests:    0
    Total transferred:      48400000 bytes
    HTML transferred:       26600000 bytes
    Requests per second:    8024.45 [#/sec] (mean)
    Time per request:       1.246 [ms] (mean)
    Time per request:       0.125 [ms] (mean, across all concurrent requests)
    Transfer rate:          3792.80 [Kbytes/sec] received
    

    Looking at this, maybe you understand why G-WAN was created by its author: he could not find any Web framework able to port the Windows Desktop applications of his company to Web applications marketed as SaaS.