Large Application - Web Based - Platform/Language Suggestions

Associate
Joined
10 Apr 2004
Posts
839
Hi All,

I've been given the potential task for a very large scale application (full blown ledgers, e-commerce etc.)

I'm an old school programmer and basically for this project will be managing/design rather than me getting my hands dirty (outsourcing most likely).

One of the initial requirements is that its web based rather than fat clients or running via terminal services etc. The formost suggestion at the moment is .NET platform, SQL and using c#/vb go ASP. The thinking is easiesr to outsource, big names etc...

Its a custom application (quite specific) so I can't really bring in 3rd party stuff and attempt to integrate especially as consistent look/feel would be best.

Any thoughts?
 
I think your right with your first suggestion, Using MS technologies is always easier than others because one the support and documentation there is 1st class, and secondly in your case the pool of available developers is large.
 
I agree with pinkaardvark. If you go with the ASP.net / SQL solution then you should find it relatively easy to find developers. Personally I'd go with C# as you tend to get a higher quality applicants (not that there aren't any very capable VB coders, but for some reason C# coders tend to have a stronger academic background - massive over-generalisation but there you go :)).

LAMP is a perfectly viable solution these days, the claims that PHP isn't suitable for large scale applications simply aren't true anymore. However, finding professional OO PHP developers is more difficult than the MS alternative, and on a large project the advantages of not having to pay for software licenses pale into insignificance compared to the cost of hiring the developers.
 
Thanks guys,

From discussing with various friends etc I have other suggestions such as PHP, MySQL/Oracle, Rails

Its easier to pitch a solution with industry names that are well known/supported, might be pro's and con's but a better overall fit (resource etc).
 
Hi,

Java is also well worth a look for large scale applications.

It has a number of advantages, one of the key ones being that the same code can be developed and deployed on different platforms. For example, it's probable that you'll be developing code on a Windows platform, but also likely that you might want to deploy for Live onto an app/web server running on a UNIX platform. It also has some disadvantages too e.g complexity, high design time for apps etc. so it's not overall better or worse than the MS/Ruby/PHP tools.

You might also want to look at a number of the frameworks available for large scale application development, the one I'm currently using being Struts. This framework controls the interaction between the client and server sides, enabling you to construct an app that follows the Model-View-Controller approach.

One other architecture thing that might be of interest is SOA (using web-services). Using SOA you can open up your application to external applications in a loosely coupled fashion e.g using XML documents to exchange data rather than parameter names etc. There's a lot more design work involved than surrounding your app with web-services, it affects your entire design so is something you'd need to consider from the start if you're going to need that kind of thing.

Following on from that Java also sits comfortably with things like Business Process Language, Enterprise Service Bus etc. but maybe that's only if you're going big, big, big scale!

Database wise, you could consider Ingres which has recently gone OpenSource. I've used it on a number of very large applications with huge amounts of data.

Plenty of documentation out there for Java as well, though not all of it exactly easy reading (also plenty for MS stuff too). Rod Johnson has written a couple of good books about app development using Java, covering architecture, EJB, Struts etc. which I found useful.

Hope that's some help. I guess I am biased towards Java, but only because it's what I'm most familiar with in this field, not knocking or doubting anything else.

Jim
 
.NET with Oracle or SQL Server, it doesn't matter which backend you want to use, they are both easy to code for.
 
Another vote for ASP.NET with C# here. Using SQL Server 2005 also affords the opportunity to use C# within the database itself, should you wish to.

Personally, of all the web platforms I've used, I have found this to be the most productive combination for large sites with non-trivial backend systems. Java/J2EE is employed by many large sites that have the infrastructure to manage it, but I personally feel that the learning curve for J2EE is steeper than the MS alternative. Acquiring Java personnel also proved to be difficult and expensive on my previous project.
 
So it looks like c# and SQL is the best bet (doesn't suprise me).

Whats the thinking regarding the organisation.

