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

Gar*_*lie 16 .net c# linux mono asp.net-mvc-3

对于熟悉Mono或Mono Development(无论它叫什么)的任何人来说,在.net中编程和在linux中部署(如果你也知道,那就是mac)我有一些基本的问题.关于我自己,我主要使用MVC3和MVC4,一些Windows窗体,以及未来的移动应用程序.98%的时间用在c#中,其余的用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远程服务器(可能硬盘空间和内存较少),这样可以省钱.所以我的最后一个问题是,如果您的情况与我的相似,您会建议这样做吗?

请回答您的任何问题,提前致谢并抱歉这么多问题,Garrett Fogerlie

sta*_*ith 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社区版时已发布,无需许可证.还可以将.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占用了更多的空间; 那么使用这种单声道设置也占用了大量的磁盘空间?(我知道操作系统大小比较不是一个很好的例子.)

带有mod_mono的Apache2用于在Linux上托管Mono的网站.Linux使用最小的空间.我们使用Amazon EC2托管我们的Web应用程序.我们的堆栈的新安装基本上包括Ubuntu,Mono,Apache2,Postgresql和Postfix,只占用1.2 GB的空间.所以答案是No Mono不会占用大量的磁盘空间. 是关于在Ubuntu上设置Mono的教程.我不知道任何特别好的教程.如果您需要帮助,最好去的地方是Mono IRC频道Mono邮件列表.在这里,您可以与社区和在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服务器交互的最佳方式.