changing from classic asp to php - benefits? - language-agnostic

i've worked with classic asp so far and want to change to php (instead of asp.net)
could someone explain the main benefits from php over asp/asp.net?
thanks

I'm not sure there is a definitive answer for this question as most of the items are going to boil down to your own style. And I have used quite a bit of both in my professional career. I just like c# better.
Both technologies are used to build web pages.
Both are highly flexible and provide you the capabilities to do whatever you want in a web site.
Both have idiosyncrasies that just take time to understand and get comfortable with.
Both have a large following and can be deployed just about anywhere.
Both have good database and security support.
You can shoot yourself just as easily with one as the other.
At the end of the day, the only real difference I can come up with is that the .Net languages are usually precompiled prior to deployment and therefore enjoy compile time checks and static code analysis.

Take a look at PHP vs ASP: An in-depth Comparison.
PHP has much more to offer than ASP which is why it powers sites like facebook and yahoo.

Main benefit of PHP is cheaper hosting.

Disclaimer: all below is IMHO.
The only benefit of php vs asp.net I see is that it runs on open source LAMP stack, so if you want to get a job in a startup php skills might be more demanded than asp.net.
Other than that, asp.net beats php on ease of implementation and flexibility. So being a biased asp.net developer, I would advise you to look into asp.net instead of php.

Related

Which technologies are commonly used by developers to quickly build websites?

I'm an experienced C/C++/C#/Objective-C desktop,web, and mobile programmer and I've become accustomed to building most of my software from scratch. I've built all my websites from the ground up using ASP.NET. I have quite a few ideas for websites that I'd like to test and I'd like to increase the rate at which I can actually build a website. I'm sure I'm unaware of many of the technologies that are commonly used for building out ideas quickly. About a year back, I looked into using the popular CMS called Drupal to see if it would help me speed up development. After two weeks of trying to decipher the structure of the Drupal CMS, along with trying to learn PHP, I found the learning curve to be steep enough to convince me that it would just be faster if I built my website yet again from scratch using ASP.NET MVC. I'm wondering if anyone could suggest any other technologies that are designed for programmers to build websites quicker than my current method of building them from scratch using ASP.NET MVC.
Secondly, I've been hearing many entrepreneurs mention Ruby on Rails is what they use to speed up the development of their ideas, so I'm planning to investigate it. Why do I hear more about Ruby on Rails than any other technology? Would you suggest using it to speed up development?
Thanks in advance for all your wisdom!
I've tried out Ruby on Rails, Django (the Python equivalent of Ruby on Rails) and Drupal. Drupal is nice if you're just acting as a sysadmin: install the modules you want and use it as-is. But PHP as a programming language is so annoying that I'd hate to use it for something serious.
Django has some odd quirks but seems to work well. From an MVC perspective, Django calls views "templates" and calls controllers "views", which is ugly. Also, instead of generating default URL -> controller/action mappings for you the way that Rails does, Django set up routing files by hand before things work. You also have to set up some DJANGO environment variables if you want to run other helper Python code with access to your model objects. Rails also creates and configures a sqlite database by default so that you can start right away, but with Django you have to set it up yourself.
Rails seems to "just work" in so many ways that I highly recommend it. Ruby is also a pleasant language to work in. Try the simple startup to see what I mean:
rails foo # Create the foo webapp
cd foo
script/server
Then browse to http://localhost:3000 to try things out. That page will give you some info about your webapp and point you to the next steps.
Use an ORM for the data layer. That will increase the speed.
Also reuse common code elements from your previous projects.
And still, for any more or less different site you would need to do some work. Cannot avoid that. ASP.NET MVC is quite powerful tool, especially because it's backed up by the rich .NET class library. At least this framework doesn't build you obstacles at any step along the way, which is quite an accomplishment.
Django is a framework for database-driven web pages in Python.
I agree with your assessment. I was rather proficient in C/C++/C# and never built a website before. I looked at a couple of things, but when I started working with ASP.NET MVC2, I loved it. Another method/architecture I like but haven't messed too much with is WPF. If you download Microsoft Expression Blend 4 there's a 60 day trial and it's really nice. A lot of clicking and less typing. :) Hope this helps.
I toyed with the Zend PHP Framework a bit, and found it to be pretty good. You mentioned that the learning curve for Drupal/PHP didn't make it worthwhile to pursue, but if you retained any of the PHP you learned from that, this might go a bit quicker. To read more you can check out "10 Compelling Reasons to Use Zend Framework". Zend might not exactly be "configure and you're done," but since I usually work with Enterprise Java, I found it pretty reasonable in the speed-to-set-up department.

