BT

A sua opinião é importante! Por favor preencha a pesquisa do InfoQ!

ASP.NET Core e F# com Giraffe

| por Pierre-Luc Maheu Seguir 2 Seguidores , traduzido por Eduardo Kuwakino Seguir 1 Seguidores em 29 nov 2017. Tempo estimado de leitura: 1 minuto |

Para melhorar a experiência das pessoas que acessam o InfoQ Brasil, nós criamos uma série de funcionalidades que te permitem ficar pode dentro das últimas tendências e das novidades de seu interesse, sem que você seja incomodado por coisas irrelevantes. Receba e-mails periódicos e notificações sobre seus tópicos favoritos!

O Giraffe é um micro web framework em F# para construir aplicações web. Ele é baseado no ASP.NET Core, fornecendo uma API F# ao framework web. O Giraffe é direcionado a desenvolvedores que querem construir aplicações web em F# e querem manter acesso aos recursos do ASP.NET Core e seu ecossistema.

A sintaxe do Giraffe é similar à do Suave, um outro framework web popular também em F#. A semelhança levantou questões sobre a possibilidade dos dois frameworks deveriam ser unificados ou distribuídos em um mesmo conjunto de APIs. O criador do Giraffe explica porque ele não acredita que fazer um merge traria muito valor:

Uma das principais diferenças entre o GIraffe e o Suave é que a visão fundamental do Giraffe, geralmente definida, é para fortemente se integrar com o ASP.NET Core. O Giraffe nasceu para atender o nicho de desenvolvedores funcionais de .NET que querem construir aplicações web funcionais em ASP.NET Core. O Giraffe tenta preencher esse nicho específico fornecendo uma fina camada sobre o ASP.NET Core, mas mantendo os blocos de construção principais do ASP.NET Core vivos (injeção de dependência, HttpRequest, HttpResponse, Config, etc). Isso habilita desenvolvedores de F# a usar muito do ecossistema ASP.NET Core já existente (e que está porvir).

O principal bloco de construção do Giraffe é o HttpHandler. Um HttpHandler é um fluxo de funções, semelhante à composição do ASP.NET Core pelo IApplicationBuilder. O manipulador pode continuar o fluxo processado chamando o próximo manipulador.

type HttpHandler = HttpFunc -> HttpContext -> HttpFuncResult

O Giraffe utiliza uma abordagem de combinação, em que HttpHandlers são combinados para criar níveis mais altos de abstração e por fim criar uma aplicação.

let webApp =
choose [
route “/foo” >=> text “Foo”
route “/bar” >=> text “Bar”
]

type Startup() =
member __.Configure (app : IApplicationBuilder)
                    (env : IHostingEnvironment)
                    (loggerFactory : ILoggerFactory) =
    app.UseGiraffe webApp

O Giraffe utiliza a Task do .NET ao invés de fluxos async, pois as duas implementações são diferentes e requerem conversão de um para o outro. O Giraffe minimiza conversões de forma a reduzir sobrecarga.

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

Exemplos de aplicação disponíveis no GitHub.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT