单声道,asp.net c#和MVC如何和教程

时间:2012-03-18 15:48:09

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

对于熟悉Mono或Mono Development(无论它叫什么)的人来说,在.net中进行编程和在linux中进行部署(如果你也知道,那就是mac)我有一些基本的问题。关于我自己,我主要使用MVC3和MVC4,一些Windows窗体,以及未来的移动应用程序。 c#中有98%的时间,其余的是c ++。

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 server数据库首先使用实体​​代码创建,如果我必须创建MySQL数据库(或其他),这是否可行?

5)目前我将我的mvc网站部署到Server 2008r2远程服务器。您是否可以使用IIS替代IIS?你能给我一个关于设置这个的教程的链接。

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

7)你能估算出单声道+某种iis +框架等占用多少磁盘空间吗?在Linux操作系统与Windows操作系统的比较中,Windows占用了更多的空间;那么使用这种单声道设置也占用了大量的磁盘空间? (我理解操作系统大小比较不是一个很好的例子。)

8)有没有我可能忽略的缺点,你可以想到吗?就像目录浏览,配置文件雇佣,jquery / ajax问题等有任何奇怪的问题。

9)您有任何建议,教程,博客等吗?是否有一个Stack Exchange站点比这个更好地处理这些类型的问题? (除了Linux之外,我找不到一个。

10)虽然我没有必要这样做,但我想把它设置好,以便将来可以选择,但如果它是一个完整的我不会浪费我的时间浪费。我现在有租用的Linux VPS和Windows VPS,所以如果我这样做,它也会让我只有一个Linux远程服务器(可能硬盘空间和内存较少),这样可以省钱。所以我的最后一个问题是,如果你的情况与我的相似,你会建议这样做吗?

请回答您的任何问题, 在此先感谢并抱歉这么多问题, 加勒特弗格丽

1 个答案:

答案 0 :(得分:32)

首先,非常好的问题。

我没有使用ASP.Net MVC的网络经验,但我确实有ASP.Net网络表单的经验,以及将商业ASP.Net应用程序从Windows迁移到运行在Linux上的Mono。

我可以回答你的一些问题。

1)您是否可能会遇到更多错误和错误而不仅仅是坚持使用Windows部署?如果是这样,一些错误有多糟糕,你有没有完成任务的项目吗?

我会说是,但不是很多。我们的应用程序是200K +代码行,目前我只能想到我们的代码中存在的一个Mono错误。该错误正在调用崩溃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 beta完成的应用程序,它们是否与当前版本的Mono兼容?如果不是从框架正式发布到Mono兼容的平均时间框架是什么?

我不知道这些API是否得到支持。找到答案的一种方法是使用Moma工具分析程序集。另一种选择是下载最新版本的Mono + MonoDevelop并尝试使用它们构建您的解决方案。我不知道API已发布的确切时间范围,但我认为通常是在.Net发布之后很快,有时甚至在微软发布之前。

4)我不了解数据库。我的数据库是针对SQL Server的,我是否必须将它们更改为在Linux服务器上运行。这是痛苦还是容易出错?我的sql server数据库首先使用实体​​代码创建,如果我必须创建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替代IIS?你能否提供一个关于设置这个教程的链接。

&安培;&安培;

7)你能估算出单声道+某种iis +框架等占用多少磁盘空间吗?在Linux操作系统与Windows操作系统的比较中,Windows占用了更多的空间;那么使用这种单声道设置也占用了大量的磁盘空间? (我理解操作系统大小比较不是一个好例子。)

带有Apache2

mod_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网站区分大小写,因为页面名称使用URL。 如果您首次在使用Linux的Mono上运行应用程序时遇到区分大小写问题,那么您可以使用Mono IOMap来启动和运行。 IOMap处理不区分大小写但它确实会使您的应用程序受到性能影响,因此不建议在生产环境中使用。

9)您有任何建议,教程,博客等吗?是否有一个Stack Exchange站点比这个更好地处理这些类型的问题? (除了Linux之外,我找不到一个。

除了stackoverflow和serverfault之外,我无法想到任何更好的编程和服务器管理网站。

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

我会推荐它,但你必须意识到,要熟悉Linux操作系统,不同的数据库服务器以及安装/配置应用程序以在Mono框架上运行,有一个很大的学习曲线。您可能会发现许多事情并不像使用MS技术那样直观。您不会在服务器上使用GUI部署和配置应用程序,因为SSH是与Linux服务器交互的最佳方式。