c# - Mono,asp.net C#和MVC的操作方法和教程

标签 c# .net linux asp.net-mvc-3 mono

对于在.net中进行编程和在linux(如果您也知道的话,在mac上)进行部署的人员,我有一些基本问题供任何熟悉Mono或Mono开发(无论叫什么)的人使用。关于我自己,我主要使用MVC3和MVC4,一些Windows窗体以及将来的移动应用程序。 98%的时间使用C#,其余时间使用c++。

1)您可能会坚持使用Windows部署而获得更多的错误和错误?如果是这样,那么一些错误有多严重,您是否有项目根本无法使用?

2)您是否建议在Visual Studio中进行编程,然后将其部署到Mono平台?还是有推荐的更好的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远程服务器上。是否有IIS可以用于Linux的替代方法?您能给我提供指向有关此设置的教程的链接吗?

6)如果问题4可能出现,那么在Linux上部署MVC网站会有什么损失?速度,可靠性,安全性等?

7)您能给我一个估计,mono +某种iis +框架等会占用多少磁盘空间吗?在将Linux操作系统与Windows操作系统进行比较时,Windows占用了更多空间。所以使用这种单声道设置也会占用大量磁盘空间吗? (我知道操作系统大小比较不是一个很好的例子。)

8)您是否会想到我可能忽略的任何缺点?像目录浏览,配置文件租用架构,jquery/ajax问题等是否存在任何奇怪的问题。

9)您有什么建议,教程,博客等吗?是否有一个Stack Exchange网站能比此网站更好地处理此类问题? (除了Linux,我找不到一个。

10)尽管我没有必要这样做,但我想对其进行设置并只是为了将来有选择而做,但是如果这完全是浪费,我不会在上面浪费时间。我现在同时租用linux VPS和Windows VPS,因此,如果这样做,我也将只拥有Linux远程服务器(可能具有较少的硬盘空间和内存),因此有可能为我省钱。所以我的最后一个问题是,如果您的情况与我的情况相似,您会建议这样做吗?

请回答您可以回答的任何问题,
在此先感谢您,并回答了这么多问题,
加勒特·佛格利

最佳答案

首先,很好的问题。
我没有使用ASP.Net MVC进行Web的经验,但是我有ASP.Net Web表单以及将商业ASP.Net应用程序从Windows迁移到Linux上运行的Mono的经验。
我可以回答您的一些问题。
1)您是否会坚持使用Windows部署而获得更多的错误和错误?如果是这样,那么一些错误有多严重,您是否有项目根本无法使用?
我会说是,但不是很多。我们的应用程序是200K +行代码,目前我只能想到我们的代码中存在一个很小的Mono错误。该错误正在调用使Apache崩溃的Session.Abandon方法。我认为您会在较新的.Net API中发现更多错误,但总体而言,该框架非常稳定。
2)您是否建议在Visual Studio中进行编程,然后将其部署到Mono平台?还是有推荐的更好的IDE,例如Mono(或Eclipse,如果可能的话)?目前,我使用Linux作为操作系统,并在Visual Studio中运行Windows 7。
我相信就其提供的功能/稳定性而言,没有比Visual Studio更好的IDE。但是,说这个MonoDevelop是一个非常好的IDE,它与Visual Studio非常相似。它只是缺少Visual Studio提供的许多额外功能。例如,用于网页的Visual Designer并附加到过程调试。在我工作的公司中,我们在Windows/Mac和Linux上使用MonoDevelop。因此,如果您正在寻找跨平台的解决方案,那么可以使用MonoDevelop,但是如果您不介意使用Windows作为开发PC并支付VS许可证,那么VS很好。

Edit: As of writing Visual Studio Community Edition has been released and requires no license. There is also the possibility of using .NET Core in conjunction with your favourite editor (or Visual Studio Code, also free). The latter is supported on Windows, Linux and Mac OS X). There is also now Visual Studio for Mac.


3)由于我有几个使用.net 4.5 beta和mvc4 beta完成的应用程序,这些应用程序与当前版本的Mono兼容吗?如果不是,从正式发布框架到兼容Mono的平均时间框架是什么?
我不知道这些API是否受支持。一种查找方法是使用Moma工具分析程序集。另一个选择是下载最新版本的Mono + MonoDevelop并尝试使用它们构建您的解决方案。我不知道发布API的确切时间,但我认为通常是在.Net发布之后不久,有时甚至在Microsoft发布之前。
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远程服务器上。是否有IIS可以用于Linux的替代方法?您能给我提供指向有关此设置的教程的链接吗?
&&
7)您能给我一个估计,mono +某种iis +框架等会占用多少磁盘空间吗?在将Linux操作系统与Windows操作系统进行比较时,Windows占用了更多空间。所以使用这种单声道设置也会占用大量磁盘空间吗? (我知道操作系统大小比较不是一个很好的例子。)
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是区分大小写的OS,因此您需要确保所有文件系统调用都区分大小写。取决于您选择的数据库,它也可能区分大小写。 PostgreSQL是区分大小写的数据库,因此在执行查询时,列名必须区分大小写。
使用MVC,URL不区分大小写,因此您应该可以。 ASP.Net网站区分大小写,因为页面名称使用的是URL。
如果您第一次在Linux上的Mono上运行应用程序时确实遇到区分大小写的问题,则可以使用Mono IOMap启动并运行。 IOMap处理不区分大小写的问题,但确实会给您的应用程序带来性能上的损失,因此不建议在生产环境中使用它。
9)您有什么建议,教程,博客等吗?是否有一个Stack Exchange网站能比此网站更好地处理此类问题? (除了Linux,我找不到一个。
除了stackoverflow和serverfault之外,我没有其他更好的网站可用于编程和服务器管理。
10)尽管我没有必要这样做,但我想对其进行设置并只是为了将来有选择而做,但是如果这完全是浪费,我不会在上面浪费时间。我现在同时租用linux VPS和Windows VPS,因此,如果这样做,我也将只拥有Linux远程服务器(可能具有较少的硬盘空间和内存),因此有可能为我省钱。所以我的最后一个问题是,如果您的情况与我的情况相似,您会建议这样做吗?
我会推荐它,但是您必须意识到,要熟悉Linux操作系统,不同的数据库服务器以及安装/配置要在Mono框架上运行的应用程序,您需要学习很多。您可能会发现许多事情并不像使用MS技术那样直观。您不会使用GUI在服务器上部署和配置应用程序,因为SSH是与Linux服务器交互的最佳方法。

关于c# - Mono,asp.net C#和MVC的操作方法和教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759667/

相关文章:

c# - 如何从不存在的用户拥有的文件夹中删除 ACL

c# - 如何在Mono/MonoDevelop中使用System.Windows?

c# - 如何访问正在运行的 .net 应用程序

linux - 在 Bash Cloud Shell 中映射 Azure 文件共享

linux - chroot 进程 jail ,每次运行时将任意目录设置为 root

c# - 如何使用 C# 为三个组合键注册热键

c# - 显示表单后,DataGridViewComboBoxCell.DataSource 被设置为 null

c - 为什么从服务器响应中读取的实际字节数小于 Content-Length?

c# - 在 C# 2005 中动态获取/设置对象的属性

.net - 什么会导致程序集构建版本和运行时版本不同?