Widzę, że dostałeś kilka odpowiedzi, ale chciałbym powtórzyć, ile czasu jest marnowane na obejście różnych ograniczeń zarządcy na platformie. Chociaż podoba mi się ta platforma na niektórych poziomach, to bardzo, gorąco, zdecydowanie odradzam ją jako ogólną platformę do tworzenia aplikacji. Jest świetna jako superkonfigurowalna i rozszerzalna aplikacja CRM, jeśli tego chcesz. Chociaż ich marketing jest wyjątkowy w promowaniu idei Force.com jako ogólnej platformy programistycznej, to jeszcze nie jest jeszcze blisko.
Skuteczność posiadania stabilnej platformy i unikania dużych problemów z wydajnością i stabilnością jest łatwo zmarnowana, próbując kodować w okolicach ograniczeń, do których ludzie się odnoszą. Platforma ma tak wiele ograniczeń, że staje się całkowicie szalona. Te limity nie są wysokimi limitami, które osiągniesz, gdy będziesz mieć wielu użytkowników, osiągniesz je prawie od razu.
Chociaż zwykle istnieją techniki ich ominięcia, bardzo trudno jest wymyślić strategie ich unikania, jednocześnie próbując opracować logikę biznesową swojej rzeczywistej aplikacji.
Aby dać ci proste wyobrażenie o tym, jak środowisko jest nieprzyjazne dla programistów, weź pod uwagę „brak środowiska debugowania”, o którym mowa powyżej. To jest gorsze niż to. W dziennikach debugowania można zobaczyć tylko do 20 ostatnich żądań do serwera. Tak więc, gdy tworzysz w aplikacji, musisz utworzyć żądanie debugowania „Nowe”, wybrać swoją nazwę, nacisnąć „Zapisz”, wrócić do aplikacji, odświeżyć stronę, kliknąć z powrotem na kartę debugowania, spróbować znaleźć żądanie, w którym będzie przechowywany dziennik debugowania, naciśnij „znajdź”, aby wyszukać tekst, którego szukasz. To jak dziesięć kliknięć, aby zobaczyć wynik debugowania. Chociaż może się to wydawać trywialne, to tylko przykład tego, jak mało uwagi i uwagi poświęcono doświadczeniu programisty.
Wszystko na temat platformy programistycznej jest zaszczepione po namyśle. To niezwykłe, jak to jest, ale w większości jest to całkowite PITA. Jeśli nie wiesz dokładnie, co robisz (tak jak masz certyfikat i bardzo dobrze rozumiesz Apex), z łatwością zajmie ci to 10-20 razy więcej czasu niż w innym środowisku coś, co wydaje się być absurdalnie proste, jeśli w ogóle możesz odnieść sukces.
Limity gubernatora są rzeczywiście takie złe. Masz kombinację różnych ograniczeń (zapytania do bazy danych, zwrócone wiersze, „instrukcje skryptu”, przyszłe wywołania, objaśnienia itp.) I musisz dokładnie wiedzieć , co robisz, aby ich uniknąć. Na przykład, jeśli masz obliczone pole „formuła” zestawienia na obiekcie i masz wyzwalacz na obiekcie podrzędnym, uruchomi on wyzwalacze obiektu nadrzędnego i policzy je w ramach twoich limitów. Takie rzeczy nie są oczywiste, dopóki nie przejdziesz przez bolesny proces prób i niepowodzeń.
Spróbujesz jednej rzeczy, aby ominąć jeden limit, a trafisz w inny w niekończącej się grze „walnij limit”. W trakcie tego procesu będziesz musiał radykalnie zmienić architekturę całej aplikacji i podejścia, a także przepisać cały kod testowy. Państwo musi mieć 75% pokrycia kodu test wdrożyć do produkcji, która jest faktycznie bardzo dobra rzecz, ale w połączeniu ze wszystkimi innymi ograniczeniami, jest to bardzo uciążliwe. W rzeczywistości osiągniesz limity programu zarządzającego, pisząc kod testowy, który nie pojawiłby się w normalnych scenariuszach użytkownika, ale uniemożliwi to osiągnięcie pokrycia.
Nie wspominając o wielu innych kwestiach. Opakowanie nie jest tym, czego oczekujesz. Nie możesz spakować swojej aplikacji i dostarczyć jej użytkownikom bez znaczącej interwencji użytkownika i konfiguracji ze strony administratora organizacji. AppExchange to totalny żart, a nawet zaczęli ładować 5K tylko po to, aby Twoja aplikacja została wymieniona. Importowanie za pomocą modułu ładującego dane jest do bani, zwłaszcza jeśli masz jakieś wyzwalacze. Nie możesz wyeksportować wszystkich danych w jednym kroku, obejmującym relacje w taki sposób, aby można je było łatwo ponownie zaimportować do innej organizacji w jednym kroku (na przykład organizacji deweloperskiej). Możesz odświeżyć piaskownicę tylko raz w miesiącu od produkcji, bez wyjątków, i nie możesz domyślnie uwzględniać danych w odświeżaniu, chyba że zadzwonisz do kierownika konta, aby odblokować tę funkcję. Możesz' masowe usuwanie danych w obiektach niestandardowych. Nie możesz zmienić nazw pakietów. Pewnych rzeczy może być wieledni do ukończenia po zażądaniu ich, na przykład kopii zapasowej danych przed wdrożeniem aplikacji, bez raportu o postępie po drodze i bez większego zrozumienia, kiedy dokładnie nastąpił eksport. Biorąc pod uwagę, że istnieją problemy z synchronizacją danych, jeśli istnieją relacje między danymi, istnieją poważne problemy z integralnością danych, ponieważ nie ma czegoś takiego jak „transakcja”, która może wyeksportować wiele obiektów w jednym kroku. Prawdopodobnie istnieją komercyjne narzędzia, które mogą to ułatwić, ale nie są one dostępne dla zwykłych programistów, którzy mogą nie mieć dużego budżetu.
Wszystko inne, co powiedzieli tutaj inni, jest prawdą. Czasami zapisanie pliku może zająć od pięciu sekund do minuty.
Nie chcę być taki negatywny, ponieważ platforma jest bardzo fajna pod pewnymi względami i próbują robić rzeczy w środowisku wielu najemców, których nikt inny nie robi. To bardzo innowacyjne środowisko i potężne na niektórych poziomach (tak naprawdę bardzo lubię VisualForce), ale daj mu jeszcze rok lub dwa. Współpracują z VMware, być może dzięki temu dadzą programistom trochę więcej miejsca do pracy, a nie celi więziennej do pracy.