Что такое salesforce.com и Apex как платформа для разработки приложений? - PullRequest
36 голосов
/ 14 мая 2009

Я недавно обнаружил, что salesforce.com - это больше, чем онлайн CRM, после того, как он наткнулся на пример Моррисона , в котором они разрабатывают приложение для управления работами. Я пробовал это с целью воссоздать нашу собственную систему управления работами на платформе.

Мой опыт работы в Microsoft и .Net, и очевидным первым выбором будет asp.net. Тем не менее, есть только я с опытом работы .net и мой менеджер с более унаследованным опытом программирования Synergy, и я самоучка и смотрю на оценку других вариантов RAD (например, Ironspeed).

характер бизнеса заключается в основных 2-5 одновременных контрактах на строительство, которые заключаются на 3-5 лет каждый, каждый из которых требует 15-50 системных пользователей. Традиционно мы использовали нашу систему Works Mangement для персонажей и настраивали ее для каждого контракта. Модель лицензирования Salesforce сама по себе подходит для такой гибкости, но меня беспокоит кривая гибкости разработки / обучения и все проблемы, связанные с блокировкой. Похоже, что в Интернете нет достаточно нейтрального трезвого анализа платформы, который не является собственным материалом / блогами Salesforce

Есть ли у кого-нибудь опыт разработки приложения для Salesforce по сравнению с более «традиционным» .Net маршрутом?

Ответы [ 8 ]

50 голосов
/ 22 декабря 2009

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

Ограничения регулятора действительно очень жалкие: 16 уровней рекурсии, куча 1 мегабайта, не более 200 объектов, возвращаемых из запроса, не более 20 запросов за один вызов. 10 веб-выносок в одном вызове, 1000 элементов в одном списке, и они продолжаются. Конечным результатом является то, что любой ум, который вы придумаете, чтобы обойти один предел, идет вразрез с другим.

Как только вы достигнете определенного размера, все ваше время будет потрачено на программирование в обход этих ограничений. Язык, Apex, на самом деле не поддерживает никакого значимого наследования. Даже на первый взгляд простые задачи заканчиваются днями, когда сталкиваются с новыми и явно произвольными ограничениями, например, все объекты в Apex наследуются от SObject; тем не менее, не разрешается создавать коллекцию универсальных SObject s, что делает практически невозможным создание полезных служебных библиотек. Сложные (даже довольно простые) объединения баз данных невозможны.

Инструменты и поддержка Salesforce также крайне слабы. Они ненадежны и сложны в использовании для реальных процессов разработки. Развертывание - это кошмар, так как инструментам очень трудно решать сложные проблемы с зависимостями, и многочисленные объекты, которые будут созданы в ходе обычной разработки, просто НЕ МОГУТ быть развернуты программно. Другие мелкие функции также восхитительны, например, тот факт, что язык нечувствителен к регистру, но IDE чувствителен к регистру. Нет никаких инструментов рефакторинга, о которых можно говорить, поэтому вы получаете всю боль от статически типизированного языка, без каких-либо предполагаемых преимуществ. И время сохранения / компиляции велико - я вижу частоту более 2 минут. И, конечно, если у вас есть несколько ошибок компиляции в одном сохранении (и вы будете, так как вы не захотите перекомпилировать каждое изменение с этими 2-минутными ожиданиями ...), вы получите только одну ошибку за раз !

В связанной заметке вы, похоже, заметили, что документация Salesforce довольно самодовольна - ну, это как раз ВСЕ вниз. Нет нигде упоминания даже в самых глубоких технических ссылках на распространенные ошибки или даже на ограничения данного API или функции. Это все «вот что ты можешь сделать», и не упоминать о нем, «но ты бы мог подумать, что это тоже будет ___, но ты ошибаешься! Документация действительно похожа на маркетинговый материал. Я программирую в этой среде уже 18 с лишним месяцев, и до сих пор иногда трудно найти основы, такие как справочник по API.

Salesforce не является гибкой средой. Это не среда быстрой разработки (по крайней мере, по сравнению с любой другой платформой веб-программирования). Это плохая среда для создания чего-либо, кроме игрушечных приложений, подобных тем, которые они показывают в своих уроках. Просто скажи нет.

12 голосов
/ 05 января 2010

Я знаю, что эти вопросы немного устарели, но также стоит посмотреть на этот вопрос Недостатки платформы Force.com

Я некоторое время разрабатывал платформу и не мог больше согласиться с Беном. В «платформе разработки», которая является force.com, так много неправильного, что я даже не думаю, что будет справедливо называть ее платформой разработки.

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

Главное, что я хочу сказать, это то, что salesforce начинали как CRM, а затем решили добавить «облачную платформу» в свое предложение. Облачная платформа, тем не менее, в значительной степени ориентирована на расширение своего продукта CRM, и если то, что вы хотите сделать, это расширить CRM, то среда force.com позволит вам сделать это красиво.

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

Кроме того, кто-то еще упомянул, что это "на основе Java". Это не значит, что вы можете запустить там Java-код. Это означает, что они украли некоторые куски Java и убили его, чтобы он выглядел как Java, но на самом деле это не так ... что очень раздражает, потому что вы не можете просто взять набор библиотек Java и импортировать их в свое облако ... так что если вы хотите сделать что-то вроде анализа JSON ... вы сами напишите это.

В общем, я бы избегал платформы force.com, как чумы.

9 голосов
/ 05 января 2010

Послушай, Бен. Нет, правда. Послушай, Бен. Salesforce - это абсолютный мир боли. Единственное, что хорошо в Salesforce - это их маркетинговая команда.

8 голосов
/ 13 октября 2009

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

Код Apex основан на Java, с отличиями в зависимости от платформы. Тем не менее, некоторые вещи не могут быть сделаны с помощью кода. Сочетание декларативной (экранной) и кодовой реализации, необходимой для создания законченного приложения, поначалу сложно обернуть вокруг себя.

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

Развертывание вашего приложения - это совсем другой опыт.

Ознакомьтесь с обучением для разработчиков (Dev 501), которое доступно в виде видеоподкаста на iTunes: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=325668840 Вы сможете точно понять, о чем я говорю.

6 голосов
/ 04 марта 2010

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

Для меня была кривая обучения, и она была разочаровывающей (исходя из фона Java). Синтаксис был похожим, но парадигма очень разная. После небольшого сражения мне удалось создать приложения, используемые десятками тысяч пользователей, которые отлично масштабируются, просты в управлении и безопасности, и включают в себя почти все традиционные архитектуры программирования, которые в настоящее время используются, включая основы OOP, MVC и многие из других шаблонов дизайна «Банды четырех».

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

3 голосов
/ 27 апреля 2010

Смотрите мой ответ в другой ветке stackoverflow: Недостатки Force.com:

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

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

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

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

Вот и старая запись в блоге:

http://suprablog.com/index.php/2010/02/25/salesforce-the-astonishingly-powerful-little-ease-platform/

2 голосов
/ 14 мая 2009

Я не разрабатывал на стороне .Net Salesforce, я создал несколько собственных дополнений к очень большой установке Salesforce.

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

1 голос
/ 06 марта 2014

Вы можете делать замечательные и удивительные вещи с помощью Salesforce. Единственная проблема заключается в том, что, по моим оценкам, для многих нетривиальных систем и аналогичных функций общая стоимость владения (всего SDLC) легко в 3-10 раз выше, чем это было бы с dotNET и традиционной СУБД, такой как SQL Server. , Зачем платить столько же за тот же результат?

...