j9九游会登录/ 函数工作流 functiongraph/ 开发指南/ / / / 使用.net core cli开发c#函数
更新时间:2025-08-14 gmt 08:00

使用.net core cli开发c#函数-j9九游会登录

c#新增json序列化和反序列化接口,并提供hc.serverless.function.common.jsonserializer.dll 。

提供的接口如下:

t deserialize(stream ins):反序列化值传递到function处理程序的对象中。

stream serialize(t value):序列化值传递到返回的响应负载中。

本文以.net core 6.0创建“test”工程为例,其他运行时版本方法类似。执行环境已装有.net sdk。

新建项目

  1. 创建目录“/tmp/csharp/projects /tmp/csharp/release” ,执行命令如下:
    mkdir -p  /tmp/csharp/projects;mkdir -p  /tmp/csharp/release
  2. 进入“/tmp/csharp/projects/”目录,执行命令如下:
    cd /tmp/csharp/projects/
  3. 新建工程文件 “test.csproj”,文件内容如下:
    
      
        net6.0
        test
        test
      
      
        
          hc.serverless.function.common.dll
        
        
           hc.serverless.function.common.jsonserializer.dll
        
      
    

生成代码库

  1. 下载。

    将hc.serverless.function.common.dll、hc.serverless.function.common.jsonserializer.dll、newtonsoft.json.dll文件上传至目录“/tmp/csharp/projects/”。

  2. 在“/tmp/csharp/projects/”路径下,新建“class1.cs”文件,代码内容如下:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    usinghc.serverless.function.common;
    usingsystem;
    usingsystem.io;
    namespacetest
    {
    publicclassclass1
    {
    publicstreamcontexthandlerserializer(streaminput,ifunctioncontextcontext)
    {
    varlogger=context.logger;
    logger.logf("csharp runtime test(v1.0.2)");
    jsonserializertest=newjsonserializer();
    testjsontestjson=test.deserialize<testjson>(input);
    if(testjson!=null)
    {
    logger.logf("json deserialize kettest={0}",testjson.kettest);
    }
    else
    {
    returnnull;
    }
    returntest.serialize<testjson>(testjson);
    }
    publicclasstestjson
    {
    publicstringkettest{get;set;}//定义序列化的类中的属性为kettest
    }
    }
    }
    
  3. 执行以下命令,生成代码库:
    dotnet build /tmp/csharp/projects/test.csproj -c release -o /tmp/csharp/release

    dotnet的路径:/home/tools/dotnetcore-sdk/dotnet-sdk-2.1.302-linux-x64/dotnet。

  4. 执行以下命令,进入“/tmp/csharp/release”路径。
    cd /tmp/csharp/release 
  5. 在路径“/tmp/csharp/release”下查看编译生成的dll文件,如下所示:
    -rw-r--r-- 1 root root 468480 jan 21 16:40 newtonsoft.json.dll
    -rw-r--r-- 1 root root   5120 jan 21 16:40 hc.serverless.function.common.jsonserializer.dll
    -rw-r--r-- 1 root root   5120 jan 21 16:40 hc.serverless.function.common.dll
    -rw-r--r-- 1 root root    232 jan 21 17:10 test.pdb
    -rw-r--r-- 1 root root   3584 jan 21 17:10 test.dll
    -rw-r--r-- 1 root root   1659 jan 21 17:10 test.deps.json
  6. 在“/tmp/csharp/release”路径下,新建文件“test.runtimeconfig.json”文件,文件内容如下:
    {
        "runtimeoptions": {
            "framework": {
                "name": "microsoft.netcore.app",
                "version": "6.0.0"
            }
        }
    }
  7. 在“/tmp/csharp/release”路径下,执行如下命令,打包test.zip代码库压缩包。
    zip -r test.zip ./*

测试示例

  1. 在functiongraph控制台新建一个c#(.net 6.0)空白事件函数,上传打包好的“test.zip”压缩包,如图1所示。
    图1 上传代码包
  2. 配置一个测试事件。如图2所示。其中的key必须设置为“kettest”,value可以自定义。(测试串必须为json格式。
    图2 配置测试事件

    kettest:定义序列化的类中的属性为kettest。

  3. 单击“测试”,查看测试执行结果。

相关文档

网站地图