Survey of the F# Web Platform
The C4F# web application does not use every web platform or tool available to F#. This chapter surveys the playing field. We'll describe why we chose some tools and decided not to choose some others. While reading through the list, you may decide another tool is a better fit for your project. We provide links to the documentation for each tool so you can explore more.
Selected Tools
Freya
Suave
WebSharper
Tools Not Selected
ASP.NET
ASP.NET serves the entire .NET platform as the out-of-the-box solution for web programming. It provides tools for building HTML pages via Web Forms, MVC, and Web Pages. It also provides tools for building Web APIs and real-time messaging via SignalR.
TODO: Why not ASP.NET?
Frank
Frank began as an experiment to define a nice DSL for building web applications in F# 2.0. The present and final version of Frank lightly wraps the types in System.Net.Http
, the types used by ASP.NET Web API. Some of its earlier ideas have found a home in the Freya library.
TODO: Why not Frank?
fss (FSharp Server)
fss is a simple web server written in F#. It includes a partial implementation of the jinja templating engine, as well as an F# -> SQL query language.
TODO: Why not fss?
FunScript
FunScript compiles F# to JavaScript by way of a type provider for TypeScript declarations.
TODO: Why not FunScript?
Katana (Microsoft.Owin)
Katana provides abstractions for building OWIN applications. Extensions to Katana also provide support for authenticating users and hosting on servers.
TODO: Why not Katana?
NancyFx
NancyFx provides a "Super Duper Happy Path" to web development for the .NET platform. This open source project provides great documentation and community support. Microservices in .NET uses NancyFx in its examples. The NancyFx project provides templates for Visual Studio. You can also get templates for writing Nancy applications in F#.
TODO: Why not NancyFx?