2012-03-18 27 views
16

我有幾個基本的問題,熟悉單聲道或單聲道開發(無論它被稱爲),當涉及到.net編程和部署在Linux(和MAC如果你也知道)。關於我自己,我主要使用MVC3和MVC4,幾種窗體形式,也許在未來的移動應用程序中工作。 98%的時間在C#和其餘的C++。單聲道,asp.net c#和MVC如何和教程

1)您是否可能獲得更多的錯誤和錯誤,而不是堅持使用Windows部署?如果是這樣,一些錯誤有多糟糕,你有沒有工作的項目?

2)您是否建議在Visual Studio中編程,然後將其部署到單聲道平臺?還是有更好的IDE推薦,如Mono(如果可能的話,Eclipse)?目前我使用Linux作爲我的操作系統,並使用Visual Studio運行Windows 7。

3)由於我有幾個使用.net 4.5 beta和mvc4 beta完成的應用程序,它們是否與當前版本的Mono兼容?如果不是從框架正式發佈到Mono變得兼容時的平均時間框架是什麼?

4)我不懂數據庫。我的數據庫用於SQL Server,我是否必須將它們更改爲在Linux服務器上運行。這是一種痛苦還是錯誤?我的SQL服務器數據庫首先使用實體​​代碼創建,如果我必須創建MySQL數據庫(或其他),這是否工作?

5)目前我將我的mvc網站部署到Server 2008r2遠程服務器。有沒有一種替代你可以用於Linux的IIS?你能否給我提供一個關於設置這個教程的鏈接。

6)如果問題4有可能,在Linux上部署MVC網站會有什麼損失?速度,可靠性,安全性等?

7)你可以給我一個估計,這將佔用多少磁盤空間的單聲道+某種iis +框架等?在Linux操作系統與Windows操作系統的比較中,Windows佔用TON更多空間;那麼使用這種單聲道設置也會佔用大量的磁盤空間? (我知道操作系統大小比較不是一個好例子。)

8)有沒有什麼缺點,我可能忽略了,你可以想到?像目錄瀏覽,配置文件僱主,jquery/ajax問題等有任何奇怪的問題。

9)你有任何建議,教程,博客等?有沒有一個Stack Exchange站點比這個更好地處理這些類型的問題? (我找不到一個,除了可能是Linux的一個。

10)雖然這不是我必須這樣做,但我想設置它,只是爲了在未來,但我不會浪費我的時間,如果它是一個完整的浪費。我有一個現在租用的Linux VPS和Windows VPS,所以如果我這樣做了,它也允許我只有一臺Linux遠程服務器(可能硬盤空間和內存更少),這樣可能爲我省錢。所以我的最後一個問題是,如果你的情況與我的情況相似,你會推薦這樣做嗎?

請回答任何問題,你可以, 在此先感謝和這麼多問題抱歉, 加勒特Fogerlie

+1

我會建議你分開並一次提問1/2個問題 - 這將爲你提供更好的答案!另外,請查看http://serverfault.com/以更好地回答您的幾個問題。 – VinayC 2012-03-19 10:23:33

回答

32

首先,非常好的問題。

我沒有網絡使用ASP.Net MVC的經驗,但我確實有ASP.Net網絡表單的經驗和將商業ASP.Net應用程序從Windows遷移到在Linux上運行的Mono。

我可以回答你的一些問題。

1)你是否可能獲得更多的錯誤和錯誤,而不是堅持使用Windows部署?如果是這樣,一些錯誤有多糟糕,你有沒有工作的項目?

我會說是,但不是很多。我們的應用程序是200K +代碼行,目前我只能想到一個存在於我們的代碼中的Mono bug。這個錯誤正在調用會導致Apache崩潰的Session.Abandon方法。我認爲你會在更新的.Net API中發現更多的錯誤,但總的來說,這個框架非常穩定。

2)您是否建議在Visual Studio中編程,然後將其部署到單聲道平臺?還是有更好的IDE推薦,如Mono(如果可能的話,Eclipse)?目前我使用Linux作爲我的操作系統,並使用Visual Studio運行Windows 7。

我相信在它提供的功能/穩定性方面,沒有比Visual Studio更好的IDE。然而,在說這個MonoDevelop是一個非常好的IDE,它非常類似於Visual Studio。它只是缺少Visual Studio提供的許多額外功能。例如用於網頁的可視化設計器並附加到流程調試。在我工作的公司,我們在Windows/Mac和Linux上使用MonoDevelop。所以,如果你正在尋找一個跨平臺的解決方案,然後去MonoDevelop,但如果你不介意使用Windows作爲你的開發PC和支付VS許可證,那麼VS是好的。

編輯:作爲寫作Visual Studio Community Edition已被釋放,不需要許可證。還可以將.NET Core與您最喜歡的編輯器結合使用(或免費提供Visual Studio Code)。後者在Windows,Linux和Mac OS X上受支持)。現在還有Visual Studio for Mac

3)正如我的幾個應用程序正在使用.NET 4.5 beta和mvc4測試完成,這些都是帶有單聲道的當前版本兼容?如果不是從框架正式發佈到Mono變得兼容時的平均時間框架是什麼?

