31 votes

Applications métier: F # va-t-il me faciliter la vie?

Je développe principalement des applications métiers.Aucun des opérations scientifiques. Pas de calculs complexes. Juste attacher de l'Interface Utilisateur de base de données. La seule raison pour laquelle j'utilise le filetage est de faire un peu de travail en arrière-plan et de toujours garder l'INTERFACE utilisateur de répondre.

Cela peut ne pas être la meilleure approche, mais c'est ce que je suis

1.Créer une application de travail en premier(sans fils) et le donner à l'utilisateur final à jouer pour le bien de commentaires.
2.Une fois que toutes les exigences sont verrouillés, j'essaie d'utiliser des threads où il fait sens pour améliorer les performances.

Le code pour les étapes 1 et 2 est très différent et le filetage code domine le code réel.

1.Va F# me rendre la vie plus facile dans le cas des applications d'Entreprise?
2.Qu'est-technologies de l'INTERFACE utilisateur qui permettra de l'adapter le mieux possible avec F#? Je travaille principalement sur ASP.NET et Silverlight. WPF maintenant et puis.
3.Existe-il des bons exemples d'applications d'entreprise/démos avec F#?

Je ne suis pas en demandant s'il est possible de développer des application d'Entreprise en F#. Je me suis même demandé si F# va rendre ma vie plus facile de développer des applications métiers, comparativement à C#? Ma principale préoccupation sera de thread & UI de synchronisation.

33voto

Juliet Points 40758

Je suis dans le même bateau que vous, de faire des tas et des tas de ligne de type d'entreprise des applications, rien de "fun" comme les jeux ou les compilateurs ou les moteurs de recherche.

Votre kilométrage va varier, mais au moins dans mon expérience de beaucoup d'équipes de développement sont réticents à sauter à droite dans F# parce que personne d'autre sur l'équipe connaît ou a entendu parler de tout cela. Et dès le départ, vous avez à combattre ces questions comme "que faut-il faire différemment à partir de C#?" Si vous pouvez convaincre votre patron de vous laisser écrire quelques démo des applications avec elle, allez-y!

Donc, avec cela dit, je trouve que le C# n'est pas très bon à l'entreprise des règles, mais elle gère les Interfaces graphiques comme un champion; F#'s immutabilité rend développement du GUI maladroit, mais les règles d'affaires et des flux de travail semble naturel. De sorte que les deux langues ont leurs propres points forts et les compliments des uns et des faiblesses.

Dans mon propre MÉTIER apps, F# exécute des cercles autour de C# dans quelques domaines:

  • F#'s asynchrone des flux de travail et une boîte aux lettres processeurs ordres de grandeur plus facile à travailler que les threads natifs et même task parallel library. Depuis boîte aux lettres à l'aide de processeurs pour interthread la communication, je ne me souviens même plus de la dernière fois que j'ai eu pour le verrouiller ou le fil.join() de rien pour la synchronisation à tous.

  • En définissant les règles des moteurs et des Dsl avec les syndicats FTW! Tous les non-trivial application MÉTIER, je n'ai jamais travaillé sur a son propre demi-cuite règles de langue et interprète, et presque toujours en fonction récursive de la commutation sur un enum pour percer à travers les règles et de trouver une correspondance. Projet actuel, j'ai maintenant contient 1300+ des cours publics, 900 ou alors sont de simples classes de conteneurs pour représenter une règle. Je pense que représentent les règles comme un fa# de l'union permettrait de réduire considérablement le code de ballonnements et de faire pour un meilleur moteur.

  • Immuable code fonctionne tout simplement mieux - si vous obtenez un nouvel objet avec un état non valide, vous n'avez pas à chercher bien loin pour trouver la ligne de code malveillant, tout ce que vous devez savoir, c'est sur la pile d'appel. Si vous avez un objet mutable avec un état non valide, parfois, vous avez à passer beaucoup de temps de suivi vers le bas. Vous pouvez écrire immuable de code en C#, mais c'est vraiment difficile de ne pas tomber en arrière sur le changement, surtout quand vous êtes en train de modifier un objet dans une boucle.

  • Je déteste les valeurs null. Je ne peux pas donner une estimation exacte, mais il se sent comme la moitié de la bugs que nous obtenons dans la production sont nuls les exceptions de référence -- un objet n'est pas correctement initialisé et vous ne savez pas à ce sujet jusqu'à ce que vous êtes 30 pile d'images de profondeur dans le code. Je pense que F# nous aider à écrire plus de bug gratuit code la première fois autour.