2 Tier
Web Client (but fat with presentation and business processing)
Database SQL and use all the new features (like embedded c#/vb).

3 Tier
Web Client (ASP)
Business Processing (c#)
Database SQL (and still use the features because business layer serves data).

I'm really looking for peoples opionions or what they have experienced or had issues with. Just looking to make sure an suggestions can be made and not go down a route which could be fraught with issues.

Cheers
 
3 tier for any medium to larger sized project. If you want your middleware to be available for other applications (web or windows) then use Web Services. Otherwise just use c# classes.

Generating your middleware will also speed up your development in the longer run.
 
1ofaKind said:
I'm really looking for peoples opionions or what they have experienced or had issues with. Just looking to make sure an suggestions can be made and not go down a route which could be fraught with issues.
Much of the ASP.NET framework is geared towards directly interfacing with the database, and the tools almost encourage this sort of RAD approach. You can very quickly knock up, sorry "craft", some very powerful applications in this way.

For larger projects I tend to go with a layered (3, 4, n-tier) approach, with distinct logical layers for such things as presentation, business logic (entities, rules, etc) and data/resource access.

And don't get drawn in to implementing a service layer (SOA) unless you really need it.

A very good book on the subject is Patterns of Enterprise Application Architecture by Martin Fowler (he of "UML Distilled" and "Refactoring" fame).
 
Last edited:
Thanks for all that guys much appreciated.

In terms of its size I guess its in the 100's of users so I would assume medium size application.

I'll deffo get hold of that book.
 
It is inevitable that on a forum, you're going to get a majority recommending Microsoft and a .Net/ASP solution. I would look carefully at the post from JIMA regarding Java as J2EE is portable and robust with long-term open standards rather than the ever-changing target which is Microsoft's solutions. Althuogh it may cost more to develop, it is much cheaper to run as the applications will run on web-standards such as Linux, Tomcat, MySQL and Apache but can be easily transported to Unix, WebLogic/WebSphere, Oracle and Apache.

Any solution that uses Microsoft's IIS should be avoided like the plague.
 
NathanE said:

He's right though look at MySpace that has over 40 million members and that runs on IIS. MySpace is one of the biggest websites on the IntraWeb. :p ;)

IIS is clearly inadequate.
 
noob said:
Does it really go down that often? I wouldn't know, I hate the bloody thing. :D
Ditto :D

On a serious note I don't think it's that bad, given the size and the fact that its userbase is probably more prone to screaming than ignoring the odd error. But I can't resist a chance for a dig at the place :p
 
myspace does seem to hate being used!!

I don't think there's a shortage of decent OOPHP devs - check the zend website for certified developers and agencies always have a ready supply of decent developers - if you can be bothered to wade through the hundreds of timewasters!!

I'd do it in PHP/MySQL on qcodo if it's a big app - kinda like php....on rails. ish.
 
Hi,

It does seem that the Microsoft tools are preferred over Java for whatever reasons. I can't argue for or against as I've only used .Net briefly .

Personally I would investigate both routes, drawing up the pros and cons of both MS and Java approaches, doing quite a detailed analysis against your requirements. It's far cheaper to spend (maybe a fair bit) of time doing this now than find something nasty later on that's going to cost a lot of money to fix or workaround. Things to consider would be the estimated number of concurrent users, potential size of database, budget for equipment to run on, nature of other apps that you're going to connect with etc. It could be that J2EE offers functional stuff that Java doesn't and vice-versa.

It's also worth remembering that J2EE doesn't necessarily involve EJB which is really pretty complex stuff, probably overkill for a large number of projects. Also frameworks like Struts etc. can go a long way to reducing development time.

In the end a well structured architecture written on the appropriate platform is invaluable as it saves time on the current project, and can be reused for future projects. It can appear that the architecture takes a long time to come up with in comparison to the application, but then you'll save that time and more in future projects that reuse your code. At least that's what I've found.

Jim
 
Back
Top Bottom