IIS or Enterprise Services for Middle Tier Host?

Posts   
 
    
psandler
User
Posts: 540
Joined: 22-Feb-2005
# Posted on: 29-Mar-2007 23:27:57   

All,

Just wondering what you use or would recommend as a middle tier host?

Essentially, the main piece of the application I'm currently designing will need a host that is running at all times, and will retain a (relatively large) cache of data in memory. It is mostly a processing engine, and will fetch data from a database and use it in conjunction with the in-memory data, and do a large number of calculations on that information. It will need to have simple, message-based external interfaces--it will not send or accept major data via its interfaces.

I've read that the two main choices for this are IIS (webservices) and Enterprise Services. I've done webservices before, so that is currently the way I'm leaning. I know that webservices will allow for multiple threads to be processed simultaneously, and for the calls to be asynchronous. I'm not sure how much overhead IIS adds as a host.

I know very little about Enterprise Services, but I know it's been around for a long time and is very stable/reliable. It also kind of seems to me that IIS wasn't really designed to be a middle tier host, per se.

Maximizing performance is essential, and if one performs significantly better than the other, it would likely be worth the additional time investment.

Any thoughts on the best technology (IIS, ES, or something else) would be greatly appreciated. If I've made any false assumptions in the above, please feel free to correct me.

Thanks,

Phil

jeffreygg
User
Posts: 805
Joined: 26-Oct-2003
# Posted on: 30-Mar-2007 18:45:40   

If you're looking for MS' long term recommendation, you're going to want to go with WCF. It's a service model that can be hosted in IIS or not; it really doesn't matter. It supports everything Enterprise Services does (I believe, since it's MS' new platform for distributed computing) and can be used for interoperable web services.

Jeff

psandler
User
Posts: 540
Joined: 22-Feb-2005
# Posted on: 30-Mar-2007 20:01:18   

jeffreygg wrote:

If you're looking for MS' long term recommendation, you're going to want to go with WCF. It's a service model that can be hosted in IIS or not; it really doesn't matter. It supports everything Enterprise Services does (I believe, since it's MS' new platform for distributed computing) and can be used for interoperable web services.

Do you have links to any articles on this? My understanding was that WCF only had to do with communication between tiers, not an actual way of hosting a process. I have not done much reading on WCF yet, though.

Thanks for your response!

Phil

jeffreygg
User
Posts: 805
Joined: 26-Oct-2003
# Posted on: 31-Mar-2007 22:56:33   

WCF itself has to be hosted, but this can be in IIS, a console app, or a windows service.

psandler
User
Posts: 540
Joined: 22-Feb-2005
# Posted on: 02-Apr-2007 15:39:47   

jeffreygg wrote:

WCF itself has to be hosted, but this can be in IIS, a console app, or a windows service.

Ah, gotcha. My question is really more about the host itself, though, as the messages that we will pass will be very simple.

I hadn't thought of using a console app. Would that have the least overhead?

Thanks,

Phil

PilotBob
User
Posts: 105
Joined: 29-Jul-2005
# Posted on: 02-Apr-2007 19:21:47   

psandler wrote:

jeffreygg wrote:

WCF itself has to be hosted, but this can be in IIS, a console app, or a windows service.

Ah, gotcha. My question is really more about the host itself, though, as the messages that we will pass will be very simple.

I hadn't thought of using a console app. Would that have the least overhead?

Thanks,

Phil

WCF is about plumbing not about hosting. The nice thing about WCF is that the same service ap you run can be contacted to any type of end-point that you want and changed on the fly via a config file. So... with a web service, IIS is really just an end-point. However, all you need is right there... threading, security, redundency, etc.

However, if you are going to be controlling both ends you may prefer to use a TCP or UDP end point on your application server and use binary encryption... once again, all this can be defined in a config file if using WCF. That really is the whole point of WCF to abstract the connection/protocol out of the service.

BOb

jeffreygg
User
Posts: 805
Joined: 26-Oct-2003
# Posted on: 02-Apr-2007 21:53:13   

psandler wrote:

jeffreygg wrote:

WCF itself has to be hosted, but this can be in IIS, a console app, or a windows service.

Ah, gotcha. My question is really more about the host itself, though, as the messages that we will pass will be very simple.

I hadn't thought of using a console app. Would that have the least overhead?

Thanks,

Phil

Hey, Phil. Yes, a console app is the easiest to set up, but may not be what you're looking for, as it must be launched within a user's login session. IIS and a Windows Service allow you to set it up so that the host is always available, even if no one is logged on. Really up to you.

Jeff

psandler
User
Posts: 540
Joined: 22-Feb-2005
# Posted on: 02-Apr-2007 22:04:08   

Thanks for the input, guys. I think I'll go with IIS for now, as it seems to have the right features out of the box.

Here was one of the articles I saw that talked about Enterprise Services for this, by Rockford Lhotka. I haven't been able to find anything else about it (the article was written in 2004, so maybe things have changed?).

http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=a70aad9c-79fd-45cc-875f-00dfd3dc0fb6

Phil