- tocdepth
2
C#
Встроенный в FunctionGraph редактор кода не поддерживает C#. Чтобы запустить код из примера ниже:
На консоли управления выберите
.Нажмите Create Function.
В выпадающем списке Runtime выберите «C# (.NET Core 3.1)», а в Handler введите «assembly::src.Program::myFunc».
Загрузите архив в FunctionGraph.
Сохраните функцию.
Запустите тест.
Выполняемый код
using HC.Serverless.Function.Common;
using System;
using System.IO;
namespace src
{
class Program
{
static void Main(string[] args) { }
public Stream myFunc(Stream input,IFunctionContext context)
{
//Get function name
string f_name = "Hello world! Function name is " + context.FunctionName;
//Print function name
Console.WriteLine(f_name);
var ms = new MemoryStream();
var sw = new StreamWriter(ms);
sw.Write(f_name);
sw.Flush();
ms.Position = 0;
return ms;
}
}
}
Обработчик
При создании новой функции в FunctionGraph нужно вручную указать Handler — имя функции, которую FunctionGraph вызывает, чтобы выполнить ваш код. Оно должно соответствовать тому имени, которое вы определяете при создании функции.
Handler для C# имеет следующий формат:
[assembly_name]::[namespace].[class_name]::[execution_function_name]
Где:
assembly_name
— название файла сборки .NET для вашего приложения. В примере это файлassembly.deps.json
.namespace
— название пространства имен. В примере это строкаnamespace src
.class_name
— название класса. В примере это строкаclass Program
.execution_function_name
— название метода. Функция в примере —public Stream myFunc(Stream input,IFunctionContext context) { // TODO }
, ее название —myFunc
.
Функция «execution_function_name» должна иметь два входящих аргумента:
event — параметр события, определенный для функции, в формате JSON. Набор атрибутов зависит от типа события.
context — это контекстные методы, предоставляемые для выполнения функции.
Примечание
Редактирование кода в онлайн-интерпретаторе не поддерживается.
FunctionGraph поддерживает C# .NET Core 2.0, .NET Core 2.1 и C# .NET Core 3.1.
Чтобы запустить свой проект в FunctionGraph:
Скачайте FSS C# SDK и поместите библиотеку HC.Serverless.Function.Common.dll в каталог с вашим проектом.
Добавьте в конфигурационный файл “your_program_name.csproj” путь до библиотеки:
<ItemGroup> <Reference Include="HC.Serverless.Function.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> <HintPath>../HC.Serverless.Function.Common.dll</HintPath> </Reference> </ItemGroup>
Откройте коммандную строку и перейдите в каталог с вашим проектом:
cd C:\my_project
Проверьте текущую версию .NET:
“C:\Program Files\dotnet\dotnet.exe” --info
Если у вас установлено несколько версий .NET, создание и сборку вашей программы следует запускать с флагом
--framework
:“C:\Program Files\dotnet\dotnet.exe” new console --framework net3.1 -n your_program_name
“C:\Program Files\dotnet\dotnet.exe” build --framework netcoreapp3.1
Добавьте исходники в архив и загрузите в консоль FunctionGraph.
Тест и просмотр результата
Результат выполнения появится после запуска теста и отработки функции.
Нажмите Test и после отработки функции ознакомьтесь с результатами. Если в поле Function Output будет «Hello world! Function name is [your-function-name]», значит функция отработала правильно.
Контекстные методы
Метод |
Описание |
---|---|
String RequestId |
Получает ID запроса. |
String ProjectId |
Получает ID проекта. |
String PackageName |
Получает название приложения, в котором находится функция. |
String FunctionName |
Получает имя функции. |
String FunctionVersion |
Получает версию функции. |
Int MemoryLimitInMb |
Получает объем выделяемой памяти. |
Int CpuNumber |
Получает количество mcores, используемых функцией (1 CPU = 1000 mcores). Это значение пропорционально количеству выделяемой памяти. Количество выделяемых mcores рассчитывается следующим образом: Memory / 128 * 100 + 200. |
String Accesskey |
Получает Access Key (AK) агентства. Ключ действует в течение 24 часов. Если вы используете этот метод, вам нужно настроить агентство для этой функции. |
String Secretkey |
Получает Secret Key (SK) агентства. Ключ действует в течение 24 часов. Если вы используете этот метод, вам нужно настроить агентство для этой функции. |
String Token |
Получает токен агентства. Токен действителен в течение 24 часов. Если вы используете этот метод, вам нужно настроить агентство для этой функции. |
Int RemainingTimeInMilliSeconds |
Получает оставшееся до тайм-аута время выполнения функции. |
String GetUserData(string key,string defvalue="") |
Получает значение переменной среды по ключу. |
Log(string message) |
Создает объект logger, используя контекст: var logger = context.Logger;
logger.Log("hello CSharp runtime test(v1.0.2)");
|
Logf(string format, args …interface{}) |
Создает объект logger, используя контекст: var logger = context.Logger;
var version = "v1.0.2"
logger.Logf("hello CSharp runtime test({0})", version);
|
для Dev & Test