日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

十分钟上线-基于函数计算开发 Restful web api asp.net core web app

發(fā)布時間:2025/6/15 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十分钟上线-基于函数计算开发 Restful web api asp.net core web app 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

這篇文章適合所有的 C# 開發(fā)新手、老鳥以及想準備學習開發(fā) C# 的程序猿。.NET Core是一個開源通用的開發(fā)框架,支持跨平臺, 阿里云函數(shù)計算推出了 dotnetcore2.1 runtime, 使用 C# 編寫 serverless 函數(shù), 詳情見官方文檔:C# 函數(shù)入口. 在官方文檔描述中,我們獲知阿里云函數(shù)計算可以很好支持 asp.net core 的 Applicaiton:

  • ASP.NET Core Web API
  • ASP.NET Core Web App
  • ASP.NET Core Web App (Model-View-Controller)

在介紹 Serverless Web 開發(fā)新模式之前,我們先了解下將 C# WebApi/WebApp Serverless 化的好處:

  • 無需采購和管理服務器等基礎設施
  • 彈性伸縮,動態(tài)擴容
  • 免運維, 極大降低人力成本
  • 按需付費,財務成本低
  • 本文以部署一個完善的 asp.net core 工程 Blogifier 為例,在函數(shù)計算環(huán)境中為例,向您講解如何使用阿里云函數(shù)計算快速構建或移植基于 asp.net core 開發(fā)的 WebApi/WebApp ,通過本文,您將會了解以下內(nèi)容:

    • 案例概覽
    • 傳統(tǒng)服務器架構 VS Serverless架構
    • Serverless架構詳解
    • 函數(shù)計算運行 Asp.net core App 原理
    • 案例開發(fā)配置步驟
    • FC Web 設置自定義域名

    案例概覽

    在本教程中,我們講解如何利用函數(shù)計算一步一步來構建 Web 的 Server 端,該案例是把一個 asp.net core 工程Blogifier 部署到函數(shù)計算,本文旨在展示函數(shù)計算做 Web Backend 能力,具體表現(xiàn)為以下幾點:

    • 完善的 ASP.NET Core Web 系統(tǒng)遷移到 FC 的成本不高
    • FC 打通了專有網(wǎng)絡 VPC 功能,用戶的函數(shù)可以配置訪問專有網(wǎng)絡的云資源,比如本案例中 NAS
    案例體驗入口:

    http://dotnet.mofangdegisn.cn/

    傳統(tǒng)服務器架構 VS Serverless架構

    正常來說,用戶開發(fā) Server 端服務,常常面臨開發(fā)效率,運維成本高,機器資源彈性伸縮等痛點,而使用 Serverless 架構可以很好的解決上述問題。下面是傳統(tǒng)架構和 Serverless 架構的對比:

    阿里云函數(shù)計算是一個事件驅(qū)動的全托管計算服務。通過函數(shù)計算,您無需管理服務器等基礎設施,只需編寫代碼并上傳。函數(shù)計算會為您準備好計算資源,以彈性、可靠的方式運行您的代碼,并提供日志查詢,性能監(jiān)控,報警等功能。借助于函數(shù)計算,您可以快速構建任何類型的應用和服務,無需管理和運維。

    Serverless 架構詳解

    從上面的示例圖中,整體架構十分簡單明了, 用 FC 替代了 Web 服務器,但是換來的是免運維,彈性擴容,按需付費等一系列優(yōu)點

    函數(shù)計算運行 Asp.net Core App 原理

    Asp.net Core App 運行在服務器上

    A http request to your website will go through IIS/Nginx, then Kestrel, and finally will be passed on to ASP.NET Core

    Asp.net Core App 運行在函數(shù)計算上

    請求通過函數(shù)(with http trigger), 最后到達ASP.NET Core

    tips: 基于函數(shù)計算環(huán)境運行新建 asp.net core app 可以參考[dotnet runtime HTTP 觸發(fā)器的函數(shù)入口示例]()

    在本文中,我們展示把一個現(xiàn)有的成熟的 asp.net core 工程低成本無縫遷移到函數(shù)計算環(huán)境。

    案例開發(fā)配置步驟

    準備工作

    1. 創(chuàng)建 NAS 掛接點,配置 VPC , 具體參考函數(shù)計算nas使用示例

    注:在本示例中使用 sqlite3 數(shù)據(jù)庫,這種文件類型的數(shù)據(jù)庫直接放置在 nas 即可,如果使用mysql 等其他數(shù)據(jù)庫, 需要創(chuàng)建 RDS 數(shù)據(jù)庫, 配置 VPC , 具體參考通過 VPC 訪問 RDS 實例

    2. 可選操作,在準備函數(shù)的 region 創(chuàng)建日志,用于函數(shù)的調(diào)試, 具體參考函數(shù)計算配置日志服務

    創(chuàng)建函數(shù)

    1. 創(chuàng)建 Service (假設是 csharp-web ), 配置準備 vpc config , nas config 和日志服務,比如案例體驗的 Service 配置如下圖:

    2. 下載 asp.net core 工程,Blogifier, 用 vs 打開, debug 本地可以正常運行。

    注:本地安裝 dotnetcore2.1

    3. 在工程中增加入口函數(shù),使得該工程可在函數(shù)計算執(zhí)行環(huán)境運行,diff

    4. dotnet publish -c Release, 跳轉到publish目錄, 將相關的靜態(tài)資源/可寫/共享目錄移動到上述配置的 NAS 的某個目錄(這里假設是 www目錄, 對應步驟2中的diff)

    # dotnet publish -c Release# cp -r plugins/Common/bin/Release/netcoreapp2.1/publish/* src/App/bin/Release/netcoreapp2.1/publish/# src/App/bin/Release/netcoreapp2.1/publish/# mkdir lib// 選擇函數(shù)計算執(zhí)行環(huán)境所需要的so, 其他的刪除即可 # cp runtimes/linux-x64/native/libe_sqlite3.so ./lib# // 這里是傳送對應的靜態(tài)文件和 app.db 到 nas 中, 詳情看下面的描述# rm -rf wwwroot app.db runtimes # zip -r code.zip *// 最后使用這個 code.zip 創(chuàng)建 handler 為 `App::App.FcRemoteEntrypoint::HandleRequest` 函數(shù)

    將 publish 目錄下的 wwwroot 和 app.db 傳送到 nas 的 www 目錄, 可以使用ecs 掛載nas 傳輸過去, 也可以采用如下簡單函數(shù)傳輸過去

    |-- index.py |-- www

    注: www目錄下面有 wwwroot 和 app.db

    index.py代碼:

    # -*- coding: utf-8 -*- import logging import osdef handler(event, context):os.system("mkdir -p /mnt/share/www")os.system("cp -r /code/www/* /mnt/share/www/")os.system("chmod -R 777 /mnt/share/www")print( os.system("ls -ll /mnt/share/www") )return 'ok'

    基于上述代碼創(chuàng)一個函數(shù) move-res-nas , 執(zhí)行函數(shù),將相關靜態(tài)和共享資源移動到 NAS 的/mnt/share/www/ 目錄。

    3. 創(chuàng)建入口函數(shù) blog (使用上一步驟中的 code.zip ), 給函數(shù)設置 http trigger ,類型為 anonymous , 類型都選上。

    4. 給函數(shù)入口配置自定義域名(操作過程請參考:綁定自定義域名示例), 具體配置假設如下:

    注意: 綁定自定義域名之后,不用使用控制臺來進行調(diào)試,就只能使用瀏覽器來觸發(fā)函數(shù),日志服務來進行調(diào)試。

    總結

    函數(shù)計算有如下優(yōu)勢:

    • 無需采購和管理服務器等基礎設施
    • 專注業(yè)務邏輯的開發(fā)
    • 提供日志查詢、性能監(jiān)控、報警等功能快速排查故障
    • 以事件驅(qū)動的方式觸發(fā)應用響應用戶請求
    • 毫秒級別彈性伸縮,快速實現(xiàn)底層擴容以應對峰值壓力
    • 按需付費。只需為實際使用的計算資源付費,適合有明顯波峰波谷的用戶訪問場景

    除了上面所列的優(yōu)勢,FC 可以做為 Web Backend,只需要編寫一個函數(shù)實現(xiàn)傳統(tǒng) Web 服務器中的 conf 中的邏輯,就可以將一個完整的 Web 工程遷移到 FC ,從而從傳統(tǒng)的 Web 網(wǎng)站運維,監(jiān)控等繁瑣的事務中解放出來。

    最后歡迎大家通過掃碼加入我們用戶群中,搭建過程中有問題或者有其他問題可以在群里提出來。

    函數(shù)計算官網(wǎng)釘釘客戶群(11721331)。

    總結

    以上是生活随笔為你收集整理的十分钟上线-基于函数计算开发 Restful web api asp.net core web app的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。