37 votes

Comment sont salesforce.com et Apex en tant que plateforme de développement d'applications ?

J'ai récemment découvert que salesforce.com est bien plus qu'un CRM en ligne après être tombé sur un Morrison's Étude de cas dans lequel ils développent une application de gestion des travaux. Je l'ai essayé en vue de recréer notre propre système de gestion des travaux sur la plate-forme.

J'ai de l'expérience avec Microsoft et .Net, et le premier choix évident serait asp.net. Cependant, je suis le seul à avoir de l'expérience en .net et mon directeur a une expérience plus ancienne de la programmation Synergy. Je suis autodidacte et j'envisage d'évaluer d'autres options RAD (par exemple Ironspeed).

la nature de l'activité consiste principalement en 2 à 5 contrats de type construction simultanés d'une durée de 3 à 5 ans chacun, chacun nécessitant 15 à 50 utilisateurs du système. Traditionnellement, nous avons utilisé notre système de gestion des travaux basé sur des caractères pour tout et l'avons adapté à chaque contrat. À première vue, le modèle de licence Salesforce convient à ce type de flexibilité, mais je m'inquiète de la flexibilité du développement, de la courbe d'apprentissage et de tous les problèmes liés au verrouillage. Il semble qu'il n'y ait pas beaucoup d'analyses neutres et sobres de la plate-forme sur le Web, si ce n'est les documents/blogs de Salesforce lui-même.

Quelqu'un a-t-il une expérience du développement d'une application sur Salesforce par rapport à la voie plus " traditionnelle " de .Net ?

51voto

Ben Points 1645

Salesforce est une expérience plutôt pénible pour développer autre chose que les applications les plus simples. Salesforce a une idée très précise de ce que l'on peut développer, et si votre application ne se situe pas dans ces limites, évitez-la !

Les limites du gouverneur sont vraiment pitoyables : récursion à 16 niveaux, 1 meg de tas, pas plus de 200 objets retournés par une requête, pas plus de 20 requêtes en une seule invocation. 10 appels web dans une invocation, 1000 éléments dans une liste unique, et ainsi de suite. Le résultat final est que toutes les astuces que vous trouvez pour contourner une limite se heurtent à une autre.

Une fois que vous atteignez une certaine taille, tout votre temps sera consacré à coder autour de ces limitations. Le langage, Apex, ne supporte pas vraiment d'héritage significatif. Même des tâches apparemment simples finissent par prendre des jours lorsque l'on rencontre de nouvelles limitations apparemment arbitraires. Par exemple, tous les objets dans Apex héritent de SObject Cependant, il n'est pas permis d'instancier une collection de modules génériques. SObject ce qui rend pratiquement impossible la création de bibliothèques utilitaires utiles. Les jointures complexes (même plutôt simples) de bases de données ne sont pas possibles.

