Giraffe

2025-12-07 0 507

Giraffe

用于构建丰富Web应用程序功能性ASP.NET核心微网络框架。

有关更多信息,请阅读有关功能性ASP.NET核心的博客文章。

目录

  • 关于
  • 入门
  • 文档
  • 样本应用
  • 基准
  • 建筑和发展
  • 贡献
  • 夜间建造和nuget feed
  • 博客文章
  • 视频
  • 执照
  • 接触和松弛渠道
  • 支持

关于

Giraffe是用于构建丰富Web应用程序的F#Micro Web框架。它受到了激烈的启发,与Suave相似,但专门设计了ASP.NET核心的设计,可以通过中间件插入ASP.NET核心管道中。 Giraffe应用程序由所谓的HttpHandler函数组成,可以考虑到Suave的WebParts和Asp.net Core的中间件的混合物。

如果您想了解有关该项目动机的更多信息,请阅读我有关功能性ASP.NET Core的博客文章(此博客文章中的某些代码示例今天可能已经过时了)。

提示

检查发行说明文档,以了解系统的发展方式,并获取有关破坏变化的更多信息。

是谁?

Giraffe旨在为希望在功能性的第一种方法上以ASP.NET核心构建丰富的Web应用程序的开发人员。 ASP.NET Core是一个功能强大的网络平台,它得到了Microsoft的支持以及其背后的巨大开发人员社区,而Giraffe则针对希望从该生态系统中受益的F#开发人员。

它的设计不是一种竞争性的Web产品,可以像Nancyfx或Suave这样的独立运行,而是一个旨在补充ASP.NET核心的精益微框架,在功能开发人员的情况下它是短暂的。基本的想法是建立在ASP.NET核心的强大基础之上,并重新使用现有的ASP.NET核心构建块,以便F#开发人员可以从两者中受益。

您可以将Giraffe视为ASP.NET Core MVC框架的功能反应部分。

入门

使用dotnet new

开始使用Giraffe的最简单方法是安装Giraffe -template软件包,该软件包添加了一个新的模板,向您的dotnet new命令行工具添加了新模板:

 dotnet new install \" Giraffe -template::*\"

之后,您可以通过运行dotnet new Giraffe来创建一个新的Giraffe应用程序。

如果您使用的是dotnet core 2.1.4,则需要指定语言: dotnet new Giraffe -lang F#

有关Giraffe模板的更多信息,请访问官方的Giraffe板库。

手动做

安装Giraffe Nuget软件包*:

 PM> Install-Package Giraffe

*)如果您尚未安装ASP.NET Core Nuget软件包,那么您还需要将软件包引用添加到Microsoft.AspNetCore.App

 PM> Install-Package Microsoft.AspNetCore.App

另外,您也可以使用.NET CLI添加包装:

Giraffe\”>

 dotnet add package Microsoft.AspNetCore.App
dotnet add package Giraffe

接下来创建一个Web应用程序,然后将其插入ASP.NET核心中间件:

Giraffe

let webApp =
choose [
route \”/ping\” >=> text \”pong\”
route \”/\” >=> htmlFile \”/pages/index.html\” ]

type Startup() =
member __.ConfigureServices (services : IServiceCollection) =
// Register default Giraffe dependencies
services.Add Giraffe () |> ignore

member __.Configure (app : IApplicationBuilder)
(env : IHostEnvironment)
(loggerFactory : ILoggerFactory) =
// Add Giraffe to the ASP.NET Core pipeline
app.Use Giraffe webApp

[<EntryPoint>]
let main _ =
Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(
fun webHostBuilder ->
webHostBuilder
.UseStartup<Startup>()
|> ignore)
.Build()
.Run()
0\”>

 open System
open Microsoft. AspNetCore . Builder
open Microsoft. AspNetCore . Hosting
open Microsoft. Extensions . Hosting
open Microsoft. Extensions . Logging
open Microsoft. Extensions . DependencyInjection
open Giraffe

