日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Windows下IIS+.net framework+Sqlserver接入實(shí)踐

更新時(shí)間:

本章介紹如何在Windows系統(tǒng)下,使用Docker For Windows打包Asp.Net應(yīng)用鏡像,并使用自研鏡像初始化第三方SqlServer數(shù)據(jù)庫(kù)部署并運(yùn)行應(yīng)用。

準(zhǔn)備工作

1、環(huán)境準(zhǔn)備

以下的說(shuō)明都是基于Docker For Windows下打包并運(yùn)行,請(qǐng)確保Docker運(yùn)行在Windows Container模式下,設(shè)置方法:在系統(tǒng)任務(wù)欄找到Docker圖標(biāo)并右鍵,打開設(shè)置對(duì)話框:image.png

注意:本例子并不適用通過(guò)Virtualbox在Widows下運(yùn)行Docker應(yīng)用。另外,Docker For Windows需要運(yùn)行在Win10 64bit(專業(yè)版或企業(yè)版),并確保更新到1809或以上版本。目前Iot平臺(tái)暫不支持在Windows Server系統(tǒng)打包生成的鏡像。

2、準(zhǔn)備數(shù)據(jù)庫(kù)初始化文件

創(chuàng)建用于數(shù)據(jù)庫(kù)初始化的sql文件,在文件中寫入數(shù)據(jù)庫(kù)表的創(chuàng)建等相關(guān)初始化腳本,可以從現(xiàn)有的數(shù)據(jù)庫(kù)中直接導(dǎo)出初始化sql腳本文件來(lái)使用。腳本示例如下:

/******************************************/
/*   創(chuàng)建usertest數(shù)據(jù)表,并插入三條初始化數(shù)據(jù)       */
/******************************************/
 create table [usertest]
 (
     [id] [int] identity(1,1) primary key,
     [name] [nvarchar](50) NULL,
     [phone] [varchar](50) NULL,
     [createOn] [datetime] NULL,
     [modifyOn] [datetime] NULL
  )

  insert into [usertest]([name],[phone],[createOn],[modifyOn])
  values(N'張三','1373765****','2019-02-23','2019-03-24');
  insert into [usertest]([name],[phone],[createOn],[modifyOn])
  values(N'李四','1383625****','2019-04-01','2019-03-02');
  insert into [usertest]([name],[phone],[createOn],[modifyOn])
  values(N'王五','1384562****','2019-04-10','2019-04-09');

3、約定SqlServer服務(wù)器配置

為了方便起見,我們約定SqlServer服務(wù)器節(jié)點(diǎn)相關(guān)的配置如下: 服務(wù)名稱:sqlserversvc 數(shù)據(jù)庫(kù):testdb 用戶名:testUser1 密碼:123456Aa 這些配置信息可根據(jù)實(shí)際情況進(jìn)行調(diào)整。稍后在配置托管應(yīng)用將會(huì)用到。另外,當(dāng)我們?cè)诎⒗镌莆锫?lián)網(wǎng)托管平臺(tái)部署成功后,這些配置信息會(huì)以環(huán)境變量的方式注入到我們的Demo應(yīng)用運(yùn)行環(huán)境內(nèi)。所以,Demo的數(shù)據(jù)庫(kù)連接字符串可以這樣寫:

using System;
using System.Data;
using System.Data.SqlClient;

namespace aspnetDemo.Extensions
{
    public class DbHelper
    {
        static string strConn = string.Empty;

        static DbHelper() 
        {
            string uid = Environment.GetEnvironmentVariable("IOT_HOSTING_SQLSERVERSVC_MSSQLUSER");
            string pwd = Environment.GetEnvironmentVariable("IOT_HOSTING_SQLSERVERSVC_MSSQLPASSWORD");
            string server = Environment.GetEnvironmentVariable("SQLSERVERSVC_SERVICE_HOST");
            string database = Environment.GetEnvironmentVariable("IOT_HOSTING_SQLSERVERSVC_MSSQLDATABASE");
            strConn = $"server={server};uid={uid};pwd={pwd}; database={database};";
        }

        public static DataTable GetTable(string strSQL, SqlParameter[] pas)
        {
            return GetTable(strSQL, pas, CommandType.Text);
        }

        public static DataTable GetTable(string strSQL, SqlParameter[] pas, CommandType cmdtype)
        {
            DataTable dt = new DataTable(); ;
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
                da.SelectCommand.CommandType = cmdtype;
                if (pas != null)
                {
                    da.SelectCommand.Parameters.AddRange(pas);
                }
                da.Fill(dt);
            }
            return dt;
        }

        public static int ExcuteSQL(string strSQL)
        {
            return ExcuteSQL(strSQL, null);
        }

        public static int ExcuteSQL(string strSQL, SqlParameter[] paras)
        {
            return ExcuteSQL(strSQL, paras, CommandType.Text);
        }

