跨平臺運行 Rafy 首次部署記錄

来源:http://www.cnblogs.com/zgynhqf/archive/2016/01/23/5153189.html
-Advertisement-
Play Games

一直想在 Linux 上使用 MONO 試試運行 Rafy,最近因為業務需要,總算是真正地試驗了一次。下麵是本次部署記錄的一些要點。 Linux 這次部署,我是和兩位同事一起來試驗的。由於我們對 Linux 都不太熟悉(多年前曾經用過很少一段時間的 RedHat,那些命令現在也早已忘記了,哈。),所...


一直想在 Linux 上使用 MONO 試試運行 Rafy,最近因為業務需要,總算是真正地試驗了一次。下麵是本次部署記錄的一些要點。

 

Linux

這次部署,我是和兩位同事一起來試驗的。由於我們對 Linux 都不太熟悉(多年前曾經用過很少一段時間的 RedHat,那些命令現在也早已忘記了,哈。),所以我們三個分別測試了三個不同的鏡像,最終選定了 OpenSUSE 的一個鏡像。(其實,我下載了一個Ubuntu,才 800M,安裝後老是有問題,不得不放棄,悲劇……)

相對於 Windows 來說,Linux 更輕量,安裝很簡單,安裝速度也非常快。

image

 

ASP.NET vNext vs MONO

這兩個是目前可行的 .NET 跨平臺方案。我們需要快速理解兩個方案,分析哪個方案的移植成本最低。

ASP.NET vNext

微軟本身已經逐步支持開源了,所以我們的想法自然是儘量先用微軟官方發佈的跨平臺方案。ASP.NET vNext(5) 目前已經發佈了 RC1。但是經測試,發現整個代碼構建於新的 API 之上,如果要把我們的程式移植到 vNext 之上,需要修改許多代碼。所以暫時還是沒有選擇使用 vNext,但是長期看來,必然還是需要選擇 VNext。

下麵是 vNext 官網和其文檔:

http://www.asp.net/vnexthttps://docs.asp.net/en/latest/index.html

下麵是一些 vNext 相關的系列教程:

解讀ASP.NET 5 & MVC6系列》、《ASP.NET 5系列教程》。

MONO

其實,目前來說,.NET 跨平臺,大家用的比較多的還是 MONO。官網:http://www.mono-project.com/ 

MONO 可簡單理解為跨平臺的 .NET 平臺,包括運行時、框架、工具。MONO 框架是 .NET 框架的重寫版本,其 API 儘量保持與 .NET 框架一致,也支持 CLI 規範,所以上層的應用程式不需要重新編譯,也可以直接運行在 MONO 上。所以直接使用 MONO 應該是成本最低的跨平臺方案。

但是,MONO 並不支持完整的 .NET,例如 WPF、WWF 就沒有在 MONO 上實現(詳見:《相容性對比》)。所以,我們可以使用一個工具來檢測應用程式是否會有相容性問題:“Mono Migration Analyzer”。

MONO 安裝完成後,對其進行了測試,可正確運行即可:

成功安裝 MONO 並測試

 

Web Server

在 Linux 在運行 MONO 可以使用 Apache、Nginx 等作為 Web 伺服器,見:《 MONO ASP.NET》、《mod_mono》。另外,國人編寫的 Jexus 伺服器也是比較流行的,對 .NET 支持非常好,用起來很簡單。所以我們選擇了最簡單的 Jexus 伺服器,降低學習的難度。微笑

這裡遇到了一個問題,Jexus 伺服器使用的是 IIS 經典模式,導致網站 Web.config 中 <System.WebServer> 配置節不可用(該配置節用於 IIS 集成模式)。這裡,需要把該配置節中的內容都修改到 <System.Web> 中對應的配置節即可。

 

最終運行環境

Linux(OpenSUSE)+MONO+Jexus+MVC5+Rafy+Oracle。

在上述環境中,程式總算可以運行了。

image

不過還是發現了很多的相容性問題。比較多的情況是由於 Linux 是大小寫敏感的,而 Windows 並不敏感,所以程式中大量的文件在 Linux 上‘找不到’。另外,Windows 中的路徑分隔符是’\’,而 Linux 中是 ‘/’,也導致了一些問題。關於程式移植時考慮的內容,詳見:《Application Portability》。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CouchDB是眾多稱作NoSQL解決方案中的一員。與眾不同的是,CouchDB是一個面向文檔的資料庫,在它裡面所有文檔域(Field)都是以鍵值對的形式存儲的。域(Field)可以是一個簡單的鍵值對、列表或者是map。
  • 1. 簡介說明 我們知道oracle中sqlplus裡面執行dml語句;是需要提交commit;若錯了;也可以回滾rollback; 然而在postgresql裡面預設是自動提交;執行完就馬上提交了,不能回滾,這樣容易導致誤操作的發生,有沒有什麼辦法避免這個風險呢?當然有,在psql中預設是...
  • SQL Server代理是所有實時資料庫的核心。代理有很多不明顯的用法,因此系統的知識,對於開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。SQL Server代理作業有一系列的一個或多個作業步驟組成。一個作業步驟會分配給特定的作業子系統,用來標識將要進行的作業步驟工作種類。每個作業...
  • 1、use_concat網上說法:CONCATENATION和UNION/UNION ALL操作比較類似,根據OR查詢條件,將一個查詢分解為兩個或更多的部分,然後在去掉兩個部分重覆的記錄。由於CONCATENATION執行計劃需要去掉重覆的記錄,因此和UNION ALL不同。和UNION也不同的是,...
  • 近期為了分析國內航空旅游業常見安全漏洞,想到了用大數據來分析,其實數據也不大,只是生產項目沒有使用Hadoop,因此這裡實際使用一次。先看一下通過hadoop分析後的結果吧,最終通過hadoop分析國內典型航空旅游業廠商的常見安全漏洞個數的比例效果如下:第一次正式使用Hadoop,肯定會遇到非常多的...
  • 常用操作: 整型類型操作: 1、相加__add__(),比如我有兩個變數a=19,b=20,那麼我想通過a調用此函數來與b相加,可以這樣做1 >>> a=192 >>> b=203 >>> c=-194 >>> d=a.__add__(b)5 >>> print d6 39也可以直接相加1 >>>....
  • 1. 安裝環境 linux版本:CentOSrelease6.2(Final) pg版本 :postgresql-9.5.02. pg資料庫下載地址--http://www.postgresql.org/ftp/source/3. 安裝依賴包>yum installgcc*>yum insta...
  • 前言今天在在清理資料庫,是MS SQL Server,其中用到分離資料庫文件。在這過程中,出現了一個小小的問題:誤將資料庫日誌文件刪除了,然後數據就打不開了,除了離線,其他操作都報錯。資料庫分離常規方法此方法是常規慣用的方式,多步驟。如圖所示:粗暴方法此方法簡單粗暴,非常實用,一條SQL語句就搞定了...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...