一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

輕松搞定軟件更新后端,Aardio JSON-RPC 2.0 讓你事半功倍!

 只怕想不到 2024-12-16

你是這樣的開發(fā)者嗎?

想象一下,你是一個開發(fā)者,正在為自己的軟件設(shè)計一個更新后臺。傳統(tǒng)的方法總是讓人頭大:配置服務(wù)器、數(shù)據(jù)庫、API接口,簡直繁瑣到不想動彈。別擔(dān)心,今天我來教你一招,讓你用 Aardio + JSON-RPC 2.0 輕松搞定!

為什么選擇 Aardio 和 JSON-RPC 2.0?

Aardio 是一個輕量級的編程語言,特別適合快速開發(fā)桌面應(yīng)用。而 JSON-RPC 2.0 則是一個簡單易用的遠(yuǎn)程調(diào)用協(xié)議。兩者結(jié)合,簡直是小型項目開發(fā)的完美拍檔!這是上一篇的介紹:
服務(wù)端開發(fā)太復(fù)雜?試試Aardio + JSON-RPC 2.0,輕松搞定!

實戰(zhàn)演練:幾步到位

第一步:創(chuàng)建 SQLite 數(shù)據(jù)庫

我們需要一個數(shù)據(jù)庫來存儲軟件版本信息。打開 SQLite,創(chuàng)建一個名為 versions.db 的數(shù)據(jù)庫,并建立一個 versions 表:

CREATE TABLE versions ( id INTEGER PRIMARY KEY, software_name TEXT, software_version TEXT, download_url TEXT);

字段包含:id, 軟件名稱, 軟件版本號, 下載地址

第二步:插入測試數(shù)據(jù)

來一些測試數(shù)據(jù),方便我們后續(xù)測試,這里的下載地址實際應(yīng)用中放到服務(wù)器iis服務(wù)文件夾里,可以直接下載:

INSERT INTO versions (software_name, software_version, download_url) VALUES ('MyApp', '1.0.0', 'http://localhost/update/MyApp_1.0.0.exe');

用aardio代碼實現(xiàn):

import console; 
import sqlite;
var db = sqlite('/versions.db');//打開數(shù)據(jù)庫連接,參數(shù)指定硬盤文件路徑
//創(chuàng)建數(shù)據(jù)表
ifnot db.existsTable('versions'/*是否已存在指定的表*/ ) {  
    db.exec( 'CREATE TABLE versions (
    id INTEGER PRIMARY KEY,
    software_name TEXT,
    software_version TEXT,
    download_url TEXT
    );'
 );
}  

