На что похожи Salesforce.com и Apex как платформа для разработки приложений?

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

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

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

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


person mhollers    schedule 14.05.2009    source источник


Ответы (8)


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

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

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

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

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

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

person Ben    schedule 21.12.2009
comment
Я уже давно работаю с отделом продаж и не могу не согласиться с вашим постом. Дошло до того, что мы пишем собственный инструмент развертывания и, возможно, изучаем возможность написания собственных расширений IDE, потому что то, что предлагает force.com, даже близко не соответствует убедительному предложению. - person lomaxx; 05.01.2010
comment
Я хотел бы голосовать за это снова и снова. Девиз Salesforce «Это не программное обеспечение, это Salesforce» полностью вводит в заблуждение, поскольку для выполнения самых основных задач по-прежнему требуется разработчик программного обеспечения и чрезмерное количество времени. Добавьте регулярные платежи, и вся система начнет стоить намного больше, чем она того стоит. - person Jake; 02.04.2010
comment
@Ben Не может быть лучшего ответа, чем этот! - person MnZ; 07.08.2014
comment
Сейчас 6 лет спустя. Все еще так плохо? - person Paul; 17.11.2015

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

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

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

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

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

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

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

person lomaxx    schedule 05.01.2010

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

person user243657    schedule 05.01.2010

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

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

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

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

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

person Pauli Price    schedule 13.10.2009

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

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

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

person user286164    schedule 04.03.2010
comment
Конечно, есть приложения, которые работают, и в зависимости от обстоятельств Salesforce может быть подходящим инструментом, но, возвращаясь после еще 10 месяцев разработки на SF, я поддерживаю все, что сказал выше. Проблемы, с которыми сталкивается наш магазин, связаны не с масштабированием пользователей, а с масштабированием данных (которое в нашем приложении не зависит от количества пользователей), масштабированием функций и сложностью. Мне было бы любопытно узнать, каков средний размер ваших приложений. Рад слышать, что это работает, хотя! - person Ben; 14.10.2010

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

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

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

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

Мое прозвище для платформы «Маленькая легкость», названное в честь камеры пыток 4x4 в Лондоне, где вы не могли вытянуться ни в одном направлении. Вы будете постоянно упираться в лимиты.

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

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

person dt.    schedule 26.04.2010

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

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

person Ólafur Waage    schedule 14.05.2009
comment
Коматюрьма .Net действительно была направлена ​​на сбор мнений, сравнивающих ее с SalesForce как платформой разработки RAD, а не на взаимодействие с SF через .Net, что, я знаю, вы можете сделать. На самом деле я был весьма впечатлен инструментами разработки: вы бесплатно получаете множество пользовательских интерфейсов, которые можно разработать в браузере с возможностью перехода в Eclipse для более глубокого изучения Apex. Это всего лишь вопрос того, как быстро вы попадаете в «пограничные» случаи. - person mhollers; 14.05.2009

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

person Brad Thomas    schedule 06.03.2014