let webApp =
    choose [
        route \" /ping \"   >=> text \" pong \"
        route \" / \"       >=> htmlFile \" /pages/index.html \" ]

type Startup () =
    member __.ConfigureServices ( services : IServiceCollection ) =
        // Register default Giraffe dependencies
        services.Add Giraffe () |> ignore

    member __.Configure ( app : IApplicationBuilder )
                        ( env : IHostEnvironment )
                        ( loggerFactory : ILoggerFactory ) =
        // Add Giraffe to the ASP.NET Core pipeline
        app.Use Giraffe webApp

[<EntryPoint>]
let main _ =
    Host.CreateDefaultBuilder ()
        .ConfigureWebHostDefaults (
            fun webHostBuilder ->
                webHostBuilder
                    .UseStartup < Startup >()
                    |> ignore )
        .Build ()
        .Run ()
    0

而不是创建Startup类,您还可以以更有功能的方式添加Giraffe :

Giraffe

let webApp =
choose [
route \”/ping\” >=> text \”pong\”
route \”/\” >=> htmlFile \”/pages/index.html\” ]

let configureApp (app : IApplicationBuilder) =
// Add Giraffe to the ASP.NET Core pipeline
app.Use Giraffe webApp

let configureServices (services : IServiceCollection) =
// Add Giraffe dependencies
services.Add Giraffe () |> ignore

[<EntryPoint>]
let main _ =
Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(
fun webHostBuilder ->
webHostBuilder
.Configure(configureApp)
.ConfigureServices(configureServices)
|> ignore)
.Build()
.Run()
0\”>

 open System
open Microsoft. AspNetCore . Builder
open Microsoft. AspNetCore . Hosting
open Microsoft. Extensions . Hosting
open Microsoft. Extensions . DependencyInjection
open Giraffe

let webApp =
    choose [
        route \" /ping \"   >=> text \" pong \"
        route \" / \"       >=> htmlFile \" /pages/index.html \" ]

let configureApp ( app : IApplicationBuilder ) =
    // Add Giraffe to the ASP.NET Core pipeline
    app.Use Giraffe webApp

let configureServices ( services : IServiceCollection ) =
    // Add Giraffe dependencies
    services.Add Giraffe () |> ignore

[<EntryPoint>]
let main _ =
    Host.CreateDefaultBuilder ()
        .ConfigureWebHostDefaults (
            fun webHostBuilder ->
                webHostBuilder
                    .Configure ( configureApp )
                    .ConfigureServices ( configureServices )
                    |> ignore )
        .Build ()
        .Run ()
    0

有关更多信息,请检查官方的Giraffe文档。

样本应用

演示应用程序

可以在samples中找到一些示例应用程序。请在此处检查README.md以获取更多信息。

实时应用程序

灰尘

我的个人博客https://dusted.codes还使??*?长颈*鹿??*?ASP.NET Core构建,所有源代码均在GitHub上发布,以供进一步参考。

将来将添加更多示例应用程序。

基准

Giraffe是Techempower Web框架基准的一部分,将首次在即将到来的第17轮的官方结果页面中列出。

非官方测试结果当前可在TFB状态页面上找到。

截至今天, Giraffe参加了明文,JSON和FORTUNES类别的竞争,到目前为止,表现不错,甚至在撰写本文时表现出色,甚至超过了ASP.NET Core MVC。

在TechEmpower存储库中可以看到用于基准测试的最新实现。

吉米·伯德(Jimmy Byrd)的dotnet-web基准也出现了Giraffe ,我们已经进行了较早的性能测试。

建筑和发展

Giraffe是由最新的.NET Core SDK构建的,该核心SDK可以在Windows,MacOS和Linux上运行。

您可以安装Microsoft Visual Studio或Jetbrains Rider,这些骑手都配备了最新的.NET Core SDK或手动下载并安装.NET Core SDK,并将.NET CLI或Visual Studio Code与Ionide Extension一起构建和开发Giraffe 。

建造Giraffe的最简单方法是通过.NET CLI。

从项目的根文件夹中运行dotnet build以还原和构建解决方案中的所有项目:

 dotnet build

从项目的根部运行dotnet test将执行解决方案中引用的所有测试项目:

 dotnet test

贡献

总是欢迎帮助和反馈,并被接受。

tl; dr

  • 首先打开一个问题来讨论您的更改
  • 更改已被正式批准后,请提交您的公关
  • 请检查现有代码,遵循代码惯例
  • 根据需要添加/修改README.md
  • 根据需要添加/修改单元测试
  • 请记录您在RELEASE_NOTES.md中即将发布的发行说明中的更改
  • 只有在所有检查成功时才能批准和合并PR(在Windows和Linux上构建)

首先讨论您的更改

在为此存储库做出贡献时,请先在提交拉动请求之前首先讨论您希望通过公开问题进行的更改。有关新功能请求,请更详细地描述您的想法,以及如何使其他用户受益。

请注意, Giraffe严格旨在保持尽可能的光线,同时为构建功能性Web应用程序提供通用功能。新功能工作必须适用于更广泛的用户群,如果无法充分满足此要求,则可能会被拒绝。在疑问的情况下,维护者可能宁愿拒绝潜在的有用功能,而不是添加太多功能。该措施是为了保护存储库免受特征膨胀,不应亲自考虑。

代码约定

我们使用Fantomas来确保整个项目中的一致代码格式。提交之前,通过运行以下命令格式化代码:

dotnet fantomas src samples tests

保持文档和单元测试最新

如果您打算添加或更改现有的HttpHandler ,请更新README.md文件以反映这些更改。如果必须添加或更新适用的单元测试,并且必须在接受拉请请求之前成功构建项目。

提交针对主人的拉请请求

master分支是用于所有拉请求的主要和唯一分支。合并master意味着您的更改计划与下一个版本一起播放,这可能从同一天到几周的任何时间发生(取决于优先级和紧迫)。

只能批准通过所有构建检查并遵守一般编码指南的拉动请求。

如果您还有其他问题,请告诉我。

您可以在Github上提交问题,在Github上开始讨论,或通过https://dus**ted.co*des/about与我联系。

nuget feed

所有官方发行套餐均发布给官方和公共Nuget Feed。

由拉的请求触发的构建产生了一个nuget软件包,可以从单个github动作中下载作为工件。

博客文章

作者博客文章

  • 功能性ASP.NET核心
  • 功能性ASP.NET核心第2部分 – Giraffe的Hello World
  • 将我的开源项目从一个人存储库发展到OSS组织
  • 使用不同的视图引擎选项扩展Giraffe模板
  • 宣布Giraffe 1.0.0
  • Giraffe 1.1.0-更多的路由处理程序,更好的模型绑定和全新模型验证API

社区博客文章

  • 继续! …延续功能网的绑定管道(gerard)
  • 带有ASP.NET Core和F#的Giraffe功能网络(Scott Hanselman)
  • 使用F#和.NET Core 2.0(菲利普·卡特(Phillip Carter))构建网络服务
  • Giraffe将F#功能编程带到ASP.NET Core(Infoworld的Paul Krill)
  • JSON Web令牌与Giraffe和F#(作者:David Sinclair)
  • 带Giraffe和F#的Websocket(大卫·辛克莱(David Sinclair))
  • 在Giraffe Web应用中使用AppSetting(Jan Tourlamain)
  • 将Azure AD集成到您的Giraffe Web应用中(Jan Tourlamain)
  • F#中的Web开发:入门(由Samuele Resca撰写)
  • 使用F#和ASP.NET Core(由Samuele Resca)构建Web服务
  • 使用F# / Giraffe (汉密尔顿)建立一个简单的Markdown博客
  • Giraffe的众议员JSON(Joost Kaptein)
  • 如何使用F#(汉密尔顿)构建Fullstack WebApp
  • 使用数据存储库(F# + Giraffe )(汉密尔顿)构建一个简单的F#WebAPI

如果您已经写了有关Giraffe的博客,演示有用的主题或其他一些技巧或技巧,请随时提交拉动请求,并将您的文章添加到此列表中,作为其他Giraffe用户的参考。谢谢你!

视频

  • 开始使用ASP.NET Core Giraffe (由ODOD MBEGBU)
  • Nikeza-用F#构建后端(通过Let\’s Code .NET)
  • 使用F# + Giraffe构建一个简单的Web API(Hamy Labs)
  • 面向管道的编程-Scott Wlaschin -NDC Porto 2023(Scott Wlaschin)
  • 使用数据存储库(F# + Giraffe )构建一个简单的F#WebAPI(由Hamy Labs)
  • 使用F# / Giraffe构建一个简单的单文件Web API(Hamy Labs)
  • 使用f# / Giraffe (Hamy Labs)构建一个简单的Markdown博客

执照

Apache 2.0

当前的维护者

  • @64J0
  • @dbrattli
  • @mrtz-j

接触

如果您还有其他问题,请通过https://du*st*ed*.codes/about上提到的任何社交媒体与我联系

支持

如果您从我创建的任何内容中都有价值,但是拉动请求不是您的事,那么我也非常感谢您通过购买咖啡来支持您的支持。谢谢你!

下载源码

通过命令行克隆项目:

git clone https://github.com/giraffe-fsharp/Giraffe.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

左子网 开发教程 Giraffe https://www.zuozi.net/32050.html

Bing.NetCore
上一篇: Bing.NetCore
hprose php
下一篇: hprose php
常见问题

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务