更新时间:2024-03-05 GMT+08:00

使用Visual Studio

新增json序列化和反序列化接口,并提供HC.Serverless.Function.Common.JsonSerializer.dll 。

提供的接口如下:

T Deserialize<T>(Stream ins):反序列化至传递到Function处理程序的对象中。

Stream Serialize<T>(T value):序列化至传递到返回的响应负载中。

本例以Visual Studio 2017新建一个.NET Core2.0的“test”工程,.NET Core2.1、.NET Core3.1类似。

新建项目

  1. 在工具栏中选择“文件 > 新建 > 项目”,选择“.NET Core” ,选择“类库(.NET Core)”,并将名称修改为“test”。如图1所示。
    图1 新建项目
  2. 导航栏中选择“test”项目,单击鼠标右键,选择“属性”,打开属性界面。如图2所示。
    图2 属性
  3. 在属性界面选择“应用程序”,选择目标框架为“.NET Core 2.0”,如图3所示。
    图3 选择目标框架

添加引用

  1. 选择解决方案资源管理器中“test”工程,单击鼠标右键,选择“添加引用”,把下载的dll文件引用进来。如图4所示。
    图4 添加引用

    所引用的dll下载后放在一个lib文件中,一共有三个库:HC.Serverless.Function.Common.dll、HC.Serverless.Function.Common.JsonSerializer.dll、Newtonsoft.Json.dll。

  2. 选择“浏览”,单击“浏览(B) ”,把HC.Serverless.Function.Common.dll和HC.Serverless.Function.Common.JsonSerializer.dll引用进来,单击“确定”。如图5所示。
    图5 引用文件
  3. 引用成功后界面如图6所示。
    图6 完成引用

打包代码

本例所用示例代码如下:

 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
using HC.Serverless.Function.Common;
using System;
using System.IO;

namespace test
{
    public class Class1
    {
        public Stream ContextHandlerSerializer(Stream input, IFunctionContext context)
        {
            var logger = context.Logger;
            logger.Logf("CSharp runtime test(v1.0.2)");
            JsonSerializer test = new JsonSerializer();
            TestJson Testjson = test.Deserialize<TestJson>(input);
            if (Testjson != null)
            {
                logger.Logf("json Deserialize KetTest={0}", Testjson.KetTest);
            }

            return test.Serialize<TestJson>(Testjson);
        }

        public class TestJson
        {
            public string KetTest { get; set; }//定义序列化的类中的属性为KetTest

        }
    }
}
  1. 右击“test”工程,选择“生成”,如图7所示。
    图7 生成文件
  2. 拷贝生成dll文件的路径“C:\Users\xxx\source\repos\test\test\bin\Release\netcoreapp2.0\”,如图8所示。
    图8 生成路径
    该路径下的文件如图9所示。
    图9 文件
  3. 在该路径新建“test.runtimeconfig.json”文件,如图10所示。
    图10 新建文件
    文件内容如下:
    {
       
    "runtimeOptions": {
           
    "framework": {
               
    "name": "Microsoft.NETCore.App",
               
    "version": "2.0.0"
            }
        }
    }
    • *.runtimeconfig.json文件的名称为程序集的名称。
    • 文件内容中的version为项目属性中的目标框架的版本号,2.0则为2.0.0 ,2.1则为2.1.0。
  4. 将文件打包为netcoreapp2.0.zip压缩包。

    压缩包文件名称可随意,但是一定为.zip格式。

测试示例

  1. 在华为云FunctionGraph控制台新建一个C#(.NET 2.1)函数,上传打包完成的代码包,如图11所示。
    图11 上传代码包
  2. 配置一个测试事件。如图12所示。其中的key必须设置为“KetTest”,value可以自定义。
    图12 配置测试事件
    • KetTest:定义序列化的类中的属性为KetTest.
    • 测试串必需为json格式。
  3. 单击“测试”,查看测试执行结果。