Force.com平台的缺点

时间:2009-11-03 00:07:49

标签: salesforce force.com

我们目前正在考虑使用Force.com平台作为我们的开发平台,销售人员和force.com网站充满了为什么它是世界上最好的平台的原因。但是,我正在寻找的是使用这样一个平台的一些真正的缺点。

9 个答案:

答案 0 :(得分:140)

这里有10个让你入门。

  1. Apex是一种专有语言。除了force.com Eclipse插件之外,几乎没有可用的工具,如重构,代码分析等。
  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. Apex中的数据访问DSL还有很多不足之处。它甚至与(N)Hibernate,JPA等等都没有竞争力。
  8. 在Apex / VisualForce上开发应用程序是州长限制工程的一项练习。程序员时间很少花费一半时间来尝试优化,以避免众多的调控器限制和其他问题,如visualforce查看状态限制。可以说,如果你开始编写有效的代码就不会有这个问题,这在某种程度上是正确的。但是,有很多时候你有充分的理由在会话中创建超过x个查询,或者循环遍历x个以上的记录等。
  9. save-> compile->运行周期非常慢,尤其是当它涉及压缩和上传整个静态资源包时,只是为了测试一个小的CSS或javascript更改。
  10. 一般来说,一个年轻的,刚刚起步的平台的痛苦,没有开源的好处。您无法验证和/或修复平台中的错误。他们说把它发布到他们的IdeaExchange。是的,祝你好运。
  11. 免责声明/披露:托管平台(如force.com)有很多好处。 Force.com会定期增强平台。我喜欢它有很多东西。我在force.com上赚钱

答案 1 :(得分:36)

答案 2 :(得分:24)

在过去两周左右花了相当多的时间在平台上开发后,我可以给你一些东西:

  1. 没有RESTful API。他们有一个基于肥皂的API,你可以打电话,但无法进行真正的休息电话

  2. 没有简单的方法来获取他们的SObject并将它们转换为JSON对象。

  3. 视觉力页面没问题,直到你想要自定义它们然后它是一个痛苦的整个世界。

  4. 视觉强制页面需要绑定到SObject,否则无法获得标准输入字段,如datepicker或select list。

  5. 如果你想独自工作,eclipse插件是可以的,但是如果你想在一个拥有eclipse插件的大型团队中工作,那就忘了它。它不处理与服务器的同步,它崩溃,它根本没有用。

  6. 没有调试人员!如果你想调试,它实际上是由system.debug语句调试的。这可能是我发现的最大问题

  7. 他们的“MVC”模型并不是真正的MVC。它与ASP.NET Webforms更接近。您的视图不仅与模型紧密耦合,还与控制器紧密耦合。

  8. 存储大量文档是不可行的。我们需要存储超过100GB的文件,我们被引用了一些荒谬的数字。我们决定在亚马逊S3基础设施上实施我们的文档存储

  9. 即使该语言是基于java的,它也不是java。您无法导入任何外部包或库。此外,可用的基本库受到严格限制,因此我们发现自己在外部实现了一堆内容,然后将这些内容暴露为force.com调用的服务

  10. 您可以调用外部基于SOAP或REST的服务,但邮件正文限制为100kb,因此您可以调用的内容非常严格。

  11. 说实话,尽管在诸如force.com平台之类的东西上开发有潜在的好处,但对我来说,你无法使用force.com平台来获得真正的企业级应用程序。充其量你可以编写一些基本的crud风格的应用程序,但是一旦你进入任何远程复杂的东西,我就会像瘟疫那样避开它。

答案 3 :(得分:13)

哇 - 在这个平台上工作了几年后,我在这里做了很多事情,甚至不知道是有限制的。

但只是添加一些其他的东西......

您没有逐行调试器的原因正是因为它是一个多租户平台。至少SFDC所说的 - 似乎在这个线程丰富的编程时代,这不是一个借口,但这显然是原因。如果你必须编写代码,你有" System.debug(String)"作为你的调试器 - 我记得大约12年前在Java 1.2中有更复杂的服务器调试工具。

我真正讨厌系统的另一件事是版本控制。 Spring框架并不用于Spring通常用于的内容 - 它实际上更多的是SFDC中的配置工具,而不是版本控制。 SFDC提供ZERO版本控制。

你可能会发现自己几天都在做一些看似非常简单的事情,例如,安排SFDC报告导出到CSV文件并通过电子邮件发送给收件人列表......好吧,关于最简单的方法这是使用自定义字段,工作流规则和Visualforce电子邮件模板创建自定义对象...然后对于代码,您需要编写一个Visualforce组件,将报表数据作为附件流式传输到Visualforce电子邮件模板编写自定义对象的匿名APEX代码调度字段更新...对于SFDC开发人员来说,这几乎是一项日常任务......尝试将五种不同的技术放在一起,以完成看起来如此简单的任务....这可以导致管理上的头痛和紧张 - 通常情况下,在得到建议做一些在用户社区中没有工作的事情(比如已经说过的人)后,你会发现这一点,然后尝试很多事情,在你开发它们之后,你会发现它们只是不#和# 39;为某些奇怪的原因工作 - 比如"你不能安排VisualForce页面"或者#34;你不能从可调度的上下文调用getContent"或其他一些神秘的原因。

