Вопрос

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

Это было полезно?

Решение

Вот 10 для начала.

  1. Apex — это собственный язык.Помимо плагина Eclipse Force.com, инструментов для рефакторинга, анализа кода и т. д. практически нет.
  2. Apex был создан на основе Java 5, которая считается отстающей от других языков и без инструментов (см. № 1) может быть довольно громоздкой.
  3. Развертывание по-прежнему выполняется вручную с множеством ошибок и действий, выполняемых вручную.Эта ситуация со временем постепенно улучшается, но вы будете разочарованы, если привыкли к автоматическому развертыванию.
  4. В Apex отсутствуют пакеты/пространства имен.Все ваши классы, интерфейсы и т. д.живут в одной папке на сервере.Это делает код гораздо менее организованным, а имена классов/интерфейсов обязательно длинными, чтобы избежать конфликтов имен и обеспечить контекст.Это одна из моих самых больших претензий, и я бы не стал добровольно использовать Force.com только по этой причине.
  5. «force.com IDE», также известный как плагин Force.com eclipse, невероятно медленный.Сохранение любого файла, будь то файл классов, текстовый файл и т. д., обычно занимает не менее 5 секунд, а иногда и до 30 секунд в зависимости от количества объектов, типов данных, файлов классов и т. д.находятся в вашей организации.Сохранение также является блокирующим действием, требующим не только компиляции, но и полной синхронизации вашего локального проекта с сервером.На порядки медленнее, чем Java или .NET.
  6. Сообщество онлайн-разработчиков выглядит не очень здоровым.Я заметил, что многие сообщения на форуме остаются без ответа или нерешенными.Я думаю, что это может быть как-то связано с программным обеспечением для форумов, которое использует Salesforce.com, которое, похоже, довольно отстойное.
  7. DSL доступа к данным в Apex оставляет желать лучшего.Он даже отдаленно не конкурирует с такими, как (N)Hibernate, JPA и т. д.
  8. Разработка приложения на Apex/VisualForce — это упражнение по разработке ограничений регулятора.Почти половина времени программистов тратится на оптимизацию, чтобы избежать многочисленных ограничений регулятора и других ошибок, таких как ограничения состояния представления Visualforce.Можно возразить, что если вы с самого начала напишете эффективный код, у вас не возникнет этой проблемы, и это в некоторой степени верно.Однако во многих случаях у вас есть веские причины выполнять более x запросов в сеансе или перебирать более x записей и т. д.
  9. Цикл сохранения->компиляция->выполнение очень медленный, особенно.когда это включает в себя архивирование и загрузку всего пакета статических ресурсов только для того, чтобы сделать что-то вроде проверки незначительного изменения CSS или JavaScript.
  10. В общем, боль молодой, молодой платформы без преимуществ открытого исходного кода.У вас нет возможности проверять и/или исправлять ошибки на платформе.Они говорят опубликовать это на их IdeaExchange.Да, удачи с этим.

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

  1. Там нет RESTful API.У них есть API на основе мыла, к которому вы можете обращаться, но нет возможности совершать настоящие спокойные вызовы.

  2. Не существует простого способа взять их объекты SObject и преобразовать их в объекты JSON.

  3. Страницы визуальной силы — это нормально, пока вы не захотите их настроить, а тогда это целый мир боли.

  4. Страницы Visual Force должны быть привязаны к объектам SObject, иначе невозможно заставить работать стандартные поля ввода, такие как средство выбора даты или список выбора.

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

  6. ОТЛАДЧИКА НЕТ!Если вы хотите отладить, это буквально отлаживается с помощью операторов system.debug.Это, наверное, самая большая проблема, которую я нашел

  7. Их модель «MVC» на самом деле не MVC.Это намного ближе к веб-формам ASP.NET.Ваши представления тесно связаны не только с моделями, но и с контроллерами.

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

  9. Несмотря на то, что язык основан на Java, это не Java.Вы не можете импортировать какие-либо внешние пакеты или библиотеки.Кроме того, доступные базовые библиотеки сильно ограничены, поэтому мы реализовали кучу вещей извне, а затем представили эти биты как сервисы, вызываемые Force.com.

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

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

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

Но просто добавим еще кое-что...

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

Еще одна вещь, которую я действительно ненавижу в этой системе, — это контроль версий.Фреймворк Spring не используется для того, для чего обычно используется Spring — на самом деле это скорее инструмент конфигурации в SFDC, чем контроль версий.SFDC обеспечивает НУЛЕВОЙ контроль версий.

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

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

  1. Вы не можете получить информацию о владельце записи «из коробки» практически для любого типа записи — вам нужно написать триггер, который связывает владельца при создании записи с записью, которую вы вставляете.Почему?Короткий ответ, потому что владельцем может быть либо «человек», либо «очередь», и это совершенно разные сущности...Это имеет смысл, но может перевернуть проект буквально с ног на голову.

  2. Сводящая с ума модель безопасности.Пример:Разрешение «Управление публичными отчетами» сильно отличается от разрешения «Создание и настройка отчетов», и оно в основном распространяется на все на платформе...особенно папки любого типа.

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

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

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

И, как упоминалось в одном из других плакатов, вы постоянно боретесь с губернаторскими ограничениями, которые могут просто свести вас с ума...размер вложения НЕ может превышать 5 МБ.Период.А иногда <3 МБ (при кодировке Base64).Десять HTTP-вызовов в классе.Период.Существуют десятки опубликованных ограничений губернатора, и многие из них не соответствуют действительности, и вы, несомненно, обнаружите их, и вам просто захочется с криком выбежать из офиса.

Мне ОЧЕНЬ, ОЧЕНЬ нравится платформа, но поверьте мне – это может быть очень жестокая хозяйка.

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

РЕДАКТИРОВАТЬ:
Просто добавлю к комментариям lomaxx о MVC;В терминологии SFDC это тесно связано с так называемым «состоянием просмотра» — и оно может быть действительно ошибочным, поскольку то, что находится на странице VF, нет что находится в классе контроллера страницы.Итак, вам придется совершить странные действия, чтобы синхронизировать то, что на странице, с тем, что контроллер собирается записать в SF, когда вы нажимаете кнопку «Сохранить» (или делаете HTTP-вызов или что-то еще).чувак, это раздражает.

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

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

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

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

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

Еще хуже ответ техподдержки: «Попробуйте выполнить действие, и если возникнет исключение, поймайте его».

Учитывая, что Force.com является «облачной» платформой, ее способность выступать в качестве клиента для внешней службы, определенной WSDL, весьма разочаровывает.Видеть http://force201.wordpress.com/2010/05/20/when-generate-from-wsdl-fails-hand-coding-web-service-calls/ за то, что вам, возможно, придется сделать.

Ко всему вышесказанному мне любопытно, как выпуск VMforce, позволяющий Java-программистам писать код для Force.com, меняет вышеуказанные недостатки?

http://www.zdnet.com/blog/saas/vmforcecom-redefines-the-paas-landscape/1071

Я думаю, они пытаются решить эти проблемы.В Dreamforce упомянули, что мы пытаемся снизить лимит губернатора до 4.Я не уверен, каковы детали.У них есть REST API для раннего доступа, и они купили Heroku — облачную разработку Ruby.Они разделили базу данных на data.com, так что вы можете выполнять всю свою веб-разработку и выполнять вызовы к базе данных, используя базу данных.com.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top