999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ASP.Net Core的工作日志上傳系統的設計

2021-10-21 02:15:36王建祥
信息記錄材料 2021年9期
關鍵詞:數據庫用戶服務

王建祥

(河南省濟源鋼鐵<集團>有限公司信息化儀表處信息化科 河南 濟源 454650)

1 引言

基于ASP.Net Core的工作日志上傳系統是利用ASP.Net Core MVC的優勢,使用基于內置依賴注入和接口技術的軟件設計,實現的功能是:用戶使用Web登錄系統,添加工作日志記錄,所添加的日志記錄的文本添加到數據庫中,上傳附件文件添加到root用戶下的/root/JobLogSystem/publish/wwwroot/file路徑的文件夾中。

本系統的優點:(1)使用ASP.Net Core MVC技術,軟件系統對用戶來說使用B/S架構,較C/S架構的應用軟件系統有明顯優勢[1],使整個系統的軟件設計標準化和輕量化,用戶使用Web登錄添加工作日志記錄。(2)使用ASP.Net Core的跨平臺特性,將軟件發布后的文件部署到Oracle Linux 7.6服務器進行測試和試運行。

2 總體設計

2.1 ASP.Net Core的特點

ASP.Net Core的優勢:(1)開源、跨平臺。ASP.NET Core是開放源代碼通用開發平臺,由Microsoft和.NET社區在GitHub上共同維護,跨平臺支持 Windows、Linux和macOS,用于構建Web應用、IOT應用和移動后端APP應用;(2)性能優越。根據ASP.Net Core團隊的性能測試數據,ASP.Net Core(.net core)相較Web(.net framework 4.6)程序性能提升約2300%;(3)內置依賴注入;(4)輕量級和模塊化的中間件HTTP請求管道;(5)能夠在Linux操作系統或Windows服務器的IIS上運行。

2.2 ASP.Net Core的特性

2.2.1 ASP.Net Core總體性能概述

本系統ASP.Net Core設計使用的技術主要有:(1)開發軟件使用Visual Studio2019和c#語言,主要框架使用ASP.NET Core MVC,.Net Core2.2是目前較新的版本;(2)數據庫使用.Net Core 2.2自帶的EF Core2.2技術,切換數據庫只需要修改幾行代碼就可實現;(3)使用ASP.NET Core Web API可構建多種客戶端的http服務;(4)基于接口的異步編程技術提高運行效率和程序的可擴展性;(5)ASP.NET Core Identity身份認證技術,提高程序的安全性同時簡化編程;(6)把編譯的應用程序代碼部署和發布到Oracle Linux 7.6服務器。

2.2.2 ASP.Net Core項目的總體架構

本項目使用ASP.Net Core MVC架構和C#編程技術,在編程完成后,由Visual Studio2019工具通過發布功能生成Publish文件夾,把Publish文件夾部署到Oracle Linux 7.6操作系統。發布和部署Publish文件夾到Oracle Linux 7.6操作系統過程如下。

(1)安裝.net core sdk 2.2。

(2)安裝Nginx反向代理服務器軟件。反向代理服務器有安全過濾、內容緩存、負載均衡的作用。Nginx反向代理器開啟后用戶輸入網址發起請求后,請求先到達Nginx代理服務器,Nginx代理服務器再把請求轉給數據服務器,從而減輕數據服務器的壓力。

(3)配置守護進程Supervisor,用于Oracle Linux 7.6服務器開機后可以自動啟動運行.net core sdk 2.2,Oracle Linux 7.6服務器停機檢修后重啟不會影響用戶Web訪問。

綜上所述,ASP.Net Core MVC項目總體架構見圖1。

圖1 ASP.Net Core MVC項目總體架構圖

3 軟件設計

本系統使用ASP.Net Core MVC架構,使用Visual Studio2019工具和C#進行軟件開發,步驟如下。

3.1 基于內置依賴注入和接口技術的軟件設計原理分析

3.1.1 Program.cs文件

Program.cs文件表明該項目本質是控制臺項目,IIS Express運行按鍵右側的下拉菜單中選擇“JobLogUploadSystem”就可進入控制臺運行程序;Program.cs作為Web應用程序的默認入口,不做任何修改的情況下,會調用同目錄下 Startup.cs中的 ConfigureServices()方法和Configure()方法;Build方法構建Web應用程序,然后去運行CreateWebHostBuilder(args)調用下面的方法,返回IWebHostBuilder對象,從而運行Web應用程序,即啟動始終運行監聽http請求的任務;使用默認的配置信息來初始化新的IWebHostBuilder實例,為WebHost指定Startup類。