A good resource for an overview of web technologies

I have been working on microsoft based web technologies (.net, sql server, iis) for about an year and would like to know the opensource alternatives for the above. I have heard of LAMP, Java based technologies, ruby on rails etc. Can you please point me to a place where I can find more information about these and how they match up against each other. Basically I am looking for an overview of the popular web technologies in today's world.
Thanks a lot.
Vijay
Hmmm, thats a bit difficult to do, as each language is unique in its design. I guess it's less a case of which is the best, but more which is the best to suit you. Your decision should rest on which language you feel most comfortable working in, for example like you i started off in asp.net 2.0, developing a few web apps... but made the switch over to php, the two are relatively the same, however i found php to be more accessible for the web based tasks i want it to do. Also i use macs primarily as i am a graphic designer in addition to being a web developer, so if i could develop in mac osx that was a big plus.
Perhaps you should start by outlining what environment you want to work in first, and what you'd want to be doing in it.
Then consider cost, we managed to slash the basic costs of running our sites by moving to php, simply because of the licensing differences.
Support is also a biggy, you'll find with open source stuff there is more around since it's generally a lot more accessible to more people, since theres little to no startup cost.
Finally the best way to find out whats best for you is to try them all! you don't have to be an expert in it to know whether its for you, just get a feel for the language and see if it feels flows better with you.
Hope this is of use to you :)
oh and finally, wikipedia has a little comparison thingy, its not really a great comparison but its better than nothing hey?
EDIT:
Hi Again.
I've done a bit of digging and i think i've found what your looking for!
This is a comparison chart someone made, in it details the pros/cons of php, python, perl, asp, and ruby.
Theres also this which is a comparison of some of the frameworks, they've missed quite a few off the php list, namely kohana which is a brilliant framework!
And finally heres a comparison of the three main server types, and their pros/cons.

What web frameworks and languages have the lowest development time?