C# fonctionne généralement bien lorsque:

  • Vous êtes en train de rédiger un code de GUI ou de travail avec intrinsèquement mutable systèmes.

  • L'exposition d'une DLL ou d'un service web pour de nombreux clients différents.

  • Votre patron ne vous permettront pas d'utiliser les outils que vous voulez ;)

Donc, si vous pouvez obtenir sur le "pourquoi voudrions-nous utiliser un nouveau langage obstacle", je pense que F# va en effet rendre votre vie plus facile.

10voto

kvb Points 35490

C'est très dur de répondre à cette question - je pense que le F# permettraient à certains aspects de votre vie beaucoup plus facile et d'autres un peu plus difficile.

Sur le côté positif, de traiter avec le filetage doit être relativement indolore - F# async les flux de travail sont un énorme avantage. Aussi, F# Interactive permet rapidement de l'itération et l'exploration de code très facile. Pour moi, c'est un avantage énorme par rapport à C#, puisque je ne peux tester mineures modifications de code sans passer par une version complète.

Sur le bas côté, l'outillage pour F# n'est pas là où il est pour le C#, ce qui signifie que vous n'aurez pas accès à l'interface graphique-constructeurs, le refactoring, etc. Il est difficile de dire quelle est la taille d'une productivité frappé ce serait la cause de vous sans en savoir plus au sujet de votre scénario. Une solution consisterait à créer un langage multi-solution qui a une mince C# front-end, mais encore une fois la complexité ne peut pas être une valeur de l'avantage.

7voto

Brian Points 82719

@Juliette et @kvb ont de bonnes réponses, je veux juste réitérer l'utilité de F# est pour faire enfilage facile. Dans mon blog "Un flux RSS tableau de bord en F#, sixième partie (mettre tous ensemble avec WPF GUI)", je dis

...À noter la chouette utilisation de "asynchrone" ici – je utiliser Asynchrone.StartImmediate, ce qui signifie tout le code s'exécute sur le thread de l'INTERFACE utilisateur (où le gestionnaire de Clic commence), mais Je peux encore le faire non bloquant dort qui ne se bloquent pas l'INTERFACE utilisateur. C'est l'un façon que F# async juste les coups les portes hors tout le reste.

...

Notre "il y a" de l'information ("3 minutes il y a") va rapidement devenir obsolètes si nous ne pas actualiser, donc on commence une boucle qui redessine chaque minute. Une fois encore une fois, F# async coups de crosse, comme je peux il suffit d'écrire cela comme s'il s'agissait d'un synchrone boucle en cours d'exécution sur l'INTERFACE utilisateur thread, mais le non-blocage de sommeil appeler assure l'INTERFACE utilisateur reste à vivre. Génial. ...

mais ce blog est un exemple de l'utilisation de F# à la main le code de l'intégralité de l'INTERFACE utilisateur. Ce qui implique l'échange de tous les grands GUI de l'outillage que vous obtenez avec C# ou VB. J'imagine qu'une approche hybride peut potentiellement net de presque tous les avantages des deux (avec le coût d'avoir deux projets dans la solution où vous précédent juste eu un), mais je n'ai pas (encore) avoir une expérience directe de mon propre à partager ici.

(Est-il un canoniques "problème" exemple en C# d'un GUI application où vous devez ajouter le filetage pour améliorer les perf ou de garder l'application en direct pendant une longue opération? Si oui, je devrais vérifier.)

2voto

Onorio Catenacci Points 6130

Quelque chose que vous aimeriez voir:

La première application métier substantielle en F #

Une grande application LOB en F #.

0voto

Fahad Points 144

Pour résoudre ce problème, j'ai publié mes réflexions sur l'utilisation de F #,

http://fadsworld.wordpress.com/2011/04/13/f-in-the-enterprise-i/ http://fadsworld.wordpress.com/2011/04/17/fin-the-enterprise-ii- 2 /

Je prévois également de faire un tutoriel vidéo pour terminer la série et montrer comment F # peut contribuer à la programmation UX.

Je ne parle que dans le contexte de F # ici.

-Fahad

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X