3.1.2 Startup.cs文件

Startup.cs文件啟動項目后做初始化的設置工作,在ConfigureServices()方法中注入項目所需的服務和中間件。服務就是類,用于實現某功能的函數或稱方法,中間件是方法和委托;ConfigureServices方法用于把各類服務services, 例如identity、ef、mvc等包括第三方服務注冊register到asp.net core的容器container中去,并配置這些服務services。容器container是用來進行依賴注入dependency injection。所有注入的服務services,包括框架已經注冊的服務services,在后面編程時可注入inject到代碼,即在代碼需要的地方能直接使用ConfigureServices()中已經依賴注入的對象。Configure()方法是asp.net core程序用來具體指定處理每個http請求的方法, 例如調用app.UseMvc()方法使程序通過mvc來處理http請求。

3.2 EF Core Code First方式設計數據庫

3.2.1 創建C#實體類

在Models文件夾下創建實體類JobLog.cs,屬性標簽是[Required],需導入using System.ComponentModel.DataAnnotations,JobLog.cs實體類中的Id將會被EF Core自動識別成主鍵。

3.2.2 創建EF Core上下文類

創建繼承于DbContext上下文基類的上下文類JobLogContext,JobLogContext中自動會有基類下方法屬性可用,需導入using Microsoft.EntityFrameworkCore;此處注入方式使用通過需要傳參的構造函數的類的注入。因為注入JobLogContext服務后,編程時使用該類實例時仍需調用該類的構造方法去實例化對象,注入服務時需傳遞連數據庫的Action,因此構造函數必須是具有參數的構造函數,即通過需要傳遞參數的構造函數的類的注入。

3.2.4 根據實體類和上下文類生成數據庫對象

根據實體類JobLog.cs和上下文類JobLogContext.cs,通過EF core的遷移技術從模型生成數據庫對象。具體操作兩個命令執行:(1)Visual Studio 2019-工具-NuGet包管理器-程序包管理控制臺,輸入如下命令:Add-Migration JobLog2。說明:Add-Migration為遷移數據命令,遷移名稱是JobLog2,執行后會在項目根目錄下生成Migrations文件夾,文件夾下生成相關的類。

(2)Update-Database命令。說明:執行該命令,生成SQL SERVER數據庫中的相關數據對象。

3.2.5 添加操作數據庫的倉儲接口類

在JobLobSystem工程下創建文件夾Repository用于存放操作數據庫的倉儲文件,在Repository文件夾下添加IJobLogRepository.cs接口;

3.2.6 添加倉儲接口類的實現類

添加JobLogRepository.cs類用于實現IJobLogRepository.cs接口,JobLogRepository.cs實現類內使用異步方法用于提高執行效率。

3.2.7 在Startup.cs中注入倉儲類服務

在Startup.cs中注入倉儲類服務JobLogRepository.cs用于操作數據庫,此處使用接口形式注入。

3.2.8 添加JobLogController控制器

在Controller文件夾下添加JobLogController控制器,并實現Index操作及Add操作。

3.2.8.1 Controller文件夾下添加JobLogController控制器

3.2.8.2 展示添加頁面

public IActionJobLog Add(){return View();}//顯示增加記錄界面。

3.2.8.3 展示添加日志記錄界面

3.2.9 添加Add函數對應視圖

添加Add()函數對應視圖Add.cshtml,設計時按照如下參數設置[2];

視圖名稱:Add

模板:Create

模型類:JobLogModle (JobLogSystem.ViewModels)

數據庫上下文類:JobLogContext(JobLogSystem.Models)

3.2.10 添加Index()函數對應視圖

添加Index()函數對應視圖Index.cshtml,設計時按照如下參數設置;

視圖名稱: Index

模板: List

模型類: JobLog(JobLogSystem.Models)

數據庫上下文類: JobLogContext(JobLogSystem.Models)

3.3 實現工作日志分類多項選擇

3.3.1 添加工作日志記錄分類選項的流程

為工作日志記錄添加可選類型的具體編程流程,見圖2。

圖2 為工作日志記錄添加可選類型的具體流程

3.3.2 添加工作日志記錄分類選項的效果

添加工作日志記錄分類選項后的程序運行效果,見圖3。

圖3 添加工作日志記錄分類選項的程序運行效果

3.4 系統集成Identity實現登錄和注冊

下面使用ASP.NET Core Identity實現用戶注冊和登錄[3],以及綁定對應的JobLog.cs類,然后用戶上傳和查看JobLog記錄。

