Модель программирования на языке C#
Сервис Cloud Functions предоставляет две модели программирования на языке C# — с помощью интерфейсов YcFunction и независимого класса с совместимым методом. Обе модели подразумевают написание собственных реализаций интерфейсов, а также дают возможность обеспечить функцию одним аргументом и одним возвращаемым значением любых типов.
Разница между этими моделями состоит в наличии контекста вызова. Если, например, нужно взаимодействовать с сервисами Yandex Cloud при помощи SDK, то рекомендуем выбрать YcFunction.
Вне зависимости от выбранной модели, загрузка проекта осуществляется одним из способов: в виде опубликованногоcsproj
-проекта или набора файлов *cs
с исходным кодом. Последний вариант подходит для обработчиков, не имеющих внешних зависимостей. Также, на класс, содержащий функцию-обработчик, накладываются следующие требования:
- Он должен быть публичным.
- У него должен присутствовать публичный конструктор без аргументов.
По умолчанию он присутствует. Но если вы создали свой конструктор, принимающий аргументы, нужно также создать конструктор, не принимающий никаких аргументов. - Он не должен быть обобщенным
.
Вне засимости от выбранной модели обработчиком может быть async-методTask
или Task<T>
. Для варианта с независимым классом дополнительно доступен вариант возвращаемого значения async void
.
При этом есть два обособленных типа: byte[]
и String
, работа с которыми немного отличается от работы с другими типами. При их использовании в качестве типа аргумента функции-обработчика, среда выполнения не будет преобразовывать входящий запрос в JSON
-интерпретацию для этих типов, а передаст его напрямую в пользовательскую функцию-обработчик. Исключением являются случаи, когда используется параметр ?integration=raw.