I'm trying to get a few web development ideas off the ground. Unfortunately I will be the only developer, so I'm focusing on getting a good debuggable, testable setup going that I can develop applications rapidly with.
Which languages, development styles and frameworks would you recommend for rapid development? Last time I checked RoR was the next big thing but that was a while back.
Ruby on Rails is a good choice for rapid prototyping. It's simple, clean and easily learned. PHP also offers a fairly low learning curve and a wide variety of built-in functionality for accomplishing most tasks. Both languages have their shortcomings, but on small-team projects for low to moderate traffic sites, you aren't likely to bump up against them.
The one you know best.
For people who are comfortable with Python there's also Django.
I guess it is pretty much an equivalent to Ruby on Rails (although I never used Ruby on Rails). Django's concept is to have many autonomous applications which can be used together in order to build small to large scale websites. It has great documentation, although deployment can be quite a hassle. Unfortunately it's not supported by many hosters.
PHP with Zend Framework has comparetively lower development time.
If you are familiar with C# or VB.NET and HTML then ASP.NET is also a very good option.
Just to add another, GWT (Google Web Toolkit) is an awesome option. It allows you to write all of your code in one language (more or less, you'll still need a bit of css --for the record ASP.NET allows this as well) and you can create really rich applications with all kinds of awesome javascript and ajax stuff without needing to know javascript. Their tutorials are great and personally, I think you can get off the ground really, really quickly.
I guess it matters more as to what languages you're most familiar with.
Whatever that language is, look for a good MVC framework for it.

How to choose the right web application framework?

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Since we are ambitiously aiming to be big, scalability is important, and so are globalization features. Since we are starting out without funding, price/performance and cost of licences/hardware is important. We definitely want to bring AJAX well present in the web interface. But apart from these, there's no further criteria I can come up with.
I'm most experienced with C#/ASP.net, PHP and Java, in that order, but don't turn down other languages (Ruby, Python, Scala, etc.).
How can we determine from the jungle of frameworks the one that suits best our goal?
What other questions should we be asking ourselves?
Reference material: articles, book recommendations, websites, etc.?
For me, the most important things to consider were:
Fantastic lead developers who I trust to keep working on the project.
Googling a question brings a lot of good answers.
Most importantly, I have to like the way the code flows.
Edit: Also they have to be anal about coding standards. If there is inconsistency, I get very annoyed.
Those 3 points brought me to Symfony. It is always using the latest cutting edge features of the latest PHP version. Symfony 2.0 is using namespaces before any other framework.
Two of your points were:
i18n - there is great support for it (helps that the company behind it is French, so i18n is a first class citizen).
Scales - Yahoo Answers and Vimeo use Symfony and contribute back code. If those guys can scale Symfony to 100 million users, you can too :)
It all depends on the type of project you will be developing.
Are you building a web application or a heavy content website or something else?
You also mix up programming languages with frameworks. The frameworks for PHP that I know are: CakePHP, CodeIgnitor, Zend and Symfony. For an out-of-the-box heavy content website I would suggest Drupal or Expression Engine.
It seems you won't be developing yourself. In that case I would determine the cost and availability of programmers and how widely the framework is supported and by who it is backed. The Zend framework is backed by the guys behind PHP, while CodeIgnitor is backed by the guys behind Expression Engine. Drupal has professional support packages,...
IMHO, for something that will have a lot of users, go for a compiled language.
If you don't try it, you will not know. So, I'd say do a small project in each of the frameworks you are seriously thinking about. I would prepare myself to do a lot of testing if it's something I'll be maintaining for some years. It's better to start off on the right foor than to get half way through a project only to realize you took the wrong path. There may be some requirements that end your search. For example, your servers' OS, a framework feature, or scalability. If you lay out your software plans and requirements, you probably will have very little left to choose from - unless your project really is quite generic or simple.

Tips to get started with webdevelopment