3.4.1 安裝Nuget依賴包

安裝Microsoft.AspNetCore.Identity.EntityFramework CoreNuget依賴包,配合EF Core操作數據庫存儲數據。

3.4.2 添加用戶類

在Models文件夾中添加繼承于IdentityUser的JobLogUser類,JobLogUser類就會自動添加IdentityUser的默認username、email等常用的用戶屬性,也可添加用戶地址等其他屬性。JobLogUser代表網站的注冊用戶,內置的IdentityUser屬性能根據需要擴展使用。

using Microsoft.AspNetCore.Identity; //需要導入Identity命名空間

3.4.3 改造上下文類

導入using Microsoft.AspNetCore.Identity.EntityFrameworkCore,把JobLogContext上下文類原來繼承于DbContext.cs改成繼承于IdentityDbContext.cs;

3.4.4 更新數據庫對象

打開程序包管理控制臺執行以下命令:

執行完畢后,SQL SERVER數據庫即可更新對應的數據對象。

3.4.5 在Startup中注入Identity服務3.4.5.1 ConfigureService方法中注入Identity服務在Startup類的ConfigureService方法中注入Identity服務,通過依賴注入使Identity服務可用于應用程序。

3.4.5.2 Configure方法中調用UseAuthentication

在startup類的Configure()方法中調用UseAuthentication()方法為應用程序啟動Identity中間件。

app.UseAuthentication(); //啟 用UseAuthentication為應用程序啟動Identity服務。

3.4.6 添加兩個ViewModel用于生成視圖

添加LoginViewModel類和RegisterViewModel類,分別對應于登錄與注冊的需要,并通過打上特性來保證相應字段的要求,后面會使用這兩個類生成視圖。

3.4.7 添加控制器

添加控制器AccountController

3.4.8 創建視圖Login.cshtml及Register.cshtml

3.4.8.1創建Login.cshtml視圖

按照如下配置創建Login.cshtml視圖并修改其代碼;

視圖名稱: Login

模板: Create

模板類: LoginViewModel(JobLogSystem.ViewModels)

數據上下文類: JobLogContext(JobLogSystem.Models)

3.4.8.2創建Register.cshtml視圖

按照如下配置創建Register.cshtml視圖并修改其代碼;

視圖名稱: Register

模板: Create

模板類: RegisterViewModel(JobLogSystem.ViewModels)

數據上下文類: JobLogContext(JobLogSystem.Models)

創建視圖Login.cshtml及Register.cshtml后修改其代碼,即可實現注冊—登錄—注銷等用戶功能,具體實現過程:訪問Account控制器,UserManager和SignInManager服務被注入到Controller中,如果是注冊提交信息,Register操作調用UserManager的CreateAsync方法創建用戶,注冊成功后跳轉到Login,輸入剛注冊的信息登錄,Login操作調用SingInManager的PasswordSignInAsync方法登錄用戶并寫Cookie信息,登錄以后注銷將調用LogOff操作,調用SignInManager的SignOutAsync方法注銷用戶,并清除Cookie信息。

3.5 軟件總體結構

工作日志上傳系統軟件總體結構見圖4。

圖4 工作日志上傳系統軟件總體結構

4 軟件部署實施和試運行

4.1 軟件部署實施的具體步驟

(1)在虛擬機Vmware Workstation軟件中安裝Oracle Linux 7.6操作系統。

(2)在Oracle Linux 7.6的目錄:在Visual Studio 2019軟件執行發布操作,生成publish發布文件夾,將publish發布文件夾上傳到Oracle Linux 7.6中root用戶下的 /root/JobLogSystem路徑。

(3)在Oracle Linux 7.6中root用戶下安裝.NET CORE SDK2.2軟件[4]。

(4)安裝配置Nginx反向代理軟件,用于減輕服務器工作壓力。

(5)配置守護進程Supervisor,使Oracle Linux 7.6操作系統重啟后自動SDK服務,不影響用戶訪問Web服務。

4.2 ASP.NET CORE軟件試運行具體步驟

(1)運行虛擬機下的Oracle Linux 7.6,見圖5。

圖5 運行虛擬機下的Oracle Linux 7.6

(2)在Google Chrome瀏覽器下,輸入地址: 192.168.1.103:5000,回車運行,見圖6。

圖6 工作日志上傳系統登錄界面

(3)點擊“注冊”按鍵,見圖7。

圖7 點擊注冊按鍵

輸入,點擊“注冊”;注冊成功沒有提示。注冊錯誤會顯示注冊信息錄入錯誤的原因,請按提示重新錄入注冊信息,直到注冊成功。

