狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

WinForm 自動(dòng)更新程序(一)

admin
2023年2月27日 10:14 本文熱度 619

     在C/S這種模式中,自動(dòng)更新程序就顯得尤為重要,它不像B/S模式,直接發(fā)布到服務(wù)器上,瀏覽器點(diǎn)個(gè)刷新就可以了。由于涉及到客戶端文件,所以必然需要把相應(yīng)的文件下載下來(lái)。這個(gè)其實(shí)比較常見(jiàn),我們常用的微信、QQ等,也都是這個(gè)操作。

自動(dòng)更新程序也分為客戶端和服務(wù)端兩部分,客戶端就是用來(lái)下載的一個(gè)小程序,服務(wù)端就是供客戶端調(diào)用下載接口等操作。

這里第一步先將服務(wù)端代碼寫(xiě)出來(lái),邏輯比較簡(jiǎn)單,使用xml文件分別存儲(chǔ)各個(gè)文件的名稱以及版本號(hào)(每次需要更新的時(shí)候,將需要更新的文件上傳到服務(wù)器后,同步增加一下xml文件中對(duì)應(yīng)的版本號(hào))。然后比對(duì)客戶端傳進(jìn)來(lái)的文件版本,若服務(wù)端版本比較高,則加入到下載列表中??蛻舳嗽傺h(huán)調(diào)用下載列表中的文件進(jìn)行下載更新。

開(kāi)發(fā)環(huán)境:.NET Core 3.1

開(kāi)發(fā)工具: Visual Studio 2019

實(shí)現(xiàn)代碼:

//xml文件<?xml version="1.0" encoding="utf-8" ?><updateList>  <url>http://localhost:5000/api/update/</url>  <files>    <file name="1.dll" version="1.0"></file>    <file name="1.dll" version="1.1"></file>    <file name="Autoupdate.Test.exe" version="1.1"></file>  </files></updateList>
  //Model  public class updateModel {        public string name { get; set; }        public string version { get; set; }    }
public class updateModel_Out { public string url { get; set; } public List<updateModel> updateList { get; set; } }
//控制器namespace Autoupdate.WebApi.Controllers {    [Route("api/[controller]/[Action]")]    [ApiController]    public class updateController : ControllerBase {
[HttpGet] public JsonResult Index() { return new JsonResult(new { code = 10, msg = "success" }); }
[HttpPost] public JsonResult GetupdateFiles([fromBody] List<updateModel> input) { string xmlPath = AppContext.BaseDirectory + "updateList.xml";
XDocument xdoc = XDocument.Load(xmlPath); var files = from f in xdoc.Root.Element("files").Elements() select new { name = f.Attribute("name").Value, version = f.Attribute("version").Value }; var url = xdoc.Root.Element("url").Value;
List<updateModel> updateList = new List<updateModel>(); foreach(var file in files) {
updateModel model = input.Find(s => s.name == file.name); if(model == null || file.version.CompareTo(model.version) > 0) { updateList.Add(new updateModel { name = file.name, version = file.version }); } } updateModel_Out output = new updateModel_Out { url = url, updateList = updateList }; return new JsonResult(output); }
[HttpPost] public FileStreamResult DownloadFile([fromBody] updateModel input) { string path = AppContext.BaseDirectory + "files\\" + input.name; FileStream fileStream = new FileStream(path, FileMode.Open); return new FileStreamResult(fileStream, "application/octet-stream"); }
}}

實(shí)現(xiàn)效果:

只有服務(wù)端其實(shí)沒(méi)什么演示的,這里先看一下更新的效果吧。


代碼解析:就只介紹下控制器中的三個(gè)方法吧,Index其實(shí)沒(méi)什么用,就是用來(lái)做個(gè)測(cè)試,證明服務(wù)是通的;GetupdateFiles用來(lái)比對(duì)版本號(hào),獲取需要更新的文件(這里用到了Linq To Xml 來(lái)解析xml文件,之前文章沒(méi)寫(xiě)過(guò)這個(gè)方式,后面再補(bǔ)下);DownloadFile就是用來(lái)下載文件的了。


該文章在 2023/2/27 10:14:03 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved