Cloud Development Constraints

DEX455 - Apex 开发入门指南

📄 第 27 页 🎬 视频课程

课程章节介绍

同学们,我们这节课来聊一聊Apex的一些能力边界。你可能刚接触Apex的时候会觉得,它是一门编程语言,是不是什么都能干呢?其实不是的。Salesforce对Apex有一系列很重要的限制,这些限制恰恰体现了它作为云端多租户平台上业务逻辑语言的设计哲学。 首先,Apex不能用来在用户界面上随意渲染元素。如果你想让页面上多出一个按钮、一块文字或者一个图表,Apex是做不了的。它唯一能推送到界面上的,是错误消息。就是当你的代码发现问题时,可以给用户显示一条提示,仅此而已。真正的界面构建,你要去用Visualforce、Lightning组件或者屏幕流这些工具。 其次,Apex不能修改或者覆盖Salesforce的标准功能。比如系统自带的保存按钮,它的核心行为你是无法用Apex直接改掉的。但是,你可以用Apex来阻止某个操作发生,比如在记录保存前检查条件并抛出错误,不让它保存;或者你也可以在标准功能的前后插入额外的逻辑,比如保存成功后发邮件、更新相关记录。也就是说,你只能做“附加动作”,不能去改写系统原本的底层机制。 再者,Apex不能创建临时文件。你没办法在Apex里操作服务器的文件系统,生成一个文件存到临时目录再去处理。如果你想生成文件,比如PDF或CSV,你需要用专门的工具,比如通过Visualforce渲染成PDF,或者把数据拼接好后以附件、文档的形式存到Salesforce里。 最后,Apex不能产生线程。在传统的编程里,我们可能会开多个线程同时处理任务,但Apex不允许这样做。所有的执行都是同步的、单线程的。如果需要异步处理,你可以使用Apex中的异步特性,比如未来的方法、队列、批处理,但这些本质上仍然是Salesforce平台管理下的异步执行,并不是你创建的操作系统线程。 那为什么会有这些限制呢?这就得说到Salesforce的架构了。它是一个多租户的云平台,成千上万的客户共享相同的底层资源。如果任由每个Apex代码自由操作界面、修改核心功能、读写文件系统或者随意开启线程,很容易影响整个平台的稳定、安全和性能。所以Apex被定位成一门专注于业务逻辑的语言:它只负责数据查询、计算、流程控制,把界面、文件、并发这些复杂的任务交给平台的其他部分。这样大家写出的代码更安全可控,平台也能为所有租户提供一致、稳定的服务。 理解这些边界很重要,它能帮你避开很多设计上的误区,让你更顺畅地在Salesforce平台上写出高效、合规的代码。好,这节课就到这里,下节课我们继续深入。

关键词

Apex Salesforce Developer Guide