(4)在登錄界面,輸入用戶名“ZhangSan”,密碼”123456”,點擊“登錄“。見圖8。

圖8 登錄后界面

(5)點擊“Create“按鍵后,手動錄入新的運維記錄,見圖9。

圖9 錄入工作日志記錄界面

(6)點擊“Create“按鍵,見圖10。

圖10 添加工作日志記錄后回到顯示界面

(7)下載20210107張三上傳的《20210107誤工記錄》,點擊“張三 20-1-7下午9:58:27”記錄對應的“下載按鍵”,彈出新建下載任務對話框,選擇下載路徑,點擊保存,即可下載《20210107誤工記錄》文檔,見圖11。

圖11 下載工作日志記錄中的文件

5 結論

由上述軟件部署實施和試運行可知:(1)跨平臺和輕量級。本系統基于ASP.NET CORE的軟件設計,可以經發布后部署到Linux服務器,實現了軟件的跨平臺部署;由于軟件采用基于依賴注入和接口的技術,可以根據需要注入服務的特性使得程序較為輕量。

(2)輕松實現數據庫遷移。本系統剛開始使用數據庫SQL SERVER,發布操作生成的publish文件部署到Oracle Linux 7.6后,添加日志記錄后,信息記錄上傳到SQL SERVER服務器,而日志記錄中的文件則上傳到Oracle Linux 7.6的/root/JobLogSystem/publish/wwwroot/file目錄。只需要改動一句程序就可實現改用文件數據庫SQlite,由于SQlite可以存在于publish文件夾中,所以添加日志記錄后,信息記錄和上傳的文件記錄都在Oracle Linux 7.6的publish文件夾中。

(3)EF CORE技術可以很方便地用于SQL SERVER數據庫,對于EF CORE技術用于Oracle數據庫,正在學習與研究。

猜你喜歡
數據庫用戶服務
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 国产成人夜色91| 亚洲成人精品| 亚洲综合欧美在线一区在线播放| 老司机精品99在线播放| 亚洲香蕉久久| 国产成人综合久久精品尤物| 91精品最新国内在线播放| 国产三级精品三级在线观看| 亚洲成肉网| 国产天天色| 欧美一道本| 欧美色视频日本| 精品无码日韩国产不卡av| 91精品综合| 国产成人乱无码视频| 色天堂无毒不卡| 日韩av无码精品专区| 天天视频在线91频| 免费不卡视频| 国产乱论视频| 色噜噜狠狠狠综合曰曰曰| 国产乱人乱偷精品视频a人人澡| 超碰免费91| 久久久久久国产精品mv| 成人a免费α片在线视频网站| 欧美色图久久| 欧美日韩综合网| 中文字幕免费播放| 91亚洲视频下载| 91国内视频在线观看| 国产精品不卡片视频免费观看| 国产欧美日韩精品第二区| 久久久亚洲色| 国产精品极品美女自在线| 日韩久草视频| 色综合热无码热国产| 国产人前露出系列视频| 国产精品入口麻豆| 综合久久久久久久综合网| 热99精品视频| 99久视频| 亚洲人在线| 亚洲swag精品自拍一区| 久久无码av三级| 亚洲制服丝袜第一页| 精品偷拍一区二区| 日韩a级毛片| 国产在线视频二区| 亚洲国产日韩一区| 日韩 欧美 国产 精品 综合| 国产人妖视频一区在线观看| 国产精品福利尤物youwu| 久久婷婷六月| 亚洲自偷自拍另类小说| 72种姿势欧美久久久大黄蕉| 国产成人精品18| 国产精品福利在线观看无码卡| 伊人久久婷婷| 天堂成人av| 国产精品一区二区国产主播| 国产十八禁在线观看免费| 五月婷婷精品| 国产清纯在线一区二区WWW| 天天做天天爱夜夜爽毛片毛片| 国产日本欧美在线观看| 亚洲三级a| 欧美激情视频在线观看一区| 91热爆在线| 国产传媒一区二区三区四区五区| 欧美日韩一区二区三区在线视频| 国产成人永久免费视频| 国产成人免费观看在线视频| 中文字幕 日韩 欧美| 色偷偷男人的天堂亚洲av| 亚洲最大情网站在线观看| 亚洲人成网站18禁动漫无码 | 毛片大全免费观看| 国产精品嫩草影院av| 丝袜久久剧情精品国产| 久久综合激情网| 色综合五月婷婷| 嫩草国产在线|