views:

106

answers:

4

Here are some (certainly there could be more) of the guiding principles for a new project I'm starting.

  • Addressable URLs
  • Very fast
  • Mobile - cater to iPhones and other smart devices
  • Use existing social networks
    • Live
    • Facebook
    • LinkedIn
    • Twitter
    • Craigslist
    • Etc.
  • Use existing ID services
    • Live ID
    • Open ID
    • Etc.
  • Client and online management application
  • Target many devices
  • Powerful and flexible reporting
  • Powerful and flexible filter criteria & search
  • Self maintaining; doesn't require lots of administration
  • Service based
  • API so that others can tap into our services (at a cost)
  • Easily to import and export data

I'm curious - given these principles, how would you go about determining the apporpriate technologies to use to build this project? .NET or PHP? SQL Server or mySQL? Silverlight or Flash? I definitely have my own personal preferences, but I don't want that to cloud my judgement. I'd like to use the right tools and technologies for the project.

Any thoughts and/or suggestions?

+2  A: 

It looks like you are looking for a golden hammer. There isn't one. It is up to you to decide which is best for the project. .net / php are capable of handling all of this.

If you want an actual iPhone app, naturally none of these will work. However outputting to a device is just a matter of detecting the device and rendering the view accordingly when you are talking about the web platform.

You may want to check out XML and XSLT if you plan on publishing to many domains. It can simplify taking your applications data and rendering the view as well as methods to keep them separate for individual devices etc.

Syntax
A: 

Don't know PHP (and don't like it for that matter), so can only say for ASP.NET:

  • Addressable URLs - ASP.NET MVC (and System.Web.Routing) can do that
  • Very fast - Depends on you (Stack Overflow is damn fast, so see for yourself)
  • Mobile - Again up to you
  • Use existing social networks - ASP.NET can do that
  • Use existing ID services - Can do that as well
  • Client and online management application - ?
  • Target many devices - Can do that
  • Powerful and flexible reporting - Can do that
  • Powerful and flexible filter criteria & search - Lucene.NET rocks
  • Self maintaining; doesn't require lots of administration - ?
  • Service based - Depends on your definition of "service based"
  • API so that others can tap into our services (at a cost) - ASP.NET can do that
  • Easily to import and export data - Depends on what data it is
Anton Gogolev
A: 

This is one of those classic "it depends" questions. You certainly want to eliminate technologies that are demonstrably wrong for your project -- you know, like ActiveX for a web site that you'd like Mac users to be able to use :-)

But eliminating the mismatches is pretty easy. And things after that are fairly subjective. The only way to narrow them down is to make some choice. For example: support a wide range of mobile devices. Which ones, exactly? If you want to target multiple platforms, you're almost certainly talking about a web app -- perhaps you've already decided that.

Beyond the specifics of your requirements, which ought to help narrow things down, to me the question is, who is going to actually code it? It makes sense to do your best to leverage whatever those folks already know.

In short, it's hard to answer the "best" question in a vacuum. There will be a dozen combinations of tools and technologies that can do what you want. To choose among them, you need to use your specific requirements and resources to whittle down the list.

Steve Lane
+1  A: 

Okay, here's the basic answer: you can crack this in .NET, PHP, Java or Python. Within that, you'll find any number of frameworks. Most of these frameworks are production ready.

So, what you and your team know or like becomes a huge issue. Learning a radically different framework will take time. Often personal preference will prove to be the deciding factor.

However, there is one major factor that should be taken into account: cost. Whilst .NET probably has the best tooling of any environment, it's pretty tied to Windows. If you're planning on 100 machines in a server farm, the year on year cost of running your final solution needs to be computed.

Finally, read Release It. The question of how you monitor and instrument your code is probably even more important than any feature you've mentioned.

Julian Birch