Click or drag to resize

IOperationServiceCallExternalOperationTRequest, TResponse(Int32, String, String, TRequest, ITerminal, SerializationBinder, ISurrogateSelector) Method

Calls an operation which is implemented in another plugin.

Namespace: Resto.Front.Api
Assembly: Resto.Front.Api.V8 (in Resto.Front.Api.V8.dll)
Syntax
C#
TResponse CallExternalOperation<TRequest, TResponse>(
	int pluginModuleId,
	string serviceName,
	string operationName,
	TRequest request,
	ITerminal terminal = null,
	SerializationBinder binder = null,
	ISurrogateSelector surrogateSelector = null
)

Parameters

pluginModuleId  Int32
Licensable module identifier of the plugin to be called. That module id have to be pre-shared with consumer plugins.
serviceName  String
Name of the external service which is implemented in another plugin. That name have to be pre-shared with consumer plugins.
operationName  String
Name of the external operation which is implemented in another plugin and have been registered using RegisterExternalOperationTRequest, TResponse(String, String, FuncValueTupleTRequest, String, Int32, Guid, TResponse, SerializationBinder, ISurrogateSelector). That name have to be pre-shared between producer and consumer plugins.
request  TRequest
The data which will be transferred as an incoming argument into the external operation.
terminal  ITerminal  (Optional)
Terminal for executing the external operation remotely. Leave it null to execute the operation on the local terminal.
binder  SerializationBinder  (Optional)
A serialization binder for custom mapping between types and names. Default is null.
surrogateSelector  ISurrogateSelector  (Optional)
The ISurrogateSelector to use for serialization. Default is null.

Type Parameters

TRequest
TResponse

Return Value

TResponse
Response returned by the producer plugin.
Exceptions
ExceptionCondition
ExternalOperationCallingExceptionWhen an external operation calling or execution throws any kind of exception, caller receives the ExternalOperationCallingException with original message and reason. Orignal stacktrace can be found in api.log.
Remarks
Different plugins running under the same Syrve POS application instance can communicate via external operations. Syrve POS just transfers requests and responses between plugins without knowing any details. Both producer and consumer plugins should understand the data structure, developers should negotiate a protocol specification, pre-share operation names, handle versioning and so on. Producer plugin registers an operation using RegisterExternalOperationTRequest, TResponse(String, String, FuncValueTupleTRequest, String, Int32, Guid, TResponse, SerializationBinder, ISurrogateSelector) and consumer plugin call it using CallExternalOperationTRequest, TResponse(Int32, String, String, TRequest, ITerminal, SerializationBinder, ISurrogateSelector).
See Also