Недостатки платформы Force.com

В настоящее время мы используем платформу Force.com, так как наша платформа разработки и продавцы и сайт force.com полны причин, почему это лучшая платформа в мире. Тем не менее, я ищу некоторые реальные недостатки в использовании такой платформы.

Ответ 1

Вот 10, чтобы вы начали.

  • Apex - это фирменный язык. Помимо плагина force.com Eclipse, практически нет инструментов, таких как рефакторинг, анализ кода и т.д.
  • Apex была смоделирована на Java 5, которая, как считается, отстает от других языков и без инструментов (см. # 1), может быть довольно громоздкой.
  • Развертывание по-прежнему довольно ручное, с большим количеством исправлений и ручных действий. Эта ситуация постепенно улучшается с течением времени, но вы будете разочарованы, если вы привыкли к автоматическому развертыванию.
  • Apex не хватает пакетов/пространств имен. Все ваши классы, интерфейсы и т.д. Живут в одной папке на сервере. Это делает код гораздо менее организованным, а имена классов/интерфейсов обязательно длинными, чтобы избежать конфликтов имен и обеспечения контекста. Это одна из моих самых больших жалоб, и я бы не стал свободно выбирать на Force.com только по этой причине.
  • "Force.com IDE", aka force.com плагин eclipse, невероятно медленный. Сохранение любого файла, будь то файл класса, текстовый файл и т.д., Обычно занимает не менее 5 секунд, а иногда и до 30 секунд, в зависимости от количества объектов, типов данных, файлов классов и т.д. В вашей организации. Сохранение также является блокирующим действием, требующим не только компиляции, но и полной синхронизации вашего локального проекта с сервером. Заказы величины медленнее, чем Java или .NET.
  • Сообщество разработчиков онлайн не выглядит очень здоровым. Я заметил, что многие сообщения на форуме остаются без ответа или не решены. Я думаю, что это может иметь какое-то отношение к программному обеспечению, используемому salesforce.com для форума, которое, похоже, довольно сильно сосать.
  • Доступ к данным DSL в Apex оставляет желать лучшего. Он даже не удаленно конкурирует с подобными (N) Hibernate, JPA и т.д.
  • Разработка приложения на Apex/VisualForce - это упражнение в инженерных ограничениях губернатора. Простая половина времени программиста проводится, пытаясь оптимизировать, чтобы избежать многочисленных ограничений губернатора и других ошибок, таких как видимость видимости в представлении. Можно утверждать, что если вы напишете эффективный код для начала, у вас не будет этой проблемы, что верно в некоторой степени. Однако есть много раз, что у вас есть веские причины, чтобы делать больше, чем x запросов в сеансе или перебирать более чем х записей и т.д.
  • Цикл save- > compile- > run чрезвычайно медленный, особенно. когда он включает в себя zipping и загрузку всего пакета статических ресурсов, просто чтобы сделать что-то вроде проверки незначительного изменения CSS или javascript.
  • В общем, боль молодой, неоперившейся платформы без выгоды от нее - с открытым исходным кодом. У вас нет возможности проверить и/или исправить ошибки на платформе. Говорят, чтобы опубликовать его в IdeaExchange. Да, удачи с этим.

Отказ от ответственности/раскрытие информации. Существует много преимуществ для размещенной платформы, такой как force.com. Force.com регулярно совершенствует платформу. Есть много вещей, которые мне нравятся. Я зарабатываю деньги на force.com

Ответ 2

Я вижу, что вы получили некоторые ответы, но я хотел бы повторить, сколько времени тратится впустую, обойдя границы разных губернаторов на платформе. Насколько мне нравится платформа на определенных уровнях, я бы очень сильно, решительно рекомендовал против нее как общую платформу разработки приложений. Это отлично, как супер настраиваемое и расширяемое приложение CRM, если это то, что вы хотите. В то время как их маркетинг является исключительным для того, чтобы продвинуть идею Force.com в качестве общей платформы разработки, он даже не удаленно закрыт.

Эффективность использования стабильной платформы и избежание больших проблем с производительностью и стабильностью легко теряется, пытаясь закодировать границы, на которые люди ссылаются. На платформе так много ограничений, она становится совершенно безумной. Эти ограничения не являются предельными ограничениями, которые вы нажмете, когда у вас будет много пользователей, вы сразу же ударите их.

Хотя обычно есть способы обойти их, очень сложно найти стратегии для их избежания, в то время как вы также пытаетесь разработать бизнес-логику своего фактического приложения.

Чтобы дать вам простое представление о том, как разработчик не дружит с окружающей средой, возьмите "недостаток среды отладки", о котором говорилось выше. Это хуже. В журналах отладки вы можете видеть до 20 самых последних запросов на сервер. Итак, когда вы разрабатываете внутри приложения, вам нужно создать запрос "Новый" отладки, выберите свое имя, нажмите "Сохранить", вернитесь в свое приложение, обновите страницу, вернитесь на вкладку отладки, попытайтесь найти запрос, в котором будет размещен ваш журнал отладки, нажмите "найти" для поиска текста, который вы ищете. Это как десять кликов, чтобы посмотреть вывод отладки. Хотя это может показаться тривиальным, это просто пример того, как мало внимания уделяется опыту разработчиков.

Все, что касается платформы разработки, - это привнесенная в заблуждение мысль. Это замечательно для того, что это такое, но в целом PITA по большей части. Если вы не знаете точно, что вы делаете (так как вы сертифицированы и имеете очень глубокое понимание Apex), он легко перенесет вас на 10-20% времени, которое будет в другой среде что-то похожее на это было бы смехотворно просто, если вы даже можете добиться успеха вообще.

Ограничения губернатора действительно настолько плохи. У вас есть комбинация различных ограничений (запросы к базе данных, возвращаемые строки, "script statements", будущие вызовы, выноски и т.д.), И вы должны точно знать, что вы делаете, чтобы избежать этих ошибок. Например, если у вас есть рассчитанное значение "формула" поля для объекта, и у вас есть триггер для дочернего объекта, он будет запускать триггеры родительских объектов и подсчитывать их против ваших ограничений. Такие вещи не очевидны, пока вы не пережили болезненный процесс попыток и неудач.

Вы попробуете одну вещь, чтобы избежать одного предела, и ударить другого в бесконечной игре "ударить предел". В процессе вам придется радикально перепроектировать все приложение и подход, а также переписать весь ваш тестовый код. У вас должно быть 75% покрытия тестового кода для развертывания в производство, что на самом деле очень хорошо, но в сочетании со всеми другими ограничениями это очень обременительно. Вы на самом деле нажмете ограничения губернатора, написав свой тестовый код, который не появлялся бы в обычных пользовательских сценариях, но это не позволит вам достичь охвата.

Это не говоря уже о целом ряде других проблем. Упаковка - это не то, что вы ожидаете. Вы не можете упаковать свое приложение и доставить его пользователям без значительного вмешательства пользователя и конфигурации со стороны администратора организации. AppExchange - это полная шутка, и они даже начали взимать 5K, чтобы получить ваше приложение. Импорт с загрузчиком данных засасывает, особенно если у вас есть триггеры. Вы не можете экспортировать все свои данные за один шаг, которые включают ваши отношения таким образом, что их можно легко импортировать в другую организацию за один шаг (например, dev org). Вы можете обновлять песочницу только один раз в месяц от производства, без каких-либо исключений, и вы не можете включать свои данные в обновление по умолчанию, если только вы не позвонили руководителю своей учетной записи, чтобы разблокировать эту функцию. Вы не можете массово удалять данные в пользовательских объектах. Вы не можете изменить имена пакетов. Некоторые вещи могут занять много дней после того, как вы запросили их, например, резервное копирование данных, прежде чем вы захотите развернуть приложение, без отчета о прогрессе на этом пути и не особого смысла, когда именно произошел экспорт. Учитывая, что существуют проблемы синхронности данных, если существуют связи между данными, существуют серьезные проблемы с целостностью данных, поскольку нет такой вещи, как "транзакция", которая может экспортировать многочисленные объекты за один шаг. Вероятно, есть некоторые коммерческие инструменты для облегчения этого, но они недоступны для обычных разработчиков, у которых может не быть огромного бюджета.

Все остальное, сказанное здесь, верно. Иногда для сохранения файла может потребоваться от пяти секунд до минуты.

Я не хочу быть настолько негативным, потому что платформа в какой-то степени круто, и они пытаются делать что-то в среде с несколькими арендаторами, которую никто другой не делает. Это очень инновационная среда и мощная на некоторых уровнях (мне действительно нравится VisualForce много), но дайте ей еще год или два. Они сотрудничают с VMware, возможно, это приведет к тому, что разработчикам будет больше играть в манекены, а не в тюремной камере, чтобы работать.

Ответ 3

Вот несколько вещей, которые я могу дать вам, потратив довольно много времени на платформу за последние две недели или около того:

  • Нет RESTful API. У них есть api на основе мыла, который вы можете вызвать, но нет способа сделать настоящие спокойные звонки.

  • Нет простого способа взять их SObjects и преобразовать их в объекты JSON.

  • Страницы визуальной силы в порядке, пока вы не захотите их настроить, а затем - целый мир боли.

  • Страницы визуальной силы должны быть привязаны к SObjects, иначе нет возможности получить стандартные поля ввода, такие как datepicker или список выбора.

  • Плагин eclipse в порядке, если вы хотите работать самостоятельно, но если вы хотите работать в большой команде с плагином eclipse, забудьте об этом. Он не обрабатывает синхронизацию с сервером и с него, он выходит из строя и вообще не помогает.

  • НЕТ НИКАКИХ ДЕБЮГЕР! Если вы хотите отлаживать, он буквально отлаживается операторами system.debug. Это, вероятно, самая большая проблема, которую я нашел

  • Их модель "MVC" на самом деле не MVC. Это намного ближе к ASP.NET Webforms. Ваши взгляды тесно связаны не только с моделями, но и с контроллерами.

  • Хранение большого количества документов не представляется возможным. Нам нужно хранить более 100 гб документов, и мы цитировали какую-то смешную цифру. Мы решили внедрить наше хранилище документов на инфраструктуру амазонок S3

  • Даже язык java основан, это не java. Вы не можете импортировать какие-либо внешние пакеты или библиотеки. Также доступные базовые библиотеки сильно ограничены, поэтому мы обнаружили, что реализуем кучу материалов извне, а затем раскрываем эти биты в качестве сервисов, которые вызываются force.com.

  • Вы можете звонить внешним службам SOAP или REST, но тело сообщения ограничено 100 КБ, поэтому оно очень ограничивает то, что вы можете назвать.

Всем честно, хотя есть потенциальные преимущества для разработки на чем-то вроде платформы force.com, для меня вы не могли использовать платформу force.com для приложений на уровне реального уровня. В лучшем случае вы могли бы написать некоторые базовые приложения с красным стилем, но как только вы перейдете во что-то более сложное, я бы избегал его, как чуму.

Ответ 4

Ничего себе, здесь много чего я даже не знал, были ограничения - после работы на платформе в течение нескольких лет.

Но просто добавим другие вещи...

Причина, по которой у вас нет по очереди отладчика, - это именно то, что это платформа с несколькими арендаторами. По крайней мере, то, что говорит SFDC - похоже, в этот век программирования, богатого потоками, это не слишком оправдание, но это, по-видимому, причина. Если вам нужно писать код, у вас есть "System.debug(String)" в качестве вашего отладчика. Я помню, что более 12 лет назад были созданы более сложные средства отладки сервера в Java 1.2.

Еще одна вещь, которую я действительно ненавижу в системе, - это контроль версий. Рамка Spring не используется для того, для чего обычно используется Spring - это действительно больше от инструмента конфигурации в SFDC, а не контроля версий. SFDC обеспечивает управление версией ZERO.

Вы можете найти себя в течение нескольких дней, делая что-то, что должно показаться настолько смехотворным, как, скажем, планирование отчета SFDC для экспорта в CSV файл и отправки по электронной почте списку получателей... Ну, про самый простой способ создайте пользовательский объект с настраиваемым полем, с правилом рабочего процесса и шаблоном электронной почты Visualforce..., а затем для кода вам нужно написать компонент Visualforce, который передает данные отчета в шаблон электронной почты Visualforce в качестве вложения, и вы написать анонимное поле расписания кода APEX-обновление пользовательского объекта... Для разработчиков SFDC это почти ежедневная задача... попытка объединить пять разных технологий для выполнения задач, которые кажутся такими простыми.... И это может вызывают также головные боли и напряженность управления. Как правило, вы узнаете об этом после получения предложения сделать что-то, что не работает в пользовательском сообществе (например, кто-то уже сказал), а затем пробовать много вещей, которые после их разработки вы обнаружите, что они просто не работают мне нечетная причина - например, "вы не можете запланировать страницу VisualForce", или "вы не можете вызвать getContent из планируемого контекста" или какой-либо другой тайной причине.

На платформе SFDC существует так много, много безумных мазков, что, когда вы знаете, ПОЧЕМУ они там, это имеет смысл... но они все еще очень плохие ограничения, которые мешают вам делать то, что вам нужно делать. Вот некоторые из моих;

  • Вы не можете получить информацию о владельце записи "из коробки" практически в любой записи - вам нужно написать триггер, который связывает владельца при создании записи с записью, которую вы вставляете, Зачем? Короткий ответ, потому что владелец может быть либо "человеком", либо "очередью", а два являются совершенно разными сущностями... Имеет смысл, но он может превратить проект буквально вверх ногами.

  • Модель безопасности Maddening. Пример: разрешение "Управление общедоступными отчетами" значительно отличается от "Создание и настройка отчетов", и это в основном относится ко всему на платформе... особенно к папкам любого типа.

  • Как уже упоминалось, поддержка в основном отсутствует. Если вы очень самодостаточный человек или имеете много ресурсов SFDC или имеете много времени и/или очень прощающего менеджера, или отвечаете за систему SFDC, которая работает нормально, вы в хорошем состоянии форма. Если вы не находитесь ни в одной из этих позиций, вы можете оказаться в глубоких неприятностях.

SFDC - очень соблазнительное деловое предложение... отсутствие следа оборудования, довольно хорошая безопасность, фиксированная цена, отсутствие инфраструктуры, И вы получаете интернет-CRM с возможностью пакетной обработки и обработки данных... Но, как говорили другие плакаты, это действительно довольно быстрый рост в обучении развитию, и если вы идете на консультацию, я думаю, что самая низкая цена, которую я видел, составляла 200 долларов США в час.

Salesforce стремится интегрироваться с другими вещами через несколько лет после того, как некоторые технологии становятся обычным - JSON и jquery приходят на ум... и если у вас есть другие общие инфраструктуры, с которыми вы хотите интегрироваться, например JIRA, много дополнительно, и они могут быть довольно глючными.

И как один из других упомянутых плакатов, вы постоянно боретесь с ограничениями губернатора, которые могут просто привести вас в орехи... вложение НЕ МОЖЕТ быть > 5 МБ. Период. И иногда < 3 МБ (если кодировка base64). Десять выносок HTTP в классе. Период. Есть десятки опубликованных ограничений губернатора, и многие из них не являются тем, что вы, несомненно, найдете и просто хотите выбежать из своего офиса, крича.

Я действительно, ДЕЙСТВИТЕЛЬНО люблю платформу, но поверьте мне - это может быть одна действительно жестокая любовница.

Но, справедливости ради SFDC, я бы сказал следующее: самая большая проблема, которую я нахожу на платформе, - это не сама платформа, но гигантские ожидания, которые почти каждый, кто видит платформу, но не развился на ней, имеют.... и эти люди, как правило, занимают большие позиции в деловых организациях; маркетинг, продажи, управление и т.д. Огромные разъединения происходят, и голова рулит, или им грозит рулон каждый день - все потому, что там эта великолепная платформа там с странными gotchas и тысячами людей ежедневно изо всех сил пытается понять, почему все должно работать, когда они просто не делают и не будут.

EDIT:
Просто добавьте комментарии lomaxx о MVC; В терминологии SFDC это тесно связано с тем, что известно как "viewstate" - и это может быть действительно ошибкой, поскольку то, что находится на странице VF, не является тем, что находится в классе контроллера для страницы. Итак, вам нужно пройти через странные колебания, чтобы синхронизировать содержимое страницы с тем, что контроллер собирается написать в SF, когда вы нажмете кнопку "Сохранить" (или сделайте свою настройку HTTP или что-то еще).... человек, это раздражает.

Ответ 5

Я думаю, что другие люди освещали недостатки более подробно, но для меня это, похоже, не использует парадигму MVC или не поддерживает много способов повторного использования кода. Чтобы сделать что-либо помимо простых приложений, это упражнение в расстройстве по сравнению с разработкой приложения с использованием чего-то вроде ASP.Net MVC.

Кроме того, инструменты, уровень данных и разочарование в попытке перекомпоновки кода или переименования полей в процессе разработки не помогают.

Я думаю, что CMS это довольно круто, но как платформа для приложений без CMS, это не имеет смысла для меня.

Ответ 6

Модель безопасности также очень сильно ограничивает... но это не самая худшая часть. В настоящее время вы не можете утверждать, имеет ли пользователь возможность выполнять определенное действие.

Вы можете проверить, какова их роль, но вы не можете проверить, имеет ли эта роль разрешения для выполнения текущего действия.

Хуже всего ответ от технической поддержки: "Попробуйте действие, и если есть исключение, поймите его"

Ответ 9

Я думаю, они пытаются решить эти проблемы. В dreamforce они упомянули о том, что мы пытаемся сбросить ограничения губернатора только до 4-х. Я не уверен, что это за детали. У них есть REST API для раннего доступа, и они купили героку, которая является рубиновым развитием в облаке. Они разбивают базу данных с помощью database.com, чтобы вы могли выполнять всю свою веб-разработку и свои вызовы db с помощью database.com.

Я думаю, они пытаются сделать это как можно более агностиком. Но прямо сейчас это все объявления и ранний доступ, так как их заявления в Safe Harbor не покупаются по тому, что они говорят, только по тому, что у них есть в настоящее время.