Inherits: Container
Description
The AzureFunction class allows you to create an Abstract Azure Function that acts as a container to instantiate and run components and expose them via an external entry point.
Importan points
-
When handling calls, the “cmd” parameter determines the action that shall be called, while the other parameters are passed to the action itself.
-
The container configuration for this Azure Function is stored in "./config/config.yml" file. But this path can be overriden by CONFIG_PATH environment variable.
References
- *:logger:*:*:1.0: (optional) ILogger components to pass log messages
- *:counters:*:*:1.0: (optional) ICounters components to pass collected measurements
- *:controller:azure-function:*:1.0: (optional) IAzureFunctionController controllers to handle action requests.
- *:controller:commandable-azure-function:*:1.0: (optional) IAzureFunctionController controllers to handle action requests.
Constructors
Creates a new instance of this Azure Function.
public
AzureFunction(string name, string description)
- name: string - (optional) container’s name (accessible via ContextInfo)
- description: string - (optional) container’s description (accessible via ContextInfo)
Fields
Instance methods
ExecuteAsync
Executes this Azure Function and returns the result. This method can be overloaded in child classes if they need to change the default behavior
protected
Task<IActionResult> ExecuteAsync(HttpRequest context)
- context: HttpRequest - context the context parameters (or function arguments)
- returns: Task<IActionResult> - the result of the function execution.
GetCommand
Returns command from Azure Function context. This method can be overloaded in child classes
protected
string GetCommand(HttpRequest context)
- context: HttpRequest - Azure Function context.
- returns: string - Returns command from context.
GetTraceId
Returns traceId from Azure Function context. This method can be overloaded in child classes
protected
string GetTraceId(HttpRequest context)
- context: HttpRequest - Azure Function context
- returns: string - Returns traceId from context
GetHandler
Gets entry point into this Azure Function.
public
Func<HttpRequest, Task<IActionResult>> GetHandler()
- returns: Func<HttpRequest, Task<IActionResult>> - plugin function
Instrument
Adds instrumentation to log calls and measure call time. It returns a CounterTiming object that is used to end the time measurement.
protected
CounterTiming Instrument(IContext context, string name)
- context: IContext - (optional) a context to trace execution through a call chain.
- name: string - method name.
- returns: CounterTiming - CounterTiming object to end the time measurement.
InstrumentError
Adds instrumentation to error handling.
protected
void InstrumentError(IContext contextId, string methodName, Exception ex, bool rethrow = false)
- context: IContext - (optional) a context to trace execution through a call chain.
- methodName: string - a method name.
- ex: Exception - Error that occured during the method call.
- rethrow: bool - True to throw the exception.
IsOpen
Checks if the component is opened.
public
bool IsOpen()
- returns: bool - true if the component has been opened and false otherwise.
OpenAsync
Opens the component.
public
Task OpenAsync(IContext context)
- context: IContext - (optional) a context to trace execution through a call chain.
RegisterAction
Registers an action in this Azure Function.
Note: This method has been deprecated. Use AzureFunctionController instead.
protected
RegisterAction(string cmd, Schema schema, Func<HttpRequest, Task<IActionResult>> action)
- cmd: string - a action/command name.
- schema: Schema - a validation schema to validate received parameters.
- action: Func<HttpRequest, Task<IActionResult>> - an action function that is called when action is invoked.
Register
Registers all actions in this Azure Function.
Note: Overloading of this method has been deprecated. Use AzureFunctionController instead.
protected virtual
Register()
RegisterServices
Registers all Azure Function services in the container.
protected
void RegisterServices()
RunAsync
Runs this Azure Function, loads container configuration, instantiate components and manage their lifecycle, makes this function ready to access action calls.
public
Task RunAsync()
SetReferences
Sets references to dependent components.
public override
void SetReferences(IReferences references)
- references: IReferences - references to locate the component’s dependencies.
Examples
class MyAzureFunction : AzureFunction
{
public MyAzureFunction() : base("mygroup", "MyGroup Azure Function")
{
}
}
/// ...
var AzureFunction = new MyAzureFunction();
await AzureFunction.RunAsync();
Console.WriteLine("MyAzureFunction is started");