Using Suave on top of Kestrel Server.
F# Shell Batchfile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
benchmark
samples/SimpleSample
src/Suave.Kestrel
.gitignore
LICENSE.md
NuGet.config
benchmark.sh
global.json
readme.md

readme.md

Suave.Kestrel

Using Suave on top of Kestrel Server.

It's super early alpha version (let's call it RC) or proof of concept, not ready for any serious usage

Why?

Because Suave has great API for functional / F# programmers

Because Kestrel apparently is super fast.

How to build project and run sample?

dotnet restore
dotnet build .\src\Suave.Kestrel\ .\samples\SimpleSample\
dotnet run -p .\samples\SimpleSample\

Performance

Discussion about performance testing and some benchmarks results can be found at https://github.com/Krzysztof-Cieslak/Suave.Kestrel/issues/1

How to build for benchmarks

Suave on CoreCLR

dotnet restore
dotnet build ./benchmark/SuaveOnCoreCLR/
dotnet run -p ./benchmark/SuaveOnCoreCLR/

This should be running under 127.0.0.1:8081

Suave on Mono

cd ./benchmark/SuaveOnMono
./build.sh 
mono ./build/SuaveOnMono.exe

This should be running under 127.0.0.1:8083

Running wrk

Install wrk Linux | OSX

Quick helper script to run against port 8080 to port 8084

./benchmark.sh

Known issues

Suave.LibUv on Mono still suffers from https://github.com/SuaveIO/suave/issues/360 and cannot get an accurate benchmark.

The Suave.LibUv on CoreCLR has trouble resolving packages and cannot be properly benchmarked

    Package Suave.LibUv 2.0.0-alpha4 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Suave.LibUv 2.0.0-alpha4 supports: net40 (.NETFramework,Version=v4.0)
    Package FSharp.Core 3.1.2.5 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package FSharp.Core 3.1.2.5 supports:
      - net20 (.NETFramework,Version=v2.0)
      - net40 (.NETFramework,Version=v4.0)
      - portable-monoandroid10+monotouch10+net45+xamarinios10 (.NETPortable,Version=v0.0,Profile=net45+monoandroid10+monotouch10+xamarinios10)
      - portable-net45+sl5+win8 (.NETPortable,Version=v0.0,Profile=Profile47)
      - portable-net45+win8 (.NETPortable,Version=v0.0,Profile=Profile7)
      - portable-net45+win8+wp8 (.NETPortable,Version=v0.0,Profile=Profile78)
      - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
    One or more packages are incompatible with .NETCoreApp,Version=v1.0.

Contributing and copyright

The project is hosted on GitHub where you can report issues, fork the project and submit pull requests.

The library is available under MIT license, which allows modification and redistribution for both commercial and non-commercial purposes.