應(yīng)該叫搭建 web環(huán)境。比如我們平時(shí)常用的 php環(huán)境,可以使用各種第三方軟件來搭建。尤其是騰訊云可以借助一鍵 php面板很容易就搭建起網(wǎng)站環(huán)境,然后快速建站,節(jié)省了很多時(shí)間。
創(chuàng)新互聯(lián)建站秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,成都微信小程序,網(wǎng)頁設(shè)計(jì)制作,移動(dòng)網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè)幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長。
你可以在選購騰訊云時(shí)就安裝,或者以后再安裝都可以的。這方面的教程在我博客里面有,可以去看看,也可以在這里提問,看到就回答你了
C#語言由于需要編譯后才可以在 CoreCLR 虛擬機(jī)中運(yùn)行。因此在 SCF 中的使用方式,和 Python、Node.js 這類腳本型語言不同,和Java一樣有如下限制:
不支持上傳代碼:使用 C# 語言,僅支持上傳已經(jīng)開發(fā)完成,編譯打包后的 zip 包。SCF 環(huán)境不提供 C# 的編譯能力。
不支持在線編輯:不能上傳代碼,所以不支持在線編輯代碼。CoreCLR 運(yùn)行時(shí)的函數(shù),在代碼頁面僅能看到再次通過頁面上傳或 COS 提交代碼的方法。
自定義.NET Custom runtime
Custom Runtime的封裝工作就是要把各種trigger 的事件封裝一個(gè).NET Standard庫,開發(fā)云函數(shù)。自 .NET Core 2.0 開始, 提供了名為?IHostedService?的新接口,有助于輕松實(shí)現(xiàn)托管服務(wù),文章《ASP.NET Core 3.x控制IHostedService啟動(dòng)順序淺探》有深入的實(shí)現(xiàn)分析,基于IHostedService?實(shí)現(xiàn)一個(gè)SCFHostService:
這里我們把SCF的Custom Runtime 抽象到ISCFHost 中
在SCFHost 類中完成Custom Runtime的業(yè)務(wù)處理,接收來自SCF 的事件,轉(zhuǎn)發(fā)給函數(shù)進(jìn)行處理,函數(shù)處理的接口 IFunctionInvoker:
默認(rèn)實(shí)現(xiàn)了FunctionInvoker 把請求信息 返回給 SCF:
responseBody 代表了SCF函數(shù)的不同Trigger事件信息,我們可以根據(jù)不同的Trigger 定義不同的處理函數(shù),例如我們處理HttpTrigger的函數(shù)為HttpFunctionInvoker:
上面我們已經(jīng)完成了最小的MVP封裝,利用.NET Core的依賴注入容器封裝起來,我們定義了一個(gè)ISCFBuilder 來組裝函數(shù)的配置和服務(wù):
SCF 云函數(shù)開發(fā)
我們使用.NET Core的控制臺(tái)程序來開發(fā)云函數(shù),創(chuàng)建一個(gè)控制臺(tái)程序, 引用Yhd.TencentCloud.SCF 包,把Program.cs 替換成類似代碼:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
using Yhd.FindJob;
using Yhd.TencentCloud.SCF.Executors;
public class Index
{
static async Task Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureSCF((context, scfbuilder) =
{
var configuration = scfbuilder.Configuration;
scfbuilder.Services.AddFindJob(configuration);
scfbuilder.Services.AddEasyCaching(options =
{
options.UseInMemory();
//use redis cache that named redis
options.UseRedis(configuration)
.WithJson()
;
});
scfbuilder.Services.AddTransientIFunctionInvoker, JobsHttpFunctionInvoker();
})
.UseConsoleLifetime();
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
通過ConfigureSCF 可以添加函數(shù)的依賴服務(wù),例如上面例子中的EasyCaching 以及函數(shù)的服務(wù), 關(guān)鍵的一句是? scfbuilder.Services.AddTransientIFunctionInvoker, JobsHttpFunctionInvoker();? 把函數(shù)的處理邏輯使用JobsHttpFunctionInvoker 進(jìn)行注入。把函數(shù)的配置放到appsettings.json。
現(xiàn)在SCF 云函數(shù)有個(gè)問題是本地Windows開發(fā)問題,本地的函數(shù)邏輯的測試可以通過單元測試進(jìn)行。還有函數(shù)打包必須在Linux環(huán)境下進(jìn)行。
云函數(shù)部署
創(chuàng)建 bootstrap 文件
bootstrap 是運(yùn)行時(shí)入口引導(dǎo)程序文件,Custom Runtime 加載函數(shù)時(shí)固定檢索 bootstrap 同名文件,并執(zhí)行該程序來啟動(dòng) Custom Runtime 運(yùn)行時(shí)。Custom Runtime 支持任意語言及版本開發(fā)運(yùn)行函數(shù),主要基于 bootstrap 引導(dǎo)程序由開發(fā)者自定義實(shí)現(xiàn)。其中,bootstrap 需具備以下條件:
需具有可執(zhí)行權(quán)限。
能夠在 SCF 系統(tǒng)環(huán)境(CentOS 7.6)中運(yùn)行。
下面這個(gè)是 .NET Core 3.1的云函數(shù) bootstrap 文件
#!/bin/sh
echo "Start dotnet bootstrap ~~~"
export DOTNET_ROOT=/opt/rt
export PATH=$(pwd):/opt/rt:${PATH}
dotnet ./index/bin/Release/netcoreapp3.1/index.dll
index.dll 就是我們開發(fā)的函數(shù)文件。
成功創(chuàng)建?bootstrap?和?函數(shù)文件?后,目錄結(jié)構(gòu)如下所示:
├ bootstrap
└ index
需要在Linux 下執(zhí)行以下命令,設(shè)置文件可執(zhí)行權(quán)限,并將其添加至 ZIP 包
部署包準(zhǔn)備好后,可以通過?云函數(shù)控制臺(tái)?來創(chuàng)建和發(fā)布函數(shù)
在騰訊云云函數(shù)計(jì)算上部署.NET Core 3.1的更多相關(guān)文章
阿里云函數(shù)計(jì)算上部署.NET Core 3.1
使用阿里云ECS或者其他常見的VPS服務(wù)部署應(yīng)用的時(shí)候,需要手動(dòng)配置環(huán)境,并且監(jiān)測ECS的行為,做補(bǔ)丁之類的,搞得有點(diǎn)復(fù)雜.好在很多云廠商(阿里云.Azure等)提供了Serverless服務(wù),借助于 ...
IIS上部署Net.Core
部署: 1.安裝vc_redist.x64vc_redist.x64 2.安裝DotNetCore.1.0.0.RC2-WindowsHosting 3.安裝DotNetCore.1.0.0-SDK. ...
So Easy - 在Linux服務(wù)器上部署 .NET Core App
.NET Core?是微軟提供的免費(fèi).跨平臺(tái)和開源的開發(fā)框架,可以構(gòu)建桌面應(yīng)用程序.移動(dòng)端應(yīng)用程序.網(wǎng)絡(luò)應(yīng)用程序.物聯(lián)網(wǎng)應(yīng)用程序和游戲應(yīng)用程序等.如果你是 Windows 平臺(tái)下的 dotnet 開發(fā) ...
在IIS上部署 .Net Core 3.0 項(xiàng)目踩坑實(shí)錄
在IIS上部署 .Net Core 3.0 項(xiàng)目的主要流程有: 安裝并啟用IIS 安裝AspNetCoreModuleV2 添加.配置網(wǎng)站 設(shè)置應(yīng)用程序池 通過VS發(fā)布 一.安裝并啟用IIS: 安裝了 ...
在CentOS 8 上 部署 .Net Core 應(yīng)用程序
在Centos 8 上 部署 .Net Core 應(yīng)用程序 ? ? -- 記錄篇 1.更新dnf 源 1 dnf update 2.安裝 Asp.Net Core 運(yùn)行時(shí) 1 dnf install ...
在騰訊云amp;阿里云上部署JavaWeb項(xiàng)目(Tomcat+MySQL)
之前做項(xiàng)目都是在本地跑,最近遇到需要在在云服務(wù)器(阿里云或者騰訊云都可以,差不多)上部署Java Web項(xiàng)目的問題,一路上遇到了好多坑,在成功部署上去之后寫一下部署的步驟與過程,一是幫助自己總結(jié)記憶, ...
ASP.NET Core學(xué)習(xí)之四 在CentOS上部署點(diǎn)虐 core
一.安裝CentOs 以前在大學(xué)學(xué)過linux,但是對命令行總是有一種深深的排斥感,幾年之后,還是又回來了. 1.下載 現(xiàn)在沒法FQ,就算是FQ網(wǎng)速也是蝸牛一樣慢,我使用阿里云的鏡像站進(jìn)行下載速度還是 ...
【netcore入門】在Windows IIS上部署.NET Core 2.1項(xiàng)目
部署之前先檢查下面2個(gè)先決條件是否滿足 1.安裝了 IIS 模塊 win7 在 控制面板→程序和功能→打開或關(guān)閉Windows功能→勾選Internet 信息服務(wù)(Internet Informati ...
CentOS7系統(tǒng)上部署點(diǎn)虐 core程序
一.準(zhǔn)備工作 首先安裝 xshell?和 xftp ,前者用于SSH連接Linux服務(wù)器,后者用于FTP上傳下載文件. xshell和xftp個(gè)人使用是免費(fèi)的,下載地址 之后分別輸入用戶名和密碼登錄主 ...
我們公司使用的是華為云服務(wù)器,我們一般是通過遠(yuǎn)程的方式,直接把本地的web程序上傳上去的,華為企業(yè)云這邊自有的這個(gè)功能特別方便,不知道其他的云服務(wù)器是不是也可以這樣子操作。
先在騰訊云買個(gè)云主機(jī),然后搭建好對應(yīng)的Web環(huán)境,再上傳本地源碼就可以了。
如果是PHP的代碼,可以用護(hù)衛(wèi)神PHP套件,一鍵安裝配置好。