        public static int ExcuteSQL(string strSQL, SqlParameter[] paras, CommandType cmdType)
        {
            int i = 0;
            using (SqlConnection conn = new SqlConnection(strConn))
            {
                SqlCommand cmd = new SqlCommand(strSQL, conn);
                cmd.CommandType = cmdType;
                if (paras != null)
                {
                    cmd.Parameters.AddRange(paras);
                }
                conn.Open();
                i = cmd.ExecuteNonQuery();
                conn.Close();
            }
            return i;
        }
    }
}

4、準(zhǔn)備Dockerfile文件

用于打包自研節(jié)點(diǎn)鏡像的Dockerfile文件:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Copy aspnetdemo /inetpub/wwwroot

使用微軟官方的aspnet:4.7.2鏡像作為基礎(chǔ)鏡像,該鏡像包含:

  • Windows Server Core

  • IIS 10 

  • .NET Framework(支持.Net框架多個(gè)版本,最高支持4.7.2)

  • 對(duì) IIS 在 .NET 方面的擴(kuò)展

用于打包初始化節(jié)點(diǎn)鏡像的Dockerfile文件:

FROM mcr.microsoft.com/windows/servercore:1809

COPY db.sql /db.sql
COPY DbInitApp.exe /DbInitApp.exe

ENTRYPOINT DbInitApp.exe

5、發(fā)布Demo應(yīng)用

使用Visual Studio以文件夾方式發(fā)布asp.net mvc應(yīng)用(基于4.5 .Net Framework)。image.png

鏡像打包

1、打包自研節(jié)點(diǎn)鏡像

將以上準(zhǔn)備好的Dockerfile文件與Demo應(yīng)用放到同一目錄下:image.jpeg

使用docker build -t aspnetdemo:v1.0.0 .命令進(jìn)行鏡像打包。打包成功后如下圖:image.jpeg

1、打包初始化點(diǎn)鏡像

將db.sql、DbInitApp.exe與Dockerfile放到同一目錄下,執(zhí)行命令docker build -t dbinit:v1.2.3 . 進(jìn)行打包:

image.jpeg

鏡像上傳

請(qǐng)參照鏡像倉(cāng)庫(kù),第5小節(jié),或者登錄物聯(lián)網(wǎng)平臺(tái)后在鏡像管理,鏡像列表中點(diǎn)擊查看,也可以看到鏡像上傳相關(guān)方法。

鏡像部署

登錄到阿里云物聯(lián)網(wǎng)平臺(tái),在左邊菜單欄中找到應(yīng)用托管->應(yīng)用配置并打開。然后點(diǎn)擊右上角的使用鏡像創(chuàng)建配置填寫好相關(guān)配置信息:

image.png

配置創(chuàng)建后,在配置列表中點(diǎn)擊編輯進(jìn)入相關(guān)節(jié)點(diǎn)配置頁(yè)面,依次拖動(dòng)SqlServer節(jié)點(diǎn)、初始化節(jié)點(diǎn)與自研節(jié)點(diǎn)各一個(gè)到右邊的畫布,填寫好每個(gè)節(jié)點(diǎn)的相關(guān)配置并連線,詳細(xì)配置如下:

1、SqlServer服務(wù)器節(jié)點(diǎn)配置

這里按照之前約定的SqlServer服務(wù)器配置信息進(jìn)行填寫,見下圖:image.png

2、SqlServer服務(wù)器初始化節(jié)點(diǎn)配置

在數(shù)據(jù)庫(kù)的初始化需要較長(zhǎng)時(shí)間或初始化需要寫入大量數(shù)據(jù)情況下,把數(shù)據(jù)庫(kù)相關(guān)的初始化工作放到初始化節(jié)點(diǎn)中是最佳實(shí)踐。這里使用的是通用的初始化節(jié)點(diǎn),它的特點(diǎn)是需要自己打包制作鏡像,并在鏡像內(nèi)執(zhí)行數(shù)據(jù)庫(kù)初始化相關(guān)工作。該節(jié)點(diǎn)配置如下:image.png

3、自研節(jié)點(diǎn)配置

自研節(jié)點(diǎn)是運(yùn)行我們Demo應(yīng)用的節(jié)點(diǎn),鏡像版本選擇剛打包上傳的版本1.0.0。注意限制應(yīng)用的內(nèi)存使用,避免因內(nèi)存不足導(dǎo)致節(jié)點(diǎn)重啟或發(fā)生錯(cuò)誤。相關(guān)配置如下:image.png

請(qǐng)仔細(xì)核對(duì)各個(gè)配置信息是否填寫正確,以免導(dǎo)致稍后部署運(yùn)行失敗。

4、部署并運(yùn)行

在左側(cè)菜單欄中打開應(yīng)用管理,選擇之前的配置進(jìn)行部署,等待部署成功后,點(diǎn)擊應(yīng)用列表中進(jìn)入管理頁(yè)面,點(diǎn)擊打開臨時(shí)域名鏈接就可以查看部署的Demo應(yīng)用了,見下圖:image.png

Demo下載

Aspnet+Sqlserver+dbInit