Well, I'm working on a commercial project for several customers that has the following features:
1 database server, could be Oracle or SQL Server. The customer can choose.
1 or more middle-tier systems that arrange communication between client and server. They will also handle all security related issues like authentication and authorisation. (And a few more things)
1 mass import/export system. This is a PC with about 1 GB of memory and lots of gigs of diskspace, with a high clockspeed. It's task is simple: import several textfiles into the database (Average size of 100 MB), process the data as much as possible, allow the clients 8 hours to do some manual processing and finally export the results again to textfiles and generate a few reports about what was processed in which way.
10 or more client machines. The sky is almost the limit here. About 1000 users could be possible with one customer... These machines will need very thin clients.
All systems will run Windows 2000 although the client machines might actually run any Windows version.
This system will need to run on a WAN. This means, one client could be in Tokio, the other in Gettisburg, the third in London, the fourth could be using a laptop on a cruise in the south pacific, the fifth can be anywhere... So, technically, anyone with an Internet connection should be able to connect to the middle-tier.
Now, I've already found a solution for this all and at this moment I have a working system. I'm going to improve it a bit more, though. But I wonder what kind of tools other developers would have used for this... So two questions:
1) Which language would you have used? VB, C++, Delphi, PowerBuilder, Java, Perl? And why would you use that specific language, except for the reason that it's your preferred language...
2) Which communication techniques between clients and middle-tier would you have used? Named pipes, TCP/IP, CGI, ISAPI, SOAP, DCOM, COM+, CORBA?
One limitation... I don't want the user to have to pay a lot of cash for additional licences.
And while you're answering this all, please provide a clear explanation. I will split points for this question. The best arguments will get 200 points. The second-best will get the other 50...
This is not a pissing contest about which language is better. This is about which solution would work best in this case, meaning that a combination of languages and techniques could be an acceptable answer with the right arguments. I want to compare the solutions others would choose for with the solution I've chosen for and see if I might want to reconsider a few things...