C#
Встроенный в FunctionGraph редактор кода не поддерживает C#. Чтобы запустить код из примера ниже:
На консоли управления выберите Computing → FunctionGraph.
Нажмите 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 namestring f_name = "Hello world! Function name is " + context . FunctionName ;//Print function nameConsole . 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, используя контекст:
|
Logf(string format, args …interface{}) |
Создает объект logger, используя контекст:
|
- Выполняемый код
- Обработчик
- Тест и просмотр результата
- Контекстные методы