Salesforce中的RemoteAction和webService

Salesforce中,如果想要从Visualforce Page进行数据异步获取时,RemoteAction和webService两种方式都值得考虑。

本文将共享RemoteAction和webService的使用方法以及二者的差别。

RemoteAction

通过RemoteAction可以调用Apex类的函数,并进行返回数据的回调。(这也是@RemoteAction与<apex:actionFunction>的差别之处,详细参考这里)
@RemoteAction的函数必须声明为static以及global或public。
以下是RemoteAction示例代码。

RemoteActionDemo.page

RemoteActionDemoCls.cls

Response

webService

使用webService(Apex in AJAX)必须在页面上引入Ajax Toolkit类库支持。
webService函数必须声明为static且所在Apex类必须声明为global。 这里是webService的示例代码

WebServiceDemo.page

WebServiceDemoCls.cls

Response

RemoteAction和webService使用上的差别

1. webService不单单可以调用Page的Controller,还可以调用到其他Apex Class,因此Apex入口可写成共通类及函数。
2. 使用webService时将会消耗API请求数。RemoteAction则不消耗。
3. 使用webService时,函数所在的Apex类必须声明为global