Question

I'm a CS student and has rare experience from the enterprise software industry. When I'm reading about enterprise software platforms, I mostly read about these two:

By "enterprise software platforms" I mean frameworks and application servers with support for the same characteristics as J2EE and WCF has:

[JavaEE] provide functionality to deploy fault-tolerant, distributed, multi-tier Java software, based largely on modular components running on an application server.

WCF is designed in accordance with service oriented architecture principles to support distributed computing where services are consumed by consumers. Clients can consume multiple services and services can be consumed by multiple clients. Services are loosely coupled to each other.

  • Is there any alternatives to these two "enterprise software platforms"?
  • Isn't any other programming languages used in a bigger rate for this problem area?
  • Why isn't there any popular application servers for C++/Qt?

Note: By "Application Server" I mean a server mainly for GUI-software and not a Webserver/Web Framework. See what is the difference between web servers and application servers?

Was it helpful?

Solution

Well, you can pretty much consider the high end IBM mainframe machines "application servers", they're pretty popular.

TUXEDO is a transaction manager that empowers a lot of high end applications, written in many things, like C++.

Microsoft had MTS (Microsoft Transaction Server) back in the day. It talked to C, C++, VB, etc.

Application Server is a nice, vague term. Tomcat is an application server, for example. Arguably ZOPE can be considered an application server.

But the thing, in my mind, that really distinguishes an Application Server from "just code" is the transaction manager. I don't consider a raw Tomcat an Application Server, for example, it's basically a really cool web server.

Most folks rely on the database for transactions, but a transaction manager works at a higher level where a database is simply a participant. And transaction managers are where a lot of the heavy lifting in terms of services and middleware offered by Application Servers happens. Transactions are really important in business processes.

Java EE has transaction managers. I don't know of any other "free" system that offers a transaction manager capable of distributed transactions. As I mentioned, most folks rely on the DB and stop there.

There are several transaction managers that support Java JTA (Java EE servers are JTA compliant internally), that's what Spring plugs in to in order to offer transaction services. (Spring is just a framework, it's not a server itself.)

When you add a TM to an OS, the entire machine can become an Application Server. That's what MTS does for Windows.

Java EE app servers stand out because they make much of these services first class (thread pools, object allocation, database pooling, transactions, etc.). Many OSes offer all of these services, at least at the process level. But folks didn't care much to dedicate an entire machine to a task, and having to tune the OS to service that single application. But, all that capability is there.

Add in modern VM systems, and dedicated, "single task" OS instances make more sense. "This Linux VM handles my DNS", "This Linux VM handles my email", etc. So, perhaps the OS will be returning to being a dedicated Application Server.

OTHER TIPS

Spring.py is available for Python.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top