Contents
Introduction
In each new project, choosing the right tools is the first step to success. It can be said that most tasks could be accomplished using most tools, but with cons/pros over the others.
Should I use PHP? ASP.NET? CMS? WORDPRESS? JOOMLA? MVC? ZEND? SYMPHONY? so many names and frameworks, one usally returns to what he best knows.
First, I’ll give you some questions to ask yourself about your website and environment, after that I’ll talk about some of the most common technologies.
Ask Yourself
About Server Costs
First, there’s to choose the server framework (PHP, ASP.NET, etc.). Indeed, talking about the server is not ‘Task Related‘ but it’s important for the reason of cost. PHP usally stored on Apache, ASP on Microsoft IIS. check your hosting prices.
Web-Servers
Today you have many option to host your site. for most of us, the solution will be probably hosting our project in hosting company, some of us may use their own web-server such as: apache, nginx, Node.js, LiteSpeed, IIS … the prices may vary and some of the web servers like Node.js is lack of support today in hosting companies and may be used mostly inside virtual os hosting solutions.
Web Site vs Web Application?
Is your website only visual? like a business contact site, or a blog.
Web Application is more extended form of a site: like facebook, twitter, gmail, etc.
IDE
IDE (Integrated development environment) refers to the environment you are using to code your application.
While simple text editor will be usable for all kinds of projects, most developer would rather use an IDE. every IDE expertize in different task is there is no better IDE then others. it’s best for you to know several. know, that choosing the framework/languge to write your application in would effect the choosing of IDE. some of the IDE’s are free, while other are cost. some of them have both versions. most decent IDE’s are using a plugins/modules system which enables them to be extended. I am using:
- Aptana Studio – Web development IDE Based on eclipse.
- Netbeans – Java, PHP, C/C++ and more.
- Visual Studio – The best tool for .net applications.
- Eclipse – Best java IDE.
- Vi/Vim – Expert Advanced text editor. hardcore for most developers.
Your Options (at least, some of them)
it’s impossible to talk about all options, but I’ll cover the set of tools I find most suited for most cases.
Of course, there are other solutions, with pros and cons. some of them are better for a task, some less.
Static Web-Server – Pure HTML + CSS + JS
Todays web starts here. it’s the base for every web-site, and sometimes it’s all you need. faster then all other options, for special needs I would choose it above other and serve them using fast web server like lighttpd or bare apache.
inter-browser Compatibility is usually challenging for beginners, but it’s the web basics.
Dynamic Web-Server
Building your website or application from scratch using dynamic code can take much more efforts, and you need to choose the language you will work with (ASP.NET, PHP, Python, etc.). For blog or small website it may be not the wise thing to build your site from ground using any of the languages, and you may find a framework or CMS that will do the trick.
Speed is not the issue! if you will read across the net you’ll find the today, choosing your language based on speed is nonsense. yes, there are differents, based on algorithem, but they are all sufficient in 99% for most of the needs.
PHP
Being one of the most used language, PHP is a very good option. Served mainly with apache, on windows or unix based systems.
You can code using some IDE’s as NetBeans and CodeLobster.
Pros
- Very easy scripting tool. creating a website can be quick and easy.
- Lot of hosting options, and even self dedicated server can be done in fair price.
- While you can use some PHP templating engine, PHP is a good templating engine as it self.
- Rich community. lot of documentation and help on forums online. most of your questions are answered already, just google it.
Cons
- Server costs is larger with IIS then linux hosting in most cases.
- code can be real messy when reaching large scale applications. I don’t like the syntax, but it my taste.
- No proper OOP.
- No rich IDE like Visual Studio.
ASP.NET
ASP (Active Server Pages) is a very
Many think as ASP.NET as slower in compare to PHP or PYTHON, and it does true for many cases. But actually, if you write your code using compiled code, which ASP.NET support easily, ASP.NET app can run even faster in large scale enterprise apps.
Pros
- You can code either in C Syntax (C#) or the easy Basic syntax. You can create Library projects and combine more then one language in one project.
- You have Visual-Studio which is very handy and rich tool.
- Rich community. lot of documentation and help on forums online. most of your questions are answered already, just google it.
- Good OOP
Cons
- Server costs is larger with IIS then linux hosting in most cases.
- You can’t host your site on linux platform.
- I find that maintaining IIS server is a difficult task compared to maintaining LAMP or any other Unix based server. but I guess it’s a choice of taste.
- Understanding Events and Lifecycle can be very frustrating at first.
- Working with compiled code can be faster and very comfort, but you may need to compile using VB you code on changes, while you just edit the files in PHP.
PYTHON
I can only say about python – I LOVE the syntax. again, it’s kinda thing of taste.
While python, in contrast to ASP/PHP is not only web development language but it used on general development.
You can run your python app in several methods including: APACHE-MOD_PYTHON (similar to how PHP scripts handled by apache), as WSGI, which is different method for most developers but it has large pros in mobility.
There are also Asynchronous I/O / Non-blocking web servers in python (Twister/Tornado/gevent) which I’ll mention later.
This thread talks about PHP vs Python speed.
Pros
- Very nice syntax
- Better OOP then the other dynamic web server languages.
- Support WSGI which raise mobaility between web-servers.
Cons
- Very small community. can be hard to find help to your problems
- No decent IDE to work with freely available.
Asynchronous I/O / Non-blocking web servers
There are several non-blocking web server available. Twister & Tornado for Python, Node.js for JavaScript, Thin for Ruby, Netty for Java, etc.
Node.js / Opa
It’s the new kids on the block.
“Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.”
“Opa is an open source programming language for developing scalable web applications.”
you can go farther and check Derbyjs based on Express (based on Node.js) and/or Meteor.
Pros
- Larger community then Twister/Tornado, but still small community compared to common dynamic servers (ASP/PHP/PYTHON/etc)
- One language for server/client side.
Cons
- While this can be argued, JS code can be very messy compared to python.
Twister/Tornado
Asynchronous I/O / Non-blocking web servers based on python.
Pros
- Python syntax is great!
- Strong OOP compared to JS
Cons
- Small Community
Frameworks
In many cases, you will find you don’t have to invent the wheel, and you can use your favorite framework to help you start quick and handle many things for you.
Symphony 2 framework
If you building a complex web application, a site with a lot of pages, or sophisticated logic, symphony 2 offers a really good
CMS
To save a lot of time and headache, consider using CMS if it suitable for you. BLOG can be a wise choice to use a CMS. also if you build your company site, or small project you will find that CMS will save you a LOT of time. there are CMS in ASP.NET/PHP/Python and can always go back to code and customize things if you need. If you need more and you suspect you will need to build sophisticated app, then CMS is not for you.
WordPress
Written in php, I think, it’s suited for most websites. with less efforts you can acheive your target. if you knows how to create wordspress plugins and customize your template, you can really make a noticable and unique website.
Good for a blog, small business, private web-site and sort-of most evertything else.
MediaWiki
even if you don’t build a wiki style site, with relativly low efforts, you can trasfer your wiki for informative site of any kind. you can customize almost everything using css, and many extensions exist (you can also build you own).
You can edit the content in the most easly and convenient way. if you need more then just showing content, it’s not for you
phpBB
Creating a small website for a small community? PHP-BB may be the easiest form of solution. originally it’s a Forum managment system, but using it’s massive plugins support, you can add lot of features and customize the appereance of your community forum.
Good luck!
Development Specialist, Artist and Activist
Personal Website