在SFDC平台上有很多很多令人抓狂的小问题,一旦你知道为什么他们会在那里,这是有意义的......但他们仍然是非常糟糕的限制,让你不要做你需要做的事。这是我的一些人;

  1. 您无法获得记录所有者信息"开箱即用"几乎任何类型的记录 - 您必须编写一个触发器,将创建记录的所有者链接到您要插入的记录。为什么?简短的回答,因为所有者可以是一个人,也可以是#34;或者"队列",两者是截然不同的实体......有道理,但它可以把项目颠倒过来。

  2. 疯狂的安全模型。示例:"管理公开报告"权限与"创建和自定义报告"有很大的不同。这基本上适用于平台上的所有内容......尤其是任何类型的文件夹。

  3. 如上所述,支持基本上不存在。如果你是一个非常自给自足的人,或者有很多SFDC资源,或者有很多时间和/或非常宽容的经理,或者负责SFDC系统的工作正常,你和# 39;恢复良好状态。如果你不在任何这些职位,你可能会陷入深深的麻烦。

  4. SFDC是一个非常诱人的商业主张......没有设备占地面积,相当好的安全性,固定的价格,没有基础设施,你可以获得基于网络的CRM,具有可混合和可调度的处理......但正如其他海报所说,它在开发学习方面确实非常强大,如果你选择咨询,我认为我看到的最低价格是200美元/小时。

    在一些技术变得普遍之后,Salesforce倾向于与其他东西集成 - JSON和jquery会浮现在脑海中......如果你有其他常见的基础设施,你想要与JIRA进行集成,那么期望付出代价额外的,他们可能很多。

    正如其他提到的海报之一,你经常与州长限制斗争,只能让你疯狂......附件不能> 5MB。期。有时< 3MB(如果是base64编码的)。一个类中的十个HTTP标注。期。有几十个已发布的州长限制,其中许多不是你无疑会发现的,只是想在你的办公室里尖叫。

    我真的,真的很喜欢这个平台,但相信我 - 它可能是一个非常残酷的情妇。

    但为了公平对待SFDC,我这样说:我发现平台最大的问题不是平台本身,而是几乎所有看过这个平台但没有开发的人的巨大期望它已经......并且那些人往往在商业组织中处于极有权威的地位;市场营销,销售,管理等。巨大的断开连接发生并且头部滚动,或者每天都有可能卷起来 - 所有这些都是因为这个伟大的平台出现了奇怪的陷阱,成千上万的人每天都在苦苦挣扎,为什么会这样做应该只是在他们没有做到并且没赢的时候工作。

    编辑:
    只是为了补充lomaxx关于MVC的评论;在SFDC术语中,这与所谓的" viewstate"密切相关。 - 它可能真的很麻烦,因为VF页面上的内容是而不是页面的控制器类中的内容。所以,当你点击你的" save"时,你必须通过奇怪的旋转来同步页面上的控制器将要写入SF的内容。按钮(或制作你的HTTP标注或其他)....男人,这很烦人。

答案 4 :(得分:7)

我认为其他人已经更深入地涵盖了这些缺点,但对我来说,似乎并没有使用MVC范例或者在代码重用方面支持很多。与使用ASP.Net MVC之类的东西开发应用程序相比,除了简单的应用程序之外做任何事情都是一种挫败感。

此外,在开发过程中尝试重构代码或重命名字段的工具,数据层和挫败感也无济于事。

我认为作为CMS它非常酷,但作为非CMS应用程序的平台,对我来说没有意义。

答案 5 :(得分:6)

安全模型也非常严格......但这不是最糟糕的部分。您目前无法断言用户是否具有执行特定操作的能力。

您可以查看其角色是什么,但无法检查该角色是否有权执行当前操作。

更糟糕的是技术支持对“尝试行动的反应,如果有例外,抓住它”

答案 6 :(得分:5)

考虑到Force.com是一个“云”平台,它作为外部WSDL定义服务的客户端的能力相当不足。有关您最终可能需要做的事情,请参阅http://force201.wordpress.com/2010/05/20/when-generate-from-wsdl-fails-hand-coding-web-service-calls/

答案 7 :(得分:3)

对于上述所有内容,我很好奇VMforce的发布,允许Java程序员为Force.com编写代码,如何改变上述缺点?

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

答案 8 :(得分:3)

我猜他们正试图解决这些问题。在dreamforce他们提到他们我们试图将州长的限制降到只有4.我不确定细节是什么。他们有一个REST API用于早期访问,他们购买了heroku,这是云中的ruby开发。他们使用database.com拆分数据库,这样您就可以使用database.com进行所有Web开发和数据库调用。

我猜他们正试图让它尽可能不可知。但就目前而言,这些都是公告和早期访问,因此他们的安全港声明不会按照他们所说的内容购买,而只是购买他们现有的内容。