我不知道這些API是否受支持。找出的一種方法是使用Moma工具來分析你的組件。另一種選擇是下載最新版本的Mono + MonoDevelop,並嘗試使用它們來構建您的解決方案。我不知道API的確切發佈時間框架,但我認爲它通常是在.Net發行版之後,有時甚至在微軟發佈之前。

4)我不懂數據庫。我的數據庫用於SQL Server,我是否必須將它們更改爲在Linux服務器上運行。這是一種痛苦還是錯誤?我的SQL服務器數據庫首先使用實體​​代碼創建,如果我必須創建MySQL數據庫(或其他),這是否工作?

- >答案應該是沒有的。 MS發佈了適用於Linux的MS-SQL Server。你可以通過2個apt-get命令在ubuntu上下載MSSQL。我不知道如何編輯這部分答案。 < - 是的,它是一個疼痛切換數據庫。如果您正在使用存儲過程,則會更加痛苦。有商業程序可以將數據庫表和數據從MS SQL Server轉換爲MySQL或Postgresql。我們使用DBConvert的工具將我們的數據庫模式轉換爲Postgresql。轉換表格是很容易的部分。 最難的部分是轉換我們的存儲過程。我們的應用程序在很大程度上依賴於存儲過程,在數據庫中有900多個存儲過程我必須手動重寫Postgresql中的每個存儲過程。如果你的存儲過程只是直接的SQL,那麼它不會很困難,但是如果你嚴重依賴TSQL,那麼你需要用你選擇的數據庫使用的編碼語言找到與你的代碼等價的東西。對於Postgresql,最好的等價物是PL/pgSQL。 我還沒有使用DBConvert提供的商業工具遷移數據的經驗。在我們遷移到Mono的同時,我們對數據庫進行了大量更改,因此爲了進行數據遷移,我們編寫了自己的代碼來執行遷移。

5)目前我將我的mvc網站部署到Server 2008r2遠程服務器。有沒有一種替代你可以用於Linux的IIS?你能否給我提供一個關於設置這個教程的鏈接。

& &

7)你能給我多少磁盤空間的估計單+某種IIS +框架等,這將佔用的?在Linux操作系統與Windows操作系統的比較中,Windows佔用TON更多空間;那麼使用這種單聲道設置也會佔用大量的磁盤空間? (我知道操作系統的大小比較不是一個好例子。)

Apache2mod_mono是用來在Linux上用Mono託管網站。 Linux使用最小的空間。我們使用Amazon EC2託管我們的Web應用程序。基本上包括Ubuntu,Mono,Apache2,Postgresql和Postfix的我們的堆棧的新安裝僅佔用1.2 GB的空間。所以答案是No Mono不佔用大量的磁盤空間。 Here是在Ubuntu上設置Mono的教程。我不知道任何非常好的教程。如果您需要幫助,最好的地方是Mono IRC channelMono mailing lists。在這裏,您可以與社區和在Xamarin工作的開發人員交談。

8)有沒有可能忽略的缺點,你可以想一想?像目錄瀏覽,配置文件僱主,jquery/ajax問題等有任何奇怪的問題。

區分大小寫可能是一個問題。 Linux是一個區分大小寫的操作系統,因此您需要確保所有文件系統調用都區分大小寫。根據您選擇的數據庫,它也可能區分大小寫。 Postgresql是一個區分大小寫的數據庫,因此在執行查詢時,列名必須區分大小寫。 MVC URL不區分大小寫,所以你應該沒問題。 ASP.Net網站區分大小寫,因爲網頁名稱使用的是網址。 如果您首次在使用linux的Mono上運行應用程序時確實遇到了區分大小寫問題,那麼您可以使用Mono IOMap來啓動並運行。 IOMap處理不區分大小寫的情況,但它確實爲應用程序提供了性能優勢,因此建議不要在生產環境中使用它。

9)你有任何建議,教程,博客等?有沒有一個Stack Exchange站點比這個更好地處理這些類型的問題? (我找不到一個,除了可能是Linux的。

我想不出任何更好的網站編程和服務器管理,而不是stackoverflow和serverfault。

10)儘管我不需要這樣做,但我想設置它,只是爲了在未來有選擇,但如果它是我的話,我不會浪費我的時間一個完整的浪費。我有一個現在租用的Linux VPS和Windows VPS,所以如果我這樣做了,它也允許我只有一臺Linux遠程服務器(可能硬盤空間和內存更少),這樣可能爲我省錢。所以我的最後一個問題是,如果你的情況與我的情況相似,你會推薦這樣做嗎?

我會推薦它,但你必須知道,有一個很大的學習曲線來熟悉Linux操作系統,不同的數據庫服務器和安裝/配置應用程序以在Mono框架上運行。您可能會發現許多事情並不像使用MS技術那麼直觀。您不會使用GUI部署並在服務器上配置您的應用程序,因爲SSH是與Linux服務器交互的最佳方式。

+1

感謝所有偉大的信息!你超出了我的期望。這聽起來很酷,我會試試看!至少我可以通過MoMA工具運行一些東西,看看它說了些什麼。再次感謝! – 2012-03-20 01:01:12

+0

有史以來最佳答案。 – 2014-03-19 22:25:45

+0

@GarrettFogerlie最近怎麼樣都行得通?您是否也可以與TeamCity進行持續集成?我現在正在研究這個問題,並且我想知道你的經驗到目前爲止 – Highmastdon 2014-04-08 10:37:14