Tüm Ürünler
Search
Belge Merkezi

Function Compute:Kod paketini derleme ve dağıtma

Son Güncelleme:Oct 08, 2026

C#/.NET projenizi yerel ortamda derleyin, ZIP dosyası olarak paketleyin ve konsol veya Serverless Devs kullanarak Function Compute'a dağıtın.

Bağımlılık kitaplığı

Function Compute, C# çalışma zamanı için Aliyun.Serverless.Core kitaplığını sağlar. İşleyici arayüzünü, bağlam nesnesini ve ilgili türleri tanımlamak için bu kitaplığı kullanın.

Kitaplığı NuGet üzerinden edinin ve <YourProjectName>.csproj dosyanıza ekleyin:

<ItemGroup>
  <PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
  <PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
</ItemGroup>

Desteklenen çalışma zamanları


.NET sürümü


-f bayrak değeri


.NET Core 3.1


netcoreapp3.1


.NET Core 2.1


netcoreapp2.1

Dağıtım yöntemi seçme


Yöntem


En uygun olduğu durumlar


.NET Core CLI + konsol


Tek seferlik dağıtımlar, platformu öğrenme


Serverless Devs


Tekrarlanabilir dağıtımlar, CI/CD işlem hatları

.NET Core CLI ile dağıtım

Platformlar arası .NET uygulamaları oluşturmak ve bunları Function Compute'a dağıtmak için .NET Core CLI'yı kullanın. Kurulum talimatları için bkz. .NET.

Adım 1: .NET projesi oluşturma

  1. Yeni bir konsol projesi oluşturun:


    Parametre


    Açıklama


    new console


    Konsol uygulaması şablonunu kullanır


    -o HelloFcApp


    Proje için bir HelloFcApp dizini oluşturur


    -f netcoreapp3.1


    .NET Core 3.1'i hedefler. .NET Core 2.1 için netcoreapp2.1 kullanın

    dotnet new console -o HelloFcApp -f netcoreapp3.1

    Komut aşağıdaki yapıyı oluşturur:

    HelloFcApp
    ├── HelloFcApp.csproj   # Project configuration: target framework and dependencies
    ├── Program.cs          # Handler code
    └── obj                 # Intermediate build files
  2. Function Compute bağımlılık kitaplığını içerecek şekilde HelloFcApp.csproj dosyasını güncelleyin:

    <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>
  3. Program.cs dosyasının içeriğini işleyici kodunuzla değiştirin. Aşağıdaki örnekte Stream türünde bir olay işleyicisi kullanılmaktadır. Diğer işleyici türleri için bkz. İşleyiciler.

    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){}
        }
    }

Adım 2: Derleme ve paketleme

  1. Projeyi derleyin ve çıktıyı target dizinine yazın:

    cd HelloFcApp && dotnet publish -c Release -o ./target
  2. Derlenmiş çıktıyı bir ZIP dosyasında paketleyin:

    Önemli

    zip -r HelloFcApp.zip * komutunu üst dizinden değil, target dizininin içinde çalıştırın. İçerikler yerine target klasörünün kendisini zip'lerseniz Function Compute, beklenen kök yolda HelloFcApp.dll dosyasını bulamaz ve işlev başlatılamaz.

    cd target && zip -r HelloFcApp.zip *

    ZIP dosyası aşağıdaki dosyaları içerir:

    HelloFcApp.zip
    ├── Aliyun.Serverless.Core.dll
    ├── HelloFcApp.deps.json
    ├── HelloFcApp.dll
    ├── HelloFcApp.pdb
    ├── HelloFcApp.runtimeconfig.json
    └── Microsoft.Extensions.Logging.Abstractions.dll