db.exec('INSERT INTO versions (software_name, software_version, download_url) VALUES ('MyApp', '1.0.0', 'http://localhost/update/MyApp_1.0.0.exe');')

db.close()

console.log('versions.db 數(shù)據(jù)庫創(chuàng)建完成')
console.pause();

第三步:編寫服務(wù)端代碼

用 Aardio 寫個簡單的服務(wù)器:

import win
import wsock.tcp.simpleHttpServer;
import console

console.log('http://127.0.0.1:8080/jsonrpc 已啟動');
namespace wsock.tcp.simpleHttpServer{
    startIp = '0.0.0.0'//不限制本機 IP
    startPort = 8080; //不指定端口時會自動分配空閑端口
    startBacklog = 20 //指定排隊隊列數(shù),默認(rèn)是5
   
}

wsock.tcp.simpleHttpServer.startUrl(
    function(response, request) {
        if (request.path == '/jsonrpc') {
            
            //在多線程內(nèi)要導(dǎo)入需要的庫
            import sqlite
            import web.rpc.jsonServer;
            
            var jsonServer = web.rpc.jsonServer()
            
            jsonServer.getLatestVersion = function(software_name) {
                var db = sqlite('/versions.db')
                //查詢并返回一個結(jié)果鍵值對table
                var result = db.stepQuery('SELECT software_version, download_url FROM versions WHERE software_name='%s'', software_name)
                if (result) {
                    return {
                        'software_name': software_name,
                        'software_version': result.software_version,
                        'download_url': result.download_url
                    }
                } else {
                    return null
                }
            }
            
            jsonServer.rpc.onError = function(err, requestData) {
                console.log('發(fā)生錯誤:', err, requestData)
            }
            jsonServer.rpc.run()
        } else {
            response.error(404)
        }
    }
);

win.loopMessage()

第四步:編寫客戶端代碼

客戶端負(fù)責(zé)檢查更新并下載:

import web.rpc.jsonClient
import console
import inet.downBox
import fsys.version

var client = web.rpc.jsonClient('http://122.0.0.1:8080/jsonrpc')
var rep, err = client.getLatestVersion('MyApp')

if (rep[['result']]) {
    var versionInfo = rep.result

    // 比較本地版本和服務(wù)器版本
    if (fsys.version.getInfo(io.fullpath('\MyApp.exe')).fileVersion < fsys.version(versionInfo.software_version)) {
        //下載文件
        var url = versionInfo.download_url
        console.log('有新版本:',versionInfo.software_version)
        console.log('下載地址:',url)
     
        var down = inet.downBox(,'下載',true)
        if (down.download(url,'\MyApp.exe')) {
            console.log('下載完成')
            down.removeResumeFile() //移除配置文件
        }
    }
    else {
        console.log('文件已是最新無需更新')
    }
    
    
else if (err) {
    console.dump(err)
}

console.pause(true);

運行效果:

圖片

這個簡單的例子,實際應(yīng)用中可以進(jìn)行擴展

  • 安全性:加個認(rèn)證機制,確保接口和數(shù)據(jù)庫連接安全。
  • 錯誤處理:代碼里加點異常處理,防止數(shù)據(jù)庫連接失敗或下載出錯。
  • IIS服務(wù)器配置:確保文件路徑正確,權(quán)限設(shè)置妥當(dāng)。
    ?? 叮咚!風(fēng)行者Aardio 編程學(xué)習(xí)狂歡月正式開啟!??
圣誕的禮物還沒準(zhǔn)備好?元旦的假期計劃還沒想好?別擔(dān)心!這個12月,風(fēng)行者Aardio編程培訓(xùn)班為你準(zhǔn)備了超值優(yōu)惠活動,讓你在學(xué)習(xí)編程的同時,也能享受節(jié)日的快樂!
?? 活動時間: 12月13日 - 1月1日
?? 活動內(nèi)容:
  • 特惠85折: 活動期間所有課程限時 85折 優(yōu)惠,原價300元,現(xiàn)僅需 255元!

    ?? 活動對象:

    1.新手入門aardio困難的,沒資料,教程,有問題沒人回答
    2.項目有問題進(jìn)行不下去,找好用的庫和有人解答指導(dǎo)方向
    3.想了解,感興趣,想系統(tǒng)學(xué)習(xí)aardio的。
    4.想通過aardio賺錢。接單,寫項目。
    5.想通過aardio結(jié)合python編程的。
  • 靈活支付: 支持微信、支付寶(可用花唄)付款,學(xué)習(xí)編程更輕松!
課程詳細(xì)介紹:編程學(xué)習(xí)遇瓶頸難以突破?aardio 培訓(xùn)班幫你打破僵局!
?? 立即報名:
福利:永久使用庫和工具,視頻可反復(fù)看無限制,開放所有源碼例子,一對一疑問解答!
掃碼地址付:http://122.152.227.49/startpage/

付后聯(lián)系我提供截圖進(jìn)群學(xué)習(xí)
  • QQ:45561810
  • 微信:mkoijnn33

    少吃一頓宵夜的價格,就能學(xué)會一門技能!

?? 還在猶豫什么?這個12月,讓我們一起學(xué)習(xí) Aardio,開啟編程之旅!

圖片

圖片

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国内外免费在线激情视频| 欧美一区日韩二区亚洲三区| 成年女人午夜在线视频| 日本在线视频播放91| 老司机精品视频免费入口| 女厕偷窥一区二区三区在线| 少妇肥臀一区二区三区| 国产成人亚洲欧美二区综| 国产精品人妻熟女毛片av久久| 黄片美女在线免费观看| 亚洲欧美日韩在线看片| 日本东京热视频一区二区三区| 国产精品蜜桃久久一区二区| 国产精品不卡免费视频| 亚洲在线观看福利视频| 欧美乱码精品一区二区三| 日韩成人h视频在线观看| 东京干男人都知道的天堂| 九九热九九热九九热九九热| 国产又爽又猛又粗又色对黄 | 国产日韩欧美国产欧美日韩| 国产精品香蕉在线的人| 欧美午夜国产在线观看| 国产精品不卡高清在线观看| 亚洲成人黄色一级大片| 国产精品超碰在线观看| 国产一区二区三区午夜精品| 欧美日韩综合免费视频| 国产免费人成视频尤物| 神马午夜福利一区二区| 国产精品久久精品毛片| 年轻女房东2中文字幕| 亚洲人午夜精品射精日韩| 国产精品刮毛视频不卡| 国产午夜福利一区二区| 精品欧美在线观看国产| 欧美日韩在线第一页日韩| 懂色一区二区三区四区| 91福利免费一区二区三区| 91插插插外国一区二区婷婷| 亚洲欧美日本成人在线|