将网站从 asp.net 移植到 LAMP (php) 堆栈时我们将面临哪些挑战?
题
我们有一个用 asp.net c# (3.5) 和 SQL Server 编写的企业应用程序,我们希望将其捆绑并发布给客户。
然而,一些人对此表示担忧 需要 由于成本原因,使用微软服务器。是的,我知道...因此,我们正在考虑将其移植到 LAMP 堆栈中,其中“P”指的是 php。
在来自 Visual Studio asp.net 环境的 LAMP 堆栈上进行开发时,我们会面临哪些挑战?
我确定的问题是:
- 调试:Visual Studio 对于客户端和服务器端调试都非常有用。
- 框架:模型背后的代码运行良好,MVC 框架也很好。
- 维护:我们希望该功能集在两个平台上都是通用的。
- 数据库层:代码与 mssql 数据类型松散耦合。
如果您已经经历了这个令人兴奋的过程,我很想知道它是什么样的,并提供一些建议/提示。
另一方面,我们有什么办法可以按原样运行这段代码吗?单核细胞增多症?其他的?
解决方案
我对.NET有比使用* AMP堆栈更多的经验,但根据我对XAMPP的经验,我会提供以下观察
-
调试:Visual Studio非常适合客户端和服务器端调试。
Eclipse PDT 非常适合设计,开发和调试。我听说过有关Zend Studio的好东西,但还没有使用它。
-
框架:模型背后的代码效果很好,MVC框架很好。
-
维护:我们希望功能集在两个平台上都很常见。
如果您排除Windows特定功能(Windows集成安全性等),那么不能在两个堆栈中都不应该做多少,但如果您必须重现像gridview这样的控件,它将会劳动密集。
-
数据库层:代码与mssql数据类型松散耦合。
我不知道任何无法在mysql和sql server之间映射的数据类型,并且有很好的文档处理迁移
醇>
单声道可能会减少移植解决方案所需的时间,但我不知道您可以按原样重复使用所有代码“。
其他提示
您可以考虑的另一个PHP IDE是NetBeans。
作为.NET,Java和LAMP的开发者,最大的变化主要是文化。例如,PHP有一个不使用OO原则的遗产,而ASP .NET起初是一种具有完全OO支持的.NET语言。这种基本差异导致了一些重大问题,例如PHP的长保留关键字列表等等。
我自己有Asp.net背景,过去几个月一直在研究开源框架。我还没有下定决心。我最近一直在看Grails。似乎拥有两全其美 - 在企业平台上使用脚本化,易于使用的开源RAD MVC框架。它使用Groovy脚本语言(类似ruby),但在JVM上运行,因此如果您愿意,可以使用完整的Java框架。有大量预先编写的Java组件可供使用。这件事很酷。你可以很快地移植你现有的应用程序。你需要一个Tomcat webhost。
如果你需要PHP,直接的PHP表现相当不错,但大多数框架表现不佳。如果使用直接PHP,则没有mvc。您将使用传统的基于页面的模型。但是你会感觉更有家的感觉。您可以使用PDO滚动自己的DAL并使用存储过程。你需要一个模板系统。远离使用它自己的模板语言的Smarty。它很慢,为什么你需要学习一个单独的模板语言。我从来没有那样。请改用Savant: http://phpsavant.com/ 。它使用php作为模板语言并且速度很快。您也可以通过为每个网站页面创建模板页面来模仿代码隐藏。至于mvc,有一个名为Yii的新PHP框架( http://www.yiiframework.com/ )声称拥有php框架的最佳性能。它也有很好的记录。如果你来自.Net,它可能是最好的PHP框架。感觉企业像Zend,但没有糟糕的表现。大多数其他玩具都是玩具或非常慢,如Symphony和Cake。 Php适用于Apache。与Rails和Django不同,没有太多的调整或维护。
接下来你需要一个IDE。和Netbeans一起去吧。使用PHP版本并安装 http://www.xdebug.org/ 。会觉得自己不如VS,但也不错。
对于DB来说,MySql是性感的选择,但Postgres更胜一筹。它有一个数据库引擎可以完成所有工作。使用Mysql,你想要的一些功能在InnoDB中,有些功能在MyIsam中。如果您需要外键和交易,您必须使用InnoDB。使用MyIsam进行全文搜索和更快的读取性能。 Postgres的性能已经大大提升了版本8的版本(现在和mysql一样),最后有一个很好的Windows安装程序。