Un ejemplo de un proyecto real en F #

En el ecosistema de Microsoft, F # ocupa el lugar de un lenguaje experimental, desde el cual los conceptos exitosos se transfieren posteriormente a C #. Al mismo tiempo, gracias en gran parte a la comunidad, la carne picada se ha convertido en una alternativa real para proyectos aplicados. Debajo del corte, se describen los ingredientes del backend, frontend, pruebas, ensamblaje e infraestructura de un proyecto escrito íntegramente en F #. Se adjunta el código fuente.









Diagrama de contenedor
Diagrama de contenedor





Seguro

, , SAFe Stack. SAFe dotnet CLI, SPA . .





SAF . . , , , SAFe. 





- ‘S’ - Saturn - Giraffe, , , Asp.net. 





- ‘A’ - Azure. - SAFe, , , , Farmer, , SAFe.





- ‘F’ - Fable - F# JavaScript - .





API Fable.Remoting. Fable.Remoting -. , , ( ). API , ( , , , ) . JSON, .





, , Fable.Remoting, Saturn - Giraffe - Asp.Net. , , Giraffe.





OpenAPI, GiraffeGenerator.





, NoSql DynamoDB. DynamoDb.Ok. Reader. , , . . , , .





C F# . F# Entity Framework Dapper.





: 1, 2 3. , Flexible Types, .





Serilog, Giraffe.





JWT.





AWS AWSSDK, HTTP, SDK .





F# - Fable,  JS. JS. (binding) , .. React .





Elmish - Elm-. Fable.React Bulma.





.





let quizView (dispatch : Msg -> unit) (settings:Settings) (quiz:QuizRecord) l10n = [
   br []
   figure [ Class "image is-128x128"; Style [Display DisplayOptions.InlineBlock] ] [ img [ Src <| Infra.urlForMediaImgSafe settings.MediaHost quiz.ImgKey ] ]
   br []
   h3 [Class "title is-3"] [str quiz.Name]
 
   div [Class "notification is-white"][
       p [Class "subtitle is-5"][
           match quiz.StartTime with
           | Some dt -> str (dt.ToString("yyyy-MM-dd HH:mm"))
           | None -> str "???"
 
           if quiz.Status = Live then
               str " "
               span [Class "tag is-danger is-light"][str "live"]
           br[]
       ]
 
       p [] (splitByLines quiz.Description)
 
       if quiz.EventPage <> "" then
           a[Href quiz.EventPage][str l10n.Details]
    ]
]
      
      







- The Elmish Book.





, , Elmish + Fable.React + Boolma . 2021 , , Feliz + Fable.React.WebComponent + Material UI - Fable.Svetle. .





Aws, AppSync, Aws Amplify.





. ( JMeter ). 





. , F#. . , . FsUnit expecto. , , , , .





, :





  • FsCheck -





  • Canopy - DSL UI





  • NBomber -





Paket. Fake. SAFe. , - , , . , .





AWS Cloud Development Kit. F# , , C#. 





. SAFe . , -.





. , , C#. VSCode Ionide. , , - - . , , , . Ionide Rider. , , .





Ionide, ILSpy, , .





, F# . , . FSI.





A principios de 2021, F # es adecuado para proyectos de aplicaciones de tamaño pequeño a mediano. Para mí, las ventajas de este idioma son:





  • ecosistema de desarrollo front-end,





  • sistema de tipos,





  • sintaxis compacta.





Hasta que estas características aparezcan en C #, en igualdad de condiciones, mi elección será a favor de mince.





código fuente del proyecto





Una imagen de ánimo para quienes hayan leído este artículo hasta el final.
Una imagen de ánimo para quienes hayan leído este artículo hasta el final.








All Articles