L'outillage et le support pour Salesforce sont également extrêmement faibles. Ils ne sont pas dignes de confiance et sont difficiles à utiliser dans le cadre de véritables processus de développement. Le déploiement est un cauchemar, car les outils ont d'énormes difficultés à résoudre les problèmes de dépendance complexes, et de nombreuses entités créées au cours d'un développement normal NE PEUVENT tout simplement PAS être déployées par programme. D'autres petites caractéristiques sont également délicieuses, comme le fait que le langage est insensible à la casse, mais que l'IDE est sensible à la casse. Il n'y a pas d'outils de refactoring à proprement parler, vous avez donc toute la douleur d'un langage à typage statique, sans aucun des avantages supposés. Et le temps de sauvegarde/compilation est élevé, je vois fréquemment des temps de plus de 2 minutes. Et, bien sûr, si vous avez plusieurs erreurs de compilation en une seule sauvegarde (et ce sera le cas, puisque vous ne voudrez pas recompiler chaque changement, avec ces 2 minutes d'attente...) vous n'aurez qu'une seule erreur à la fois !

Dans le même ordre d'idées, vous semblez avoir remarqué que la documentation de Salesforce est plutôt auto-congratulatoire - eh bien, c'est comme ça jusqu'au bout. Il n'y a aucune mention, même dans les références techniques les plus sombres, des erreurs courantes, ou même des limites d'une api ou d'une fonctionnalité donnée. Tout n'est que "voici la chose géniale que vous pouvez faire" et aucune mention de "mais vous pourriez imaginer que cela ferait aussi ___, mais vous auriez tort ! Tout à fait tort !" La documentation ressemble vraiment à du matériel de marketing jusqu'au bout. Je programme dans cet environnement depuis plus de 18 mois maintenant, et j'ai encore parfois du mal à trouver les bases, comme la référence API.

Salesforce n'est pas un environnement flexible. Ce n'est pas un environnement de développement rapide (du moins comparé à tout autre cadre de programmation Web existant). Ce n'est pas un bon environnement pour construire autre chose que des applications jouets comme celles qu'ils montrent dans leurs tutoriels. Dites simplement non.

10 votes

J'ai travaillé avec Salesforce pendant un certain temps maintenant et je ne pourrais pas être plus d'accord avec votre post. Nous en sommes arrivés au point où nous écrivons notre propre outil de déploiement et envisageons éventuellement d'écrire nos propres extensions d'IDE, car l'offre de Force.com est loin d'être convaincante.

10 votes

J'aimerais pouvoir voter en haut encore et encore. La devise de Salesforce, "Ce n'est pas un logiciel, c'est Salesforce", est tout à fait trompeuse, car il faut toujours un développeur de logiciels et un temps fou pour accomplir les tâches les plus élémentaires. Ajoutez à cela les frais récurrents et l'ensemble du système commence à coûter beaucoup plus que sa valeur.

1 votes

@Ben On ne peut pas trouver une meilleure réponse que celle-ci !

12voto

lomaxx Points 32540

Je sais que cette question est un peu ancienne, mais il serait également utile de se pencher sur cette question Inconvénients de la plate-forme Force.com

Je développe sur cette plateforme depuis un certain temps et je suis tout à fait d'accord avec Ben. Il y a tellement de choses qui ne vont pas avec la "plateforme de développement" qu'est force.com que je ne pense pas qu'il soit juste de l'appeler une plateforme de développement.

Nous nous sommes battus avec l'assistance pour les outils, qui est terrible, l'assistance pour le déploiement, qui est terrible, et même leur assistance technique qui est, vous l'aurez deviné, terrible.

Le point principal que je veux souligner est que salesforce a commencé comme un CRM et qu'ils ont ensuite décidé d'ajouter la "plateforme en nuage" à leur offre. La plateforme en nuage est fortement orientée vers l'extension de leur produit CRM et si ce que vous voulez faire est étendre le CRM, alors l'environnement force.com vous permettra de le faire.

Ce qu'il ne vous permettra pas de faire, c'est de vous débarrasser de leur CRM et de vous permettre de créer facilement votre propre application entièrement personnalisée. Vous êtes toujours lié à leur modèle de sécurité et d'utilisateur, vous aurez toujours leurs objets standard dans votre base de données et vous aurez toujours leurs pages standard dans votre environnement de production. Il n'y a pas de "Fichier -> Nouveau projet", pour ainsi dire.

De plus, quelqu'un d'autre a mentionné qu'il était "basé sur Java". Cela ne signifie pas que vous pouvez y exécuter du code Java. Cela signifie qu'ils ont volé des bouts de java et l'ont bâtardisé pour ressembler à java mais ne l'est pas vraiment... ce qui est vraiment ennuyeux parce que vous ne pouvez pas simplement prendre un ensemble de bibliothèques java et l'importer dans leur cloud... donc si vous voulez faire quelque chose comme analyser JSON... vous allez devoir l'écrire vous-même.

Ovearall, j'éviterais la plateforme Force.com comme la peste.

9voto

user243657 Points 71

Écoutez Ben. Non, vraiment. Ecoute Ben. Salesforce est un monde de douleur absolue. La seule chose bien chez Salesforce, c'est leur équipe de marketing.

8voto

marfarma Points 2533

Je ne peux pas vraiment vous dire à quelle vitesse vous atteindrez les cas limites, mais je peux vous dire que cela ne ressemble à aucun autre développement que j'ai fait. Le temps de mise en œuvre nécessaire pour créer une solution viable - et la possibilité d'itérer rapidement une solution pour que les sponsors commerciaux l'évaluent - sont inégalés par tout autre environnement que j'ai connu.

Le code d'Apex est basé sur Java, avec des différences spécifiques à la plate-forme. Cependant, certaines choses ne peuvent pas être faites par le biais du code. La combinaison de l'implémentation déclarative (basée sur l'écran) et de l'implémentation basée sur le code, nécessaire pour créer une application complète, est difficile à comprendre au début.

En raison de la nature multi-tenant de l'environnement, il existe des "limites de gouverneur" qui empêchent les ressources d'être monopolisées par une seule organisation. Cela restreint vos options de mise en œuvre pour des éléments tels que les déclencheurs d'insertion et de mise à jour.

Le déploiement de votre application est également une expérience très différente.

Consultez la formation des développeurs (Dev 501) disponible sous forme de podcast vidéo sur iTunes : http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=325668840 Vous pourrez voir exactement ce dont je parle.

6voto

user286164 Points 41

Il semble que la plupart des réponses ici soient négatives, et je dirais qu'il est toujours plus facile de rejeter la faute sur une plateforme que sur sa propre inexpérience.

Il y a eu une courbe d'apprentissage pour moi et c'était frustrant (venant d'un environnement Java). La syntaxe était similaire mais le paradigme très différent. Après m'être battu un peu, j'ai réussi à créer des applications utilisées par des dizaines de milliers d'utilisateurs, qui évoluent parfaitement, sont faciles à gérer et sécurisées, et qui intègrent presque toutes les architectures de programmation traditionnelles actuellement adoptées, y compris les bases de la POO, du MVC et de nombreux autres modèles de conception du "Gang Of Four".

Si vous souhaitez que je vous indique des exemples de code ou de grandes applications construites sur la plate-forme, je serai heureux de vous aider.

2 votes

Il est certain qu'il existe des applications qui fonctionnent et, selon les circonstances, Salesforce peut être le bon outil, mais après 10 mois de développement sur SF, je maintiens tout ce que j'ai dit ci-dessus. Les problèmes que notre boutique rencontre ne sont jamais liés à l'augmentation du nombre d'utilisateurs, mais à l'augmentation des données (qui, dans notre application, n'est pas fonction du nombre d'utilisateurs) et à l'augmentation des fonctionnalités et de la complexité. Je serais curieux de savoir quelle est la taille moyenne de vos applications. Je suis heureux d'entendre que ça marche bien, cependant !

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