Adım 3: Dağıtım ve doğrulama

  1. Function Compute konsoluna giriş yapın. Sol gezinme bölmesinde Functions öğesini tıklayın.

  2. Üst gezinme çubuğunda bir bölge seçin. Functions sayfasında Create Function öğesini tıklayın.

  3. Create Function sayfasında Event Function seçeneğini belirleyin, aşağıdaki parametreleri yapılandırın ve Create öğesini tıklayın. İşlev oluşturulduktan sonra Function Details sayfasının Code sekmesi otomatik olarak açılır.


    Parametre


    Değer


    Runtime


    .NET Core 3.1


    Code Upload Method


    Upload ZIP — 2. Adımdaki HelloFcApp.zip dosyasını seçin


    Handler


    HelloFcApp::Example.Hello::StreamHandler — işleyici biçimi için bkz. İşleyiciler

  4. Code sekmesinde Test Function öğesini tıklayın. Başarılı bir çalıştırma şu sonucu döndürür:

    {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    }

    Çalıştırma günlüklerini görüntülemek için Log Output sekmesini tıklayın.

Serverless Devs ile dağıtım

Serverless Devs, derleme ve dağıtım adımlarını otomatikleştirerek tekrarlanabilir iş akışları ve CI/CD işlem hatları için uygun hale getirir.

Ön koşullar

Başlamadan önce aşağıdakileri yaptığınızdan emin olun:

Dağıtım ve doğrulama

  1. Projeyi başlatın:

    s init

    İstendiğinde cloud provider olarak Alibaba Cloud'u seçin, bir .NET şablonu belirleyin ve çalışma zamanını, bölgeyi ve işlev adını girin.

  2. Proje dizinine gidin:

    cd start-fc3-dotnetcore

    Projenin yapısı aşağıdaki gibidir:

    start-fc3-dotnetcore
    ├── HelloFcApp
    │   ├── bin                    # Compiled binaries
    │   ├── obj                    # Intermediate build files
    │   ├── target                 # Publish output
    │   ├── HelloWorldApp.csproj   # Project configuration
    │   └── Program.cs             # Handler code
    ├── readme
    └── s.yaml                     # Serverless Devs configuration
  3. Projeyi dağıtın:

    s deploy

    Başarılı bir dağıtımda işlev yapılandırması çıktılanır:

    s.yaml: /root/start-fc3-dotnetcore/s.yaml
    Downloading[/v3/packages/fc3/zipball/0.0.24]...
    Download fc3 successfully
      Steps for [deploy] of [hello-world-app]
    ====================
    Microsoft (R) Build Engine version 16.7.3+2f374e28e for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
    
      Determining projects to restore...
      Restored /root/start-fc3-dotnetcore/HelloWorldApp/HelloWorldApp.csproj (in 154 ms).
      HelloWorldApp -> /root/start-fc3-dotnetcore/HelloWorldApp/bin/Release/netcoreapp3.1/HelloWorldApp.dll
      HelloWorldApp -> /root/start-fc3-dotnetcore/HelloWorldApp/target/
    
     [hello_world] completed (2.66s)
    
     Result for [deploy] of [hello-world-app]
    ====================
    region:         cn-hangzhou
    description:    hello world by serverless devs
    functionName:   start-dotnetcore-p6jp
    handler:        HelloWorldApp::Example.Hello::StreamHandler
    internetAccess: true
    memorySize:     128
    role:
    runtime:        dotnetcore3.1
    timeout:        10
    
    A complete log of this run can be found in: /root/.s/logs/0327105651
  4. İşlevi test edin:

    sudo s invoke

    Başarılı bir çağrı şu sonucu döndürür:

    Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FunctionCompute dotnetcore3.1 runtime inited.
    FC Invoke Start RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    hello world!
    FC Invoke End RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    
    Duration: 117.33 ms, Billed Duration: 118 ms, Memory Size: 128 MB, Max Memory Used: 13.16 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-6603951e-15f440b6-2df37e4bf046
    Code Checksum: 13273801077182424526
    Qualifier: LATEST
    RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    
    Invoke Result:
    hello world!
    ✔ [hello_world] completed (0.72s)
    
    A complete log of this run can be found in: /root/.s/logs/0327114013