I am very curious about what you think is the best approach for people that want to start webdevelopment. I'm now talking about people that finished their education and so want to start from scratch.
I still have questions like:
Where do you start?
What software gets involved in webdevelopment?
What tools / setup would you recommend?
Offcourse i'm interested to hear alot more then only the answers to those three questions.
I am not writing this to get a load of people react on my post, i am trully interested in knowing how much work and money it will cost a webdeveloper when starting from scratch.
I hope to get a clear view on how to approach and to maybe hear some best practices.
Well one thing's for sure, education isn't finished! There's a whole lot to learn, and the more we learn the more we seem to need to learn.
If you're really starting from having no programming background whatsoever then I think you'd be advised to take a staged approach. For example:
1). A web page with a few different text formats and pictures and colours. Here you're just learning HTML. For that any browser and a notepad editor would do, but probably a tool such as Eclipse that gives some HTML editing capability would help.
2). More adaptive HTML - stylesheets that let you change appearance without changing all the html. So that's CSS.
3). Using the above, improve your designs. There are loads of formatting tricks good web sites use and you'll need to learn those.
Note that by now we've done a lot of study and we have not actually written any programs!
4). Dynamic web pages. Now we move to the programming side, rather than just writing some HTML files write a program that delivers the HTML and in some way changes the content. Starting with something really simple such as including "today's date is ..." on the page. For that You would need to pick a server development technology such as Ruby/Rails or PHP or Java/JSP ... You'll get a lot of different advise about "best" for this.
5). Now you can start to work on accepting input from the user and doing something with it so that useful work gets done. Things such as databases start to become important.
There's a whole load more after that, JavaScript and so on. An experienced programmer can pick up this kind of stuff quite quickly, if you've never done any programming at all then you will need to be prepared to take a while before you can get to the level you probably target. I think the key is to acknowledge that a great commercial web site reflects a lot of collective wisdom and skill picked up over many years, and probably is the result of a multi-disciplinary team working together. For one person to match that is a big ask. For one person to produce something nice and useful is more practical, but still does need a lot of different skills. It's quite reasonable to specilaise in a subset of the skills. For example, good visual designers write little or no code but are highly valuable.
you need:
a browser, eg. FireFox, Internet Explorer. A webdeveloper toolbar might also be useful.
a webserver, eg. Apache, Tomcat, IIS
a programming environment, eg. Php or ASP.NET
a development tool, eg. Notepad, Notepad++, Visual Studio .NET, Eclipse
most of the times a database, eg. SQL Server, mySQL
I'd say it depends what you want them to master: the technologies only (up to which skill level ?) or the whole software engineering behind a web project
A sample and fast technologies learning tree could be:
1) HTML
2) CSS
3) HTTP
4) Server side programming (PHP ?): programming concepts, interacting with HTML/CSS, then PHP API
5) Databases (start simply with MySQL for instance) + SQL (CRUD with Joins, Subselect, Indexes, Views and Transactions)
6) Client side programming (JavaScript first then Ajax)
7) A web framework (ZEND ? cake ?) and a good IDE (lots of...)
Full-time learning those technologies requires at least 1.5 year , based on the experience I have with my students and people must be trained mainly on concrete projects.
Then people should learn software engineering (cf link text) covering at least
- software requirements
- software design
- software construction
- software testing
I think people can have useful experience in this software engineering tree in 1 year and can (should) combine learning technologies with learning software engineering.
For training someone from scratch (technologies + software engineering) I'd say a least 2 years if working on at least three 6-month projects
This answer is Microsoft specific.
For starters you'll need an editor, a (optional) database and a few starting points.
Microsoft supplies most of these for free: you can download the Visual Studio Webdeveloper 2008 Express Edition for free, this includes most of the stuff you'll need.
If you plan on developing database driven websites, and who isn't, you might want to use the free SQL Server 2008 Express Edition
When you have the tools setup it's time to download some samples and see see how they work. Again Microsoft supplies some for free. You can check out tutorials and samples at their Asp.Net site.
When you are ready for some more advanced stuff, check out ASP.NET MVC, again at Microsoft.
With these tools and examples you should be able to get started.
I just want to add that you will most likely also need Photoshop or other tool to create the graphics for your web sites.
In spite of java/.net/php,the HTML,CSS,JavaScript are the basic web development toolkit.
Get a job as a junior developer that will put you on a project that is developing a web application. I personally think it should involve one of the two most established platforms, Java or .Net. I know some will disagree, but these are good foundations to branch into other tech platforms later.
Make sure you open an IDE (e.g. Visual Studio or Eclipse) everyday and code something. If not, find a new job immediately.
Read religiously at night. Start with "Code Complete", then move on to other books.
Learn the fundamental technologies of the World Wide Web:
HTTP
HTML
CSS
JavaScript
DNS, URL's
Good luck and happy travels!!
you need:
a google chrome . This provide you some advantage like inspect option. A webdeveloper toolbar might also be useful.
2. Html, Css, JavaScript are the basic language that you should be know
a programming environment, eg. Php or ASP.NET is needed for storing data and making login type page
a Visual Code Studio is needed for coding. This provide you emmet facilities that suggest you while you are coding