上云无忧 > 文档中心 > 百度智能云函数计算 CFC C# 示例
函数计算CFC
百度智能云函数计算 CFC C# 示例

文档简介:
CFC 支持 .NET Core 2.2 运行环境,支持的函数语言为 C# 和 Powershell,本文主要介绍如何使用 C# 函数。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

CFC 支持 .NET Core 2.2 运行环境,支持的函数语言为 C# 和 Powershell,本文主要介绍如何使用 C# 函数。

函数入口

当创建一个基于 C# 的函数时,您需要从 Nuget 引用 BaiduBce.CFC.Core ,该 SDK 中定义了一个接口,定义如下:

namespace BaiduBce.CFC.Core {
    public interface StreamHandler {
        void Handler(Stream input, Stream output, InvokeContext context);
    }
}

您需要创建一个入口类并实现这个接口,在 Handler 函数中处理您的逻辑。Handler 函数有三个参数:input 表示输入数据,output 表示输出数据,context 表示函数运行时信息。

函数代码示例

以下是一个较简单的示例,共包含三个文件。

StreamHandler.cs

创建 BaiduBce.CFC.Demo 类,实现 StreamHandler 接口,打印出 input 和 context 中的部分内容。您可以将日志输出到 stdout 和 stderr,函数计算服务会自动收集这些日志。

using System;
using System.IO;
using Newtonsoft.Json;
using BaiduBce.CFC.Core;

namespace BaiduBce.CFC.Demo
{
    public class StreamHandlerDemo : StreamHandler
    {
        public void Handler(Stream input, Stream output, InvokeContext context)
        {
            StreamReader reader = new StreamReader(input);
            InvokeEvent invoke = JsonConvert.DeserializeObject<InvokeEvent>(reader.ReadToEnd());
            StreamWriter writer = new StreamWriter(output);
            writer.AutoFlush = true;

            if (invoke.Event != null)
            {
                Console.Out.Write(invoke.Event);
            }
            
            Console.Out.WriteLine("RequestID = {0}", context.RequestID);
            Console.Out.WriteLine("FunctionBrn = {0}", context.FunctionBrn);
            StsCredential credential = context.Credential;
            if (credential != null)
            {
                Console.Out.WriteLine("AccessKeyID = {0}", credential.AccessKeyID);
                Console.Out.WriteLine("SecretAccessKey = {0}", credential.SecretAccessKey);
                Console.Out.WriteLine("SessionToken = {0}", credential.SessionToken);
            }            

            writer.WriteLine("Hello world!");
        }
    }
}

InvokeEvent.cs

该文件定义了一个可以被 JSON 序列化和反序列化的对象,用于反序列化 Handler 函数的 input。您需要根据函数接收的输入 JSON 结构来定义此对象。

using Newtonsoft.Json;
namespace BaiduBce.CFC.Demo {
    public class InvokeEvent {
        [JsonProperty(PropertyName = "event")]
        public string Event { get; set; }        
    }
}

Program.cs

该文件定义了程序的入口,您无需修改此文件。

using BaiduBce.CFC.Core;
namespace BaiduBce.CFC.Demo {
    class MainClass {
        public static void Main(string[] args) {
            CfcClient.main();
        }
    }
}

函数打包及上传

函数打包

在您的项目根目录下执行 publish 命令,dotnet 会编译程序并输出结果:

$ dotnet publish -c Release

打包输出结果:

$ cd bin/Release/netcoreapp2.2/publish/
$ zip -r csharp-demo.zip *

然后,您就可以在 CFC 的函数代码页,点击"上传函数.ZIP包",将 csharp-demo.zip 上传。

Handler 命名

在创建函数时,您需要制定一个 handler 方法的字符串,用来告诉函数计算如何调用您的函数。该字符串格式如下:AssemblyFileName::FullClassName,其中 AssemblyFileName 是函数所在的 Assembly 的文件名(省去.dll),FullClassName 是该函数所在类的全名,Namepsace.ClassName。

在上述简单示例中,如果 Assembly 文件名为 csharp_demo,则 handler 字符串为 csharp_demo::BaiduBce.CFC.Demo.StreamHandlerDemo。

至此,您的 csharp 函数就已配置完,点击"测试"即可运行函数。

相似文档
  • 目前支持的Python开发语言包括如下版本: Python2.7 Python3.6 函数代码 一个简单的Python函数代码如下所示: # -*- coding: utf-8 -*- def handler(event, context): return "Hello World"
  • CFC 支持 Lua 编程语言,Lua 函数的运行环境是 Lua5.3,本文主要介绍使用 Lua 函数的基本方法。
  • 以下为一个最基本的hello world函数入口示例: 在创建CFC云函数时,需要指定执行方法。 普通方式:handler需要与创建函数时的 "handler" 字段相对应。例如,创建函数时指定的 "handler" 为 index.handler,函数计算则会加载 index.php 文件中定义的 handler 函数。
  • 目前CFC支持的Node.js开发语言包括如下版本: Node.js 12.2 Node.js 10.15 Node.js 8.5(已下线,目前存量Node.js 8.5函数仍可运行,但无法创建该运行时的新CFC函数) 函数代码 一个简单的Node.js函数示例代码如下所示: exports.handler = (event, context, callback) => { callback(null, "Hello world!"); };
  • BCE SAM是用来定义百度函数计算CFC无服务器应用架构的模型,为本地开发工具bce-sam-cli提供指引。BCE SAM定义了一组对象,这些对象可以包含在模板定义文件中,以便轻松地描述CFC函数。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部