Un exemple de projet réel en F #

Dans l'écosystème Microsoft, F # prend la place d'un langage expérimental, à partir duquel les concepts réussis sont ensuite transférés vers C #. Dans le même temps, grâce en grande partie à la communauté, la viande hachée est devenue une véritable alternative pour les projets appliqués. Sous la coupe, les ingrédients du backend, du frontend, des tests, de l'assemblage et de l'infrastructure d'un projet entièrement écrit en F # sont décrits. Le code source est joint.









Diagramme de conteneur
Diagramme de conteneur





Sûr

, , 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.





Début 2021, F # convient aux projets d'application de petite à moyenne taille. Pour moi, les avantages de ce langage sont:





  • écosystème de développement front-end,





  • système de typage,





  • syntaxe compacte.





Jusqu'à ce que ces fonctionnalités apparaissent en C #, toutes choses étant égales par ailleurs, mon choix sera en faveur de haché.





code source du projet





Une image d'encouragement pour ceux qui ont lu cet article jusqu'au bout.
Une image d'encouragement pour ceux qui ont lu cet article jusqu'au bout.








All Articles