日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器

發(fā)布時間:2023/12/4 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在業(yè)余時間玩玩樹莓派,剛開始的時候在樹莓派里寫一些基于wiringPi庫的C語言程序來控制樹莓派的GPIO引腳,從而控制LED發(fā)光二極管的閃爍,后來覺得,是不是可以使用HTML5+jQuery等流行的前端技術做一個簡單的Web站點,讓樹莓派搭載這個站點,通過手機或者平板電腦來控制樹莓派。經(jīng)過一番調研,考慮如下:

  • 使用Apache或者Nginx搭建一個Web服務器

    • 優(yōu)點:服務器實現(xiàn)相對成熟

    • 缺點:偏重,而且與樹莓派的交互需要涉及Service調用,而實現(xiàn)RESTful服務對于Apache或者Nginx需要額外的組件支持,要付出一定的學習成本

  • 使用Python+Flesk

    • 優(yōu)點:技術相對成熟,也有很多成功應用案例

    • 缺點:對于我來說需要額外學習Python語言

基于這樣的前提,鑒于目前Mono在Linux下的出色表現(xiàn),想想還是自己使用.NET開發(fā)一個輕量型的Web服務器吧,第一期版本讓它既支持靜態(tài)文件的訪問服務,也支持RESTful API的調用,在RESTful API中可以暴露訪問樹莓派GPIO引腳的接口,供HTML5+jQuery的單頁面應用調用,于是也就實現(xiàn)了在任意設備上通過瀏覽器來控制樹莓派的目的。

Raspkate項目

Raspkate項目的名字,我想就是兩個方面:Rasp,它來源于樹莓派的英文名字Raspberry Pi,有表示“小、輕量”的意義,而Kate則取名于英語中的“風箏”,寓意能夠充分發(fā)揮開發(fā)者的想象,對其進行擴展和定制。Raspkate就是這樣一款基于.NET Framework、由C#開發(fā)的輕量型Web服務器,它的核心部分是一個HttpListener對象,通過多線程模型將HTTP請求異步委托給HttpListener執(zhí)行。當一個HTTP請求被接受的時候,Raspkate會根據(jù)請求的格式或類型,分配特定的模塊(Module)對請求進行處理,然后將處理結果返回。如果請求的是一個文件,那么Raspkate會返回文件的內容,如果是一個RESTful請求,則Raspkate會使用已經(jīng)注冊的RESTful API控制器來處理這個請求,并將計算結果以JSON格式返回。

開源地址

Raspkate項目是開源的,代碼庫地址是:https://github.com/daxnet/raspkate,所使用的許可協(xié)議是GPL2.0,(因為其所使用的與樹莓派相關的組件是第三方的由GPL2.0授權的開源庫),因此,不能在商業(yè)環(huán)境中使用此項目。

應用場景

您可以在以下場景中使用Raspkate:

  • 在自己的應用程序中實現(xiàn)內建的Web服務器(Self-Hosting)

  • 將Raspkate寄宿在Windows Service中,向外提供RESTful服務

  • 將Raspkate寄宿在Windows Service中,向外提供靜態(tài)Web頁面請求服務

  • 將Raspkate作為樹莓派中的一個獨立的小型Web服務器,提供控制樹莓派GPIO的Web用戶界面

  • 整體架構

    下圖展示了Raspkate項目的整體架構設計:

    可以看到,在Raspkate核心部分就是一個HTTP Listener組件,并且由Module和Configuration支撐Raspkate完成HTTP請求處理。每個模塊可以包含多個HTTP Handler,這在定義模塊的時候可以對多個HTTP Handler進行注冊。

    Raspkate配置信息(也就是上圖中的Configuration)非常簡單,下圖就是這個配置信息的類型視圖,在RaspkateConfiguration對象上,設定了HttpListener所使用的Prefix,而Modules部分則指定了Raspkate掃描可用模塊的路徑,IsRelative指定模塊路徑是否是相對的。

    以下是一個標準的Raspkate配置文件:

    1 2 3 4 5 6 7 8 9 10 11 12 <? xml? version="1.0" encoding="utf-8" ?> < configuration > ?? < configSections > ???? < section? name="raspkateConfiguration" type="Raspkate.Config.RaspkateConfiguration, Raspkate"/> ?? </ configSections > ?? < raspkateConfiguration? xmlns="urn:Raspkate.Config" prefix="http://127.0.0.1:9023/"> ???? < modules > ?????? < add? path="modules"/> ???? </ modules > ?? </ raspkateConfiguration > </ configuration >

    代碼使用

    首先,使用Git客戶端將代碼庫克隆到本地:

    1 git clone <a href="https://github.com/daxnet/raspkate">https://github.com/daxnet/raspkate</a>

    然后,在裝有MSBuild的Windows機器上,執(zhí)行build.bat命令:

    • build.bat All?- 這將編譯所有模塊,并將模塊的二進制文件復制到modules目錄下

    • build.bat Minimal?- 這僅編譯核心模塊(不包含類似樹莓派支持等擴展模塊)

    如果是在裝有Mono的Linux機器上,則相應地執(zhí)行build.sh即可。

    在編譯完成之后,進入bin目錄,執(zhí)行RaspkateService.exe即可(注意:如果是在樹莓派中執(zhí)行,并且希望加載樹莓派支持模塊,則需要通過?sudo ./RaspkateService.exe?命令執(zhí)行,以獲得root權限)。在成功啟動后,你應該看到類似下面的畫面:

    這時,打開瀏覽器,在瀏覽器中輸入http://127.0.0.1:9023,您應該可以看到類似以下的畫面:

    這表示您已經(jīng)成功運行Raspkate服務,此頁面顯示了運行服務器相關的信息。注意:如果你希望你的Raspkate服務能夠在同網(wǎng)絡的其它機器訪問,請在執(zhí)行RaspkateService.exe之前,將RaspkateService.exe.config文件中的Prefix設置修改為:http://+:9023/。但這樣做可能會牽涉到用戶訪問控制的問題,如果將Prefix改為該值后,出現(xiàn)Raspkate無法啟動的問題,請先在Command Line執(zhí)行:

    1 netsh http add urlacl url="http://+:9023/" user=everyone

    演示

    這里有幾張屏幕截圖,展示了Raspkate提供的相關功能。

    獲取并顯示樹莓派信息

    以下屏幕截取自我的手機瀏覽器,分別顯示了我的樹莓派系統(tǒng)信息、樹莓派主板信息以及樹莓派中所有引腳的名稱、類型和電平值列表。

    ????????

    使用HTML5+jQuery控制發(fā)光二極管的點亮和熄滅狀態(tài)

    前端是一個寄宿在Raspkate上的一個HTML5+jQuery的單頁面應用,后端是運行Raspkate的樹莓派。

    ????


    陳晴陽(Sunny Chen),2003年畢業(yè)于中南大學鐵道校區(qū)。高級程序員,系統(tǒng)分析員,微軟MVP(Visual C#)。cnblogs網(wǎng)名daxnet,并打算以該名闖蕩IT江湖。MicrosoftDynamics?AX、Microsoft .NET/C#以及領域驅動設計(DDD)的狂熱愛好者。

    原文地址:http://www.cnblogs.com/daxnet/p/5306587.html


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    贊賞

    人贊賞

    總結

    以上是生活随笔為你收集整理的Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。