Giraffe:在Web开发中使用F#和ASP.NET Core

栏目: ASP.NET · 发布时间: 5年前

内容简介:Giraffe的语法类似于另一种广为使用的Web框架Suave。两者间相似性为我们提出了一个问题:两种框架是否应该合二为一,或是应该遵循同一套API。Giraffe的创立者正如人们经常提及的,Giraffe的根本出发点在于提供与ASP.NET Core的紧密集成,这是Giraffw和Suave间的一个主要差异所在。我们注意到,在使用功能性.NET开发构建功能性ASP.NET Core Web应用上存在着利基空间。Giraffe的推出正是力图填补这一空缺。它在ASP.NET Core之上构建了一个轻量级功能

Giraffe 是一种用于构建Web应用的微型F# Web框架。它基于ASP.NET Core,为Web框架提供了F# API。Giraffe支持开发人员在使用F#构建Web应用的同时,还可以访问ASP.NET Core及其生态系统所提供的特性。

Giraffe的语法类似于另一种广为使用的Web框架Suave。两者间相似性为我们提出了一个问题:两种框架是否应该合二为一,或是应该遵循同一套API。Giraffe的创立者 阐述了他认为合并不能产生增值的理由

正如人们经常提及的,Giraffe的根本出发点在于提供与ASP.NET Core的紧密集成,这是Giraffw和Suave间的一个主要差异所在。我们注意到,在使用功能性.NET开发构建功能性ASP.NET Core Web应用上存在着利基空间。Giraffe的推出正是力图填补这一空缺。它在ASP.NET Core之上构建了一个轻量级功能层,同时依然保持DI、HttpRequest、HttpResponse、Config等ASP.NET Core构建块可用。这使得F#开发人员可以使用已有的(或是即将推出的)许多ASP.NET Core生态系统。

Giraffe的主要构件是HttpHandler。HttpHandler提供了一种函数流水线,它类似于通过IApplicationBuilder组合使用ASP.NET Core。一个Handler可以通过调用随后的Handler,继续流水线的处理。例如:

type HttpHandler = HttpFunc -> HttpContext -> HttpFuncResult

Giraffe使用了组合(Combinator)方法。开发人员可以通过将HttpHandlers组合在一起创建更高层级的抽象,最终创建一个应用。例如:

let webApp =
choose [
route “/foo” >=> text “Foo”
route “/bar” >=> text “Bar”
]
type Startup() =
member __.Configure (app : IApplicationBuilder)
                    (env : IHostingEnvironment)
                    (loggerFactory : ILoggerFactory) =
    app.UseGiraffe webApp

Giraffe中使用的是.NET的 Task 对象,而非异步(async)工作流。这两种实现是不同的,需要做相互转化。Giraffe通过最小化这种转化,降低了开销。

let personHandler =
    fun (next : HttpFunc) (ctx : HttpContext) ->
        task {
            let! person = ctx.BindModel<Person>()
            return! json person next ctx
        }

例子应用 提供在GitHub上。

查看英文原文: ASP.NET Core and F# with Giraffe


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Building Websites with Joomla!

Building Websites with Joomla!

H Graf / Packt Publishing / 2006-01-20 / USD 44.99

This book is a fast paced tutorial to creating a website using Joomla!. If you've never used Joomla!, or even any web content management system before, then this book will walk you through each step i......一起来看看 《Building Websites with Joomla!》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具