F# Resources

Thanks to the simplicity, elegance, strong typing and philosophy of both solutions, FSharp and ServiceStack are quickly becoming a popular choice for creating friction-less REST and message-based remote services.

.NET Core F# Project

You can create a new .NET Core F# project in a new empty directory using the x dotnet tool with:

$ dotnet tool install --global x 
$ mkdir ProjectName && cd ProjectName
$ x mix init-fsharp
$ dotnet run

Which will download the init-fsharp Gist to your local directory where you can use its dep-free /index.html and its JsonServiceClient to call its /hello API:

Complete F# Console Self-Host Example

For .NET Framework you can use the AppSelfHostBase to create a stand-alone self-hosted Console App:

open System
open ServiceStack

type Hello = { mutable Name: string; }
type HelloResponse = { mutable Result: string; }
type HelloService() =
    interface IService
    member this.Any (req:Hello) = { Result = "Hello, " + req.Name }

//Define the Web Services AppHost
type AppHost =
    inherit AppSelfHostBase
    new() = { inherit AppSelfHostBase("Hi F#!", typeof<HelloService>.Assembly) }
    override this.Configure container =
        base.Routes
            .Add<Hello>("/hello")
            .Add<Hello>("/hello/{Name}") |> ignore

//Run it!
[<EntryPoint>]
let main args =
    let host = if args.Length = 0 then "http://*:1337/" else args.[0]
    printfn "listening on %s ..." host
    let appHost = new AppHost()
    appHost.Init() |> ignore
    appHost.Start host |> ignore
    Console.ReadLine() |> ignore
    0

Community Resources