本文介紹如何在.NET運行環境編譯程序,并打包為ZIP包。編譯打包完成后,您可以在函數計算控制臺或使用Serverless Devs工具上傳代碼包。
C#運行時依賴庫
函數計算為C#運行時提供以下依賴庫。
Aliyun.Serverless.Core(必選):定義了事件請求處理程序接口,Context對象等信息。
Aliyun.Serverless.Core.Http:定義了HTTP請求處理程序接口。
您可以通過Nuget程序包獲得以上依賴庫,將其添加到您的<YourProjectName>.csproj文件中。如下所示。
<ItemGroup>
<PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
<PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
</ItemGroup>
使用.NET Core CLI工具編譯并部署程序
.NET Core部署程序包,需要包含您的函數的已編譯程序集以及其所有程序集的依賴項。您可以直接使用.NET Core CLI工具編譯程序。使用 .NET Core CLI工具,您可以通過跨平臺方式創建基于.NET的函數計算應用程序。具體操作,請參見.NET。
前提條件
步驟一:創建.NET項目
執行以下命令創建.NET項目。
dotnet new console -o HelloFcApp -f netcoreapp3.1
參數解析如下。
new console:推薦使用控制臺應用程序模板。
-o|--output:項目的輸出位置。本文示例中,會創建一個HelloFcApp目錄,并將項目內容放置到該目錄下。
-f|--framework:指定使用的.NET版本。如果運行時版本為.NET Core 3.1,該參數使用netcoreapp3.1。
創建完成后,項目目錄結構如下所示。
HelloFcApp ├── HelloFcApp.csproj ├── Program.cs └── obj
在項目目錄下,根據實際情況修改文件的參數配置。
HelloFcApp.csproj文件
.NET工程的配置文件,記錄了項目的目標框架、程序集的依賴庫等信息。您需要在該文件中添加函數計算提供的依賴庫,示例如下。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" /> <PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" /> </ItemGroup> </Project>
Program.cs文件
您的請求處理程序代碼,具體設置可參考事件請求處理程序(Event Handler)或HTTP請求處理程序(HTTP Handler)。本文以使用Stream類型的事件請求處理程序為例。
using System.IO; using System.Threading.Tasks; using Aliyun.Serverless.Core; using Microsoft.Extensions.Logging; namespace Example { public class Hello { public async Task<Stream> StreamHandler(Stream input, IFcContext context) { IFcLogger logger = context.Logger; logger.LogInformation("Handle request: {0}", context.RequestId); MemoryStream copy = new MemoryStream(); await input.CopyToAsync(copy); copy.Seek(0, SeekOrigin.Begin); return copy; } static void Main(string[] args){} } }
步驟二:編譯.NET項目
執行以下命令,進入項目目錄并編譯項目,然后將結果輸出到target目錄下。
cd HelloFcApp && dotnet publish -c Release -o ./target
執行以下命令,進入target目錄并進行打包。
cd target && zip -r HelloFcApp.zip *
打包完成后,ZIP包的結構如下所示。
HelloFcApp.zip ├── Aliyun.Serverless.Core.dll ├── HelloFcApp.deps.json ├── HelloFcApp.dll ├── HelloFcApp.pdb ├── HelloFcApp.runtimeconfig.json └── Microsoft.Extensions.Logging.Abstractions.dll
重要請確保已將HelloFcApp.dll等文件打包至ZIP文件的根目錄。
步驟三:部署項目代碼并驗證
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊創建函數。
在創建函數頁面,選擇使用內置運行時創建,設置函數相關配置項,然后單擊創建。
主要配置項說明如下,其余配置項選擇默認值即可。
請求程序處理類型:選擇處理事件請求。
運行環境:選擇.NET Core 3.1。
代碼上傳方式:選擇通過 ZIP 包上傳代碼,然后上傳C#運行時依賴庫打包的ZIP文件。
請求處理程序:設置為
HelloFcApp::Example.Hello::StreamHandler
。關于請求處理程序的格式說明,請參見請求處理程序(Handler)。
創建完成后,跳轉至函數詳情頁面的函數代碼頁簽。
在函數詳情頁面的函數代碼頁簽,單擊測試函數。
成功執行后返回以下結果。
{ "key1": "value1", "key2": "value2", "key3": "value3" }
您還可以單擊日志輸出頁簽查看詳細日志。