Frage

Wir suchen derzeit mit der Force.com Plattform wie unsere Entwicklungsplattform und dem Vertrieb Jungs und die force.com Webseite sind voll von Gründen, warum es die beste Plattform in der Welt ist. Was ich suche, ist aber, einige echte Nachteile der Verwendung einer solchen Plattform.

War es hilfreich?

Lösung

Hier sind 10 für den Einstieg.

  1. Apex ist eine eigene Sprache. Anders als die force.com Eclipse-Plugin, es verfügbar wenig ist zu keinem Werkzeug wie Refactoring, Code-Analyse, etc.
  2. wurde Apex Vorbild Java 5, das als hinter anderen Sprachen zu hinken, und ohne Werkzeug (siehe # 1), kann sehr mühsam sein.
  3. Deployment ist noch ziemlich Handbuch mit vielen gotchas und manuellen Schritten. Diese Situation wird sich langsam im Laufe der Zeit verbessern, aber Sie werden enttäuscht sein, wenn Sie mit automatisierten Installationen gewohnt sind.
  4. Apex fehlt Pakete / Namensräume. Alle Klassen, Schnittstellen, usw. leben in einem Ordner auf dem Server. Dies macht Code viel weniger organisiert und Klasse / Interface-Namen unbedingt lange Namenskonflikte zu vermeiden und Kontext. Dies ist einer meiner größten Beschwerden, und ich würde aus diesem Grunde auf force.com bauen allein nicht frei wählen.
  5. Die "force.com IDE", auch bekannt als force.com Eclipse-Plugin, ist unglaublich langsam. Speichern jeder Datei, ob es sich um eine Klassendatei, Textdatei, usw., dauert in der Regel mindestens 5 Sekunden und manchmal bis zu 30 Sekunden, je nachdem, wie viele Objekte, Datentypen, Klassen-Dateien, etc. sind in der org. Sparen ist auch eine blockierende Wirkung, erfordern nicht nur Zusammenstellung, sondern eine vollständige Synchronisierung des lokalen Projektes mit dem Server. Größenordnung langsamer als Java oder .NET.
  6. Die Online-Entwickler-Community scheint nicht sehr gesund. Ich habe bemerkt, viele Forum-Beiträge unbeantwortet bleiben oder ungelöst. Ich denke, das könnte etwas mit der Forum-Software zu tun salesforce.com nutzt, das ist ziemlich schwer zu saugen scheint.
  7. Der Datenzugriff DSL in Apex lässt viel zu wünschen übrig. Es ist nicht einmal entfernt im Wettbewerb mit den Gleichen von (N) Hibernate, JPA, etc.
  8. Entwicklung einer App auf Apex / Visualforce ist eine Übung in Gouverneur Grenzen Technik. Leicht die Hälfte der Programmierer Zeit damit verbracht, die zahlreichen Gouverneur Grenzen und andere gotchas wie Visual Ansicht Zustand Grenzen zu optimieren zu vermeiden. Man könnte argumentieren, dass, wenn Sie mit Ihnen effizienten Code beginnen schreiben, wird dieses Problem nicht, das in einem Ausmaß, wahr ist. Allerdings gibt es viele Male, dass Sie gute Gründe haben, um mehr als x-Abfragen in einer Sitzung zu machen, oder Schleife durch mehr als x Datensätze, etc.
  9. Die SAVE> compile-> run Zyklus ist extrem langsam, esp. wenn es sich um nur das gesamte statische Ressourcenbündel zu zippen und das Hochladen von so etwas wie Test einer kleine CSS oder Javascript-Änderung zu tun.
  10. Im Allgemeinen ist der Schmerz eines jungen, noch jungen Plattform ohne die Vorteile der es Open Source ist. Sie haben keine Möglichkeit zu überprüfen und / oder Fehler zu beheben in der Plattform. Sie sagen per Post an ihre Ideaexchange. Ja, viel Glück damit.

Impressum / Angaben: Es gibt viele Vorteile für eine gehostete Plattform wie force.com. Force.com ist erhöhen regelmäßig die Plattform. Es gibt viele Dinge über sie Ich mag. Ich Geld Gebäude auf force.com machen

Andere Tipps

Ich sehe, du hast ein paar Antworten bekommen, aber ich möchte, wie viel Zeit wiederholen, verschwendet auf der Plattform rund um die verschiedenen Regler Grenzen zu bekommen. So sehr ich die Plattform, auf bestimmten Ebenen gefällt, würde ich mich sehr stark, sehr nachdrücklich empfehlen dagegen als allgemeine Entwicklungsplattform. Es ist toll, als Super konfigurierbar und erweiterbar CRM-Anwendung, wenn das ist, was Sie wollen. Während ihre Vermarktung zu drängen, die Idee von Force.com als allgemeiner Entwicklungsplattform ist außergewöhnlich, es ist nicht einmal entfernt noch schließen.

Die Effizienz des eine stabile Plattform und mit großer Leistung und Stabilitätsprobleme zu vermeiden ist leicht verschwendet bei dem Versuch, um die Grenzen zu codieren, die Menschen zu beziehen. Es gibt so viele Grenzen für die Plattform, wird es völlig unerträglich. Diese Grenzwerte sind nicht High-End-Grenzen Sie treffen, wenn Sie viele Benutzer haben, können Sie sie fast sofort getroffen werden.

Während es in der Regel Techniken sind, um sie zu bekommen, ist es sehr schwer Strategien, um herauszufinden, für sie zu vermeiden, während Sie versuchen auch die Geschäftslogik Ihrer tatsächlichen Anwendung zu entwickeln.

Um Sie ein einfaches Gefühl dafür, wie Entwickler un freundlich die Umgebung, nehmen Sie den „Mangel an Debugging-Umgebung“, auf die oben Bezug genommen. Es ist schlimmer als das. Sie können nur auf 20 der neuesten Anforderungen an den Server in den Debug-Protokollen siehe oben. So, wie Sie in der Anwendung entwickeln müssen Sie eine „Neue“ debug Anfrage erstellen möchten, wählen Sie Ihren Namen, klicken Sie auf „Speichern“, um Ihre Anwendung zu wechseln, aktualisieren Sie die Seite, klicken Sie zurück zu Ihrem Debug-Registerkarte versuchen zu finden die Anforderung, dass Ihr Debug-Log beherbergen wird, drücken Sie „finden“ für den Text suchen, die Sie suchen. Es ist wie zehn Klicks bei einer Debug-Ausgabe zu suchen. Während es trivial erscheinen mag, es ist nur ein Beispiel dafür, wie wenig Sorgfalt und Überlegung hat die Entwickler-Erfahrung gegeben wurde.

Alles rund um die Entwicklungsplattform ist eine aufgepfropfte auf nachträglichen Einfall. Es ist bemerkenswert für das, was es ist, aber insgesamt PITA zum größten Teil. Wenn Sie nicht genau wissen, was Sie tun (wie in Sie zertifiziert sind und haben ein sehr inniges Verständnis von Apex), wird es leicht nehmen Sie nach oben von 10-20x die Menge der Zeit, dass es in einer anderen Umgebung würde zu tun etwas, das wie es scheint, wäre lächerlich einfach, wenn man überhaupt gelingen kann.

Die Reglergrenzen sind in der Tat so schlimm. Sie haben eine Kombination verschiedener Grenzen (Datenbankabfragen, Zeilen zurückgegeben, „Skript-Anweisungen“, zukünftiger Anrufe, Callouts, etc.), und Sie müssen wissen, genau , was Sie, diese zu vermeiden tun. Zum Beispiel, wenn Sie auf ein Objekt ein berechnetes Rollup „Formel“ -Feld und Sie haben einen Trigger für ein untergeordnetes Objekt, wird es das übergeordnete Objekt Trigger ausführen und diejenigen, die gegen die eigenen Grenzen zählen. Solche Dinge sind nicht offensichtlich, bis Sie durch den schmerzhaften Prozess der versucht und versagt gegangen sind.

Sie werden eine Sache, versuchen Sie eine Grenze zu vermeiden, und schlagen eine andere in einem nie endenden Spiel „eine Grenze Whack“. In dem Prozess werden Sie müssen drastisch neu Architekt Ihre gesamte App und Ansatz, sowie alle Ihre Testcode zu umschreiben. Sie muss 75% Test Code Coverage hat in der Produktion einzusetzen, die eigentlich sehr gute Sache ist, aber mit allen anderen Grenzen kombiniert, es ist sehr lästig. Sie werden tatsächlich Gouverneur Grenzen Schreiben des Testcode getroffen, die in normalen Benutzerszenarien nicht kommen würden, aber das wird verhindern, dass Sie die Abdeckung zu erreichen.

Das ist nicht eine ganze Reihe von anderen Themen zu nennen. Die Verpackung ist nicht das, was Sie erwarten. Sie können Ihre App und liefern sie an Benutzer ohne wesentlichen Benutzereingriff und Konfiguration auf Seiten des Administrators des org nicht verpacken. Die AppExchange sind ein totaler Witz, und sie haben sogar 5K Aufladen nur um Ihre App aufgeführt gestartet. Importieren mit dem Data Loader saugt, vor allem, wenn Sie irgendwelche Auslöser haben. Sie können nicht alle Ihre Daten in einem Schritt exportieren,enthält Ihre Beziehungen in einer Weise, dass es leicht in eine andere org in einem einzigen Schritt wieder importiert werden kann (zum Beispiel ein Entwickler org). Sie können nur eine Sandbox einmal im Monat von der Produktion aktualisieren, ohne Ausnahmen, und Sie können Ihre Daten in einem Refresh nicht standardmäßig enthalten, wenn Sie Ihren Account Executive genannt haben, um diese Funktion freigeschaltet zu bekommen. Sie können Masse keine Daten in benutzerdefinierten Objekte löschen. Sie können nicht Ihre Paketnamen ändern. Bestimmte Dinge können zahlreiche Tage beenden, nachdem Sie sie angefordert haben, wie eine Datensicherung, bevor Sie eine App bereitstellen möchten, ohne Zwischenbericht auf dem Weg und nicht viel Sinn, wann genau die Ausfuhr aufgetreten. Da die Synchronität Fragen der Daten gibt es, wenn es Beziehungen zwischen den Daten sind, gibt es ernsthafte Probleme der Datenintegrität, dass es nicht so etwas wie eine „Transaktion“, die zahlreichen Objekte in einem einzigen Schritt exportieren. Es gibt wahrscheinlich einige kommerzielle Werkzeuge einige dies zu erleichtern, aber diese sind nicht in Reichweite normalen Entwickler, die nicht ein riesiges Budget haben.

Alles andere die anderen Leute hier gesagt ist wahr. Es kann überall von 5 Sekunden bis zu einer Minute dauert manchmal eine Datei zu speichern.

ich meine nicht so negativ sein, weil die Plattform in mancher Hinsicht sehr kühl ist und sie versuchen, die Dinge in einer Multi-Tenant-Umgebung zu tun, dass niemand sonst tut. Es ist ein sehr innovatives Umfeld und mächtig auf einigen Ebenen (Ich mag Visual eigentlich viel), aber geben Sie ihm ein weiteres Jahr oder zwei. Sie sind mit VMware Partnerschaft, vielleicht zu geben Entwicklern ein bisschen mehr von einem Laufstall führen wird, statt einer Gefängniszelle in arbeiten.

Hier sind ein paar Dinge, die ich Ihnen, nachdem er ein gutes Stück Zeit in der Entwicklung auf der Plattform in den letzten vierzehn Tage geben kann oder so:

  1. Es gibt keine RESTful API. Sie haben eine Seife basierte API, die Sie anrufen können, aber es gibt keine Möglichkeit, echte erholsamen Anrufe machen

  2. Es gibt keinen einfachen Weg, um ihre SObjects zu nehmen und wandeln sie in JSON-Objekte.

  3. Die visuelle Kraft Seiten sind in Ordnung, bis Sie sie anpassen möchten und dann ist es eine ganze Welt der Schmerzen.

  4. Visuelle Kraft Seiten SObjects gebunden werden müssen, sonst gibt es keine Möglichkeit die Standard-Eingabefelder wie die Datumsauswahl oder Auswahlliste zur Arbeit zu kommen.

  5. Die Eclipse-Plugin ist in Ordnung, wenn Sie für sich selbst arbeiten wollen, aber wenn man in einem großen Team mit der Eclipse-Plugin arbeiten will vergessen. Es behandelt nicht zu und von dem Server zu synchronisieren, es stürzt ab, und es ist überhaupt nicht wirklich hilfreich.

  6. ES GIBT KEINE DEBUGGER! Wenn Sie debuggen möchten, ist es buchstäblich von system.debug Aussagen korrigiert. Dies ist wahrscheinlich das größte Problem, das ich gefunden habe,

  7. Die "MVC" -Modell ist nicht wirklich MVC. Es ist viel näher an ASP.NET Webforms. Ihre Ansichten sind eng miteinander gekoppelt, um nicht nur die Modelle, sondern die Controller als auch.

  8. eine große Anzahl von Dokumenten Speicher ist nicht möglich. Wir brauchen mehr als 100 GB ist von Dokumenten zu speichern, und wir waren etwas lächerliche Figur zitiert. Wir haben beschlossen, unsere Dokumentenspeicher auf Amazonen S3 Infrastruktur

  9. implementieren
  10. Auch tho die Sprache Java-basiert, ist es nicht Java. Sie können keine externen Pakete oder Bibliotheken importieren. Auch die Basisbibliotheken, die verfügbar sind, sind stark eingeschränkt, so fanden wir haben uns ein paar Sachen Implementierung von außen und dann diese Bits als Dienste ausgesetzt wird, die von force.com aufgerufen werden

  11. Sie können externe SOAP aufrufen oder basierte Dienste REST aber der Nachrichtentext auf 100kb ist begrenzt, so dass es sehr restriktiv ist in dem, was man nennen kann.

In aller Ehrlichkeit, während es potenzielle Vorteile auf so etwas wie die force.com Plattform zu entwickeln, für mich, man konnte nicht die force.com Plattform für echte Enterprise-Level-Apps nutzen. Allenfalls könnte man einige grundlegende crud Stil Anwendungen schreiben, aber wenn man in etwas bewegen Ferne kompliziert ich es wie die Pest würde vermieden werden.

Wow- gibt es viel hier, dass ich nicht einmal wusste, Einschränkungen waren -. Nach einigen Jahren auf der Plattform arbeiten

Aber nur ein paar andere Dinge hinzufügen ...

Der Grund, warum Sie nicht eine Zeile-für-Zeile-Debugger haben Sie gerade weil es sich um eine Multi-Tenant-Plattform ist. Zumindest ist das, was SFDC sagt - es scheint, als ob in diesem Zeitalter der Faden reiche Programmierung, dass nicht viel von einer Entschuldigung ist, aber das ist offenbar der Grund. Wenn Sie den Code zu schreiben, Sie "System.debug (String)" als Debugger -. Ich vor in Java 1.2 über 12 Jahren anspruchsvollere Server Debugging-Tools Speicher mit

Eine andere Sache, die ich wirklich über das System hassen ist Versionskontrolle. Das Spring-Framework nicht verwendet wird für das, was Frühling ist in der Regel verwendet für - es ist mehr weg wirklich ein Konfigurations-Tool in SFDC statt Versionskontrolle. SFDC bietet ZERO Versionskontrolle.

Sie können sich für Tage stecken finden, etwas zu tun, die so lächerlich einfach scheinen sollte, wie, sagen wir, einen SFDC Report Scheduling in eine CSV-Datei und E-Mail an eine Liste von Empfängern ... Nun, über die einfachsten exportieren zu das tut, ist ein benutzerdefiniertes Objekt mit einem benutzerdefinierten Feld erstellen, mit einer Workflow-Regel und einer E-Mail-Vorlage Visual ... und dann für Code benötigen Sie eine Visual Komponente zu schreiben, den die Berichtsdaten an die E-Mail-Vorlage Visual als Anlage-Streams und Sie anonym APEX Feld Aktualisierung des benutzerdefinierten Objekts ... Für SFDC Entwickler Code Plans schreiben, das ist fast eine tägliche Aufgabe ... versuchen, über fünf verschiedene Technologien, um gemeinsam Aufgaben zu tun, die so einfach erscheinen .... Und das kann verursachen Managements Kopfschmerzen und Spannungen - in der Regel werden Sie dies herausfinden, nachdem er einen Vorschlag bekommen, etwas zu tun, die nicht in der Benutzer-Community funktionieren (wie jemand schon gesagt), und dann viele Dinge zu versuchen, die, nachdem Sie sie entwickelten Sie würden finden sie funktionieren einfach nicht so ich odd-Ball Grund -. wie „Sie können keine Visualforce-Seite planen“ oder „Sie nicht getContent von einem planbaren Kontext nennen können“ oder einen anderen obskuren Grunde

Es gibt so viele, viele maddening wenig gotcha die auf der SFDC Plattform, dass, sobald Sie wissen, warum sie dort sind, macht es Sinn, ... aber sie sind immer noch sehr schlecht Einschränkungen, die verhindern, dass Sie das tun, was Sie brauchen, um machen. Hier einige von mir;

  1. Sie können keine Aufzeichnung Eigentümerinformationen „out of the box“ auf so ziemlich jede Art von Rekord bekommen - müssen Sie einen Trigger schreiben, die den Eigentümer der Aufzeichnung Sie Einfügen auf Erstellen des Datensatzes verbindet . Warum? Kurze Antwort, weil ein Eigentümer kann entweder eine „Person“ oder eine „Warteschlange“, und die beiden sind drastisch unterschiedliche Einheiten ... Sinn macht, aber es kann ein Projekt drehen buchstäblich auf den Kopf.

  2. Maddening Sicherheitsmodell. Beispiel:. „Managt öffentlichen Report“ Erlaubnis ist ganz anders aus „Erstellen und Anpassen von Report“ und das gilt im Grunde für alles, was auf der Plattform ... vor allem Ordner jeglicher Art

  3. Wie bereits erwähnt, Unterstützung ist im Grunde nicht existent. Wenn Sie ein extrem autarke Einzel sind, oder eine Menge SFDC Ressourcen haben oder viel Zeit haben und / oder eine sehr nachsichtig Manager oder sind verantwortlich für ein BDE-System, das feine funktioniert, sind Sie in ziemlich gut gestalten. Wenn Sie nicht in jeder dieser Positionen sind, findet man sich in großen Schwierigkeiten zu finden.

SFDC ist ein sehr verführerisches Geschäftsangebot ... keine Ausrüstung Fußabdruck, ziemlich gute Sicherheit, Festpreis, keine Infrastruktur, und Sie web-basierte CRM mit batchfähig zu bekommen, und schedualble Verarbeitung ... Aber wie die anderen Plakate sagten, es ist wirklich ein ganz Ramp-up in der Entwicklung Lernen, und wenn Sie mit der Beratung gehen, ich denke, der niedrigste Preis, den ich $ 200 / Stunde gesehen haben war.

Salesforce neigt dazu, mit anderen Dingen Jahren integrieren, nachdem einige Technologien Common-Ort geworden - JSON und jquery in den Sinn kommen ... und wenn Sie andere gemeinsame Infrastrukturen haben, dass Sie eine Integration mit, wie JIRA tun wollen, erwarten, dass ein zahlenLos Extra, und sie können sehr fehlerhaft sein.

Und als einer der anderen Plakate erwähnt, werden Sie ständig Gouverneur Grenzen kämpfen, die Sie Nüsse gerade fahren kann ... eine Anlage kann nicht sein> 5 MB. Zeitraum. Und manchmal <3MB (wenn Base64 codiert). Zehn HTTP Legenden in einer Klasse. Zeitraum. Es gibt Dutzende von Gouverneur Grenzen veröffentlicht, und viele, die sind nicht das, was Sie zweifellos finden und wollen einfach nur aus Ihrem Büro Kreischen laufen.

ich wirklich, wirklich, wie die Plattform, aber glauben Sie mir - es kann man wirklich grausam Herrin sein.

Aber in Fairness zu SFDC, würde ich sagen: das größte Problem, das ich mit der Plattform zu finden, ist nicht die Plattform selbst, sondern die gewaltigen Erwartungen, dass fast jeder, den die Plattform sieht, hat aber auf nicht entwickelt hat. ... und die Leute neigen dazu, in den Positionen von großer Autorität in Unternehmen zu sein; Marketing, Vertrieb, Management usw. Huge trennt auftreten und Köpfe rollen, oder bedroht werden täglich rollen - alles nur, weil es mit seltsamen gotchas und Tausende von Menschen da draußen diese großartige Plattform ist täglich kämpfen, um ihre Köpfe herum zu erhalten, warum die Dinge sollten nur funktionieren, wenn sie einfach nicht und wird nicht.

EDIT:
Nur um zu lomaxx Kommentare über das MVC hinzufügen; In SFDC Terminologie wird diese eng miteinander verbunden, was als „Viewstate“ bekannt ist - uund es kann wirklich fehlerhaft sein, in das, was auf der Seite VF ist nicht was ist im Controller-Klasse für Die Seite. So müssen Sie Throught seltsame Verrenkungen gehen zu synchronisieren, was auf der Seite mit dem, was die Steuerung auf SF schreiben wird, wenn Sie Ihre klicken Sie auf „Speichern“ (oder HTTP-callout machen oder was auch immer) .... Mann, es ist ärgerlich .

Ich glaube, andere Menschen in mehr Tiefe, die Nachteile abgedeckt haben, aber zu mir, es scheint nicht das MVC-Paradigma zu verwenden oder gar viel in der Art der Wiederverwendung von Code zu unterstützen. Um etwas über einfache Anwendungen ist eine Übung in Frustration im Vergleich zu der Entwicklung einer Anwendung mit so etwas wie ASP.Net MVC.

Darüber hinaus sind die Werkzeuge, die Datenschicht und die Frustration zu versuchen, Code Refactoring oder umbenennen Felder während des Entwicklungsprozesses nicht hilft.

ich denke, als CMS es ist ziemlich cool, aber als Plattform für nicht CMS-Anwendungen, ist es macht keinen Sinn für mich.

Das Sicherheitsmodell ist auch sehr sehr restriktiv ... aber das ist nicht das Schlimmste. Sie können derzeit nicht behaupten, ob ein Benutzer die Möglichkeit, eine bestimmte Aktion auszuführen hat.

Sie können überprüfen, um zu sehen, was ihre Rolle ist, aber man kann nicht überprüfen, ob diese Rolle Berechtigungen die aktuelle Aktion auszuführen hat.

Noch schlimmer ist die Antwort von technischem Support „um die Aktion versuchen, und wenn es eine Ausnahme, fangen sie“

Unter Berücksichtigung Force.com ist eine „Wolke“ Plattform, seine Fähigkeit, als Client an einen externen WSDL-definierten Service zu handeln ist ziemlich berauschend. Siehe http :. //force201.wordpress.com/2010/05/20/when-generate-from-wsdl-fails-hand-coding-web-service-calls/ für das, was Sie tun könnten am Ende zu

Für alle oben, ich bin gespannt, wie die Freisetzung von VMforce, so dass Java-Programmierer Code für Force.com schreiben, ändert sich die Nachteile oben?

http://www.zdnet.com/ Blog / saas / vmforcecom-Umdefinierung-the-paas-Landschaft / 1071

Ich denke, sie versuchen, diese Probleme zu lösen. Bei der Dream sie erwähnte sie uns versuchen, die Gouverneur Grenzen fallen nur 4. Ich bin nicht sicher, was die Details sind. Sie verfügen über eine REST-API für einen frühen Zugang, und sie kauften Heroku, die eine Ruby-Entwicklung in der Cloud ist. Sie teilen sich die Datenbank aus, mit database.com, so dass Sie alle Ihre auf Web-Entwicklung zu tun und Ihre db Anrufe über database.com.

Ich denke, sie versuchen, es als Agnostiker wie möglich zu machen. Aber gerade jetzt diese sind alle Ansagen und frühen Zugang so wie ihre Safe Harbor Aussagen nicht kaufen, was sie sagen, nur auf das, was sie im Moment haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top