salesforce.com和Apex是一个什么样的应用程序开发平台?

最近我发现salesforce.com不仅仅是一个在线客户关系pipe理(CRM),而是在他们开发了一个工作pipe理应用程序的Morrison 案例研究之后。 我一直在试图在平台上重新创build我们自己的Workspipe理系统。

我的背景是在微软和.Net,明显的第一select将是asp.net。 然而,只有真正的我自己有.net的经验,我的经理有更多的Synergy编程背景,而且我自学成才,正在评估其他RAD选项(例如Ironspeed)。

业务性质主要在2-5个并存的build设types的合同中,每个合同运行3-5年,每个需要15-50个系统用户。 传统上,我们已经使用了基于angular色的Works Mangement系统来完成每个合同。 表面上的Salesforce授权模式适合这种灵活性,但是我担心开发的灵活性/学习曲线以及围绕locking的所有问题。 对于networking上不是Salesforce自己的材料/博客的平台,似乎没有太多中立的冷静分析

有没有人比任何“传统”.Net路线开发销售人员应用程序的经验?

除了最简单的应用程序之外,Salesforce是一个相当痛苦的开发经验。 Salesforce有一个非常明确的想法,想要开发什么,如果你的应用程序不在这些范围内,请转向明确!

州长限制真的很可怜:16级recursion,1兆堆,查询返回不超过200个对象,在一次调用中不超过20个查询。 一个调用中有10个Web标注,单个列表中有1000个项目,然后继续。 最终的结果是,你想出的任何巧妙的方法来绕过一个限制与另一个限制相违背。

一旦你达到一定的规模,所有的时间都将花在编码这些限制上。 语言Apex并不真正支持任何有意义的inheritance。 即使看起来很简单的任务最终也会花费数天的时间,遇到新的,显然是任意的限制,例如,Apex中的所有对象都inheritance自SObject ; 但是,不允许实例化一个通用的SObject集合,这使得构build有用的实用程序库几乎是不可能的。 复杂(甚至相当简单)的数据库连接是不可能的。

Salesforce的工具和支持也非常薄弱。 它们不可靠,难以用于真正的开发过程。 部署是一个噩梦,因为这些工具在处理复杂的依赖性问题时有很大的困难,并且在正常开发过程中创build的许多实体不能以编程方式进行部署。 其他一些小function也很令人愉快,例如语言不区分大小写,但IDE区分大小写。 没有任何重构工具可以说,所以你可以得到一个静态types语言的所有痛苦,没有任何好处。 并且保存/编译时间是高频我看到超过2分钟的时间。 当然,如果你在一次保存中有多个编译错误(你会的,因为你不想重新编译每一个变化,那么等待2分钟…),你一次只能得到一个错误!

在相关说明中,您似乎已经注意到,Salesforce文档是相当自我祝贺的 – 好吧,就像是一路下滑。 甚至在常见错误的最深黑暗的技术参考,甚至给定的api或特征的局限中,都没有提及。 这一切都是“你能做的伟大的事情”,而且没有提及,“但是你会想象它也会做___,但是你会错的!错误的! 文档真的感觉就像营销材料一路下滑。 我已经在这个环境中进行了18个多月的编程,偶尔也很难find像API参考这样的基础知识。

Salesforce不是一个灵活的环境。 这不是一个快速发展的环境(至less与其他networking编程框架相比)。 除了在教程中展示的玩具应用程序之外,build立其他任何东西都不是一个好的环境。 拒绝吧。

我知道这个问题有点老,但也值得看看这个问题Force.com平台的缺点

我一直在这个平台上开发一段时间,我不能同意本。 force.com的“开发平台”有太多的错误,我认为把它称为开发平台是不公平的。

我们一直在努力支持工具,这是可怕的,部署支持,这是可怕的,甚至他们的技术支持,你猜对了,可怕的。

我想要做的主要观点是,销售人员首先是一个CRM,然后他们决定将“云平台”添加到他们的产品中。 云计算平台很大程度上是为了扩展他们的CRM产品,如果你想做的是扩展CRM,那么force.com环境会让你做得很好。

它不会让你做的很好,是沟渠他们的客户关系pipe理,让你轻松地build立自己的完全自定义的应用程序。 您仍然被绑定到他们的安全和用户模型中,您的数据库中仍然有标准对象,并且您的生产环境中仍然会有标准页面。 可以这么说,没有“文件 – >新build项目”。

另外,别人提到它是“基于java”的。 这并不意味着你可以在那里运行java代码。 这意味着他们已经窃取了一些Java的东西,并且把它看作是java,但实际上并不是真的很烦人,因为你不能只抓取一组Java库并将其导入云中。所以如果你想做类似parsingJSON的事情…你会自己写这个。

Ovearall,我会避免像瘟疫一样的force.com平台。

听本。 不完全是。 听本。 Salesforce是一个绝对的痛苦世界。 Salesforce的唯一好处是他们的营销团队。

我无法真正地告诉你有多快,你会碰到边缘情况 – 但我可以告诉你,这是不同于我做过的任何其他发展。 创build可行解决scheme所需的实施时间以及快速迭代业务赞助商评估解决scheme的能力是我所经历的任何环境无法比拟的。

Apex代码基于Java,具有平台特定的差异。 但是有些东西不能通过代码完成。 声明性(基于屏幕的)和基于代码的实现相结合,创build一个完整的应用程序很难一开始就包住你的头。

由于环境的多租户性质,“省长限制”阻止资源被单个组织垄断。 这限制了你的实现选项,比如插入和更新触发器。

部署应用程序也是一个非常不同的体验。

查看开发人员培训(Dev 501),可在iTunes上观看video播客: http : //itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=325668840您将可以看到我的“我在说什么

看来这里的大多数答案都是消极的,我想说责怪一个平台比指责自己的经验要容易得多。

对我来说有一个学习曲线,这是令人沮丧的(来自Java背景)。 语法是相似的,但范例非常不同。 经过一番争斗之后,我已经成功地构build了成千上万的用户所使用的应用程序,这些应用程序的规模完美,易于pipe理和安全,并且包含了几乎所有的传统编程架构,包括OOP,MVC和许多其他的“四人帮”devise模式。

如果您希望我指出您在示例代码的方向,或在平台上构build的macros大应用程序,我很乐意为您提供帮助。

看到我的答案在另一个stackoverflow线程:Force.com的缺点:

Force.com平台的缺点

我最近回答,即使线程太旧了,因为我只是想借此机会来讨论平台有多烦人。 那些想法是非常现代的。

我build议,如果您计划在平台上做任何事情,请确保您的一些团队成员获得Apexauthentication。 一般来说,我会强烈build议完全避免使用这个平台,直到他们认真地解决开发者的经验问题,并且在那里有特定和非常简单的商业案例。

我对这个平台的绰号是“小小易”(Little Ease),以伦敦一个4×4的折磨室命名,在那里你不能向任何一个方向延伸。 你会不断地达到极限。

这也是一个较旧的博客文章:

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

我还没有在Salesforce的.Net一侧开发,我创build了一些内部增加到一个非常大的Salesforce安装。

我可以说的是,系统内部的开发工具可能会让人困惑,而且我在开发时遇到的最大瓶颈就是为我想要的查询获得正确的语法。 (警告,这是在2007年)

您可以使用Salesforce完成伟大而惊人的事情。 唯一的问题是,在我估计的许多非平凡的系统和类似function的总体拥有成本(整个SDLC)比使用dotNET和像SQL Server这样的传统RDBMS容易3-10倍。 为什么付出更多的相同的结果呢?