Multi-tiered enterprise application

I am trying to get my head around multi tiered web apps in the .net world. In the java world, the tiers can be separated neatly into

Web Tier (say Apache)->remotely accesses Middle Tier App server (say weblogic) which implements code which calls the data tier->Data Tier

In the windows world, IIS can be the web tier but I cant find the middle tier. I read about enterprise services, but that requires inheriting from a COM interface which is something I dont want to do. Is there a pure .NET component app server out there Any tutorials on creating middle tier pure .NET components

I also read about IIS hosting web services and have implemented a couple.. But I want my web app to be able to remotely call components on a separate machine to perform business functions. I cant imagine having two web servers in my architecture to accomplish this goal. Theres some code smell there..

Any answer would be appreciated.

Aaron



Answer this question

Multi-tiered enterprise application

  • DRamey

    Of course Windows has options for hosting services other than IIS. You can use DCOM and host them in Component Services -- an option not as popular as it used to be. You can also create a Windows Service which means Windows will manage your EXE during startup and shutdown and run that process under any account identity you choose (SQL Server is hosted this way). But you can also use IIS for these roles and it can host a .NET remoting endpoint or straight web services. One of the enterprise-class products my company sells uses IIS as the app server as well as the UI server -- either in the same process or different machines. We have about 100000 seats sold in 200 accounts with the larger installations running about 2400 users concurrently. We also tested the app at a Microsoft lab at up to 7000 users. I wouldn't call it a "smelly" approach at all :).

  • SnakeSV

    Hi Aaron,

    If you need to draw tha analogy -

    consider IIS to be Apache and consider the ASP.NET worker process to be your Weblogic.

    If you have a .NET application, and you check out the processes - you will see a process for IIS and another one for W3WP or ASP.NET worker process.

    I dont agree with the way you have defined 3 - Tier for J2EE.

    In J2EE - typically the web tier is not Apache - it is the WAR which runs in weblogic. The app tier again is the ejb-jar in weblogic and the Data tier is the database.

    Apache is just a proxy.

    The same happens in 3 Tier IIS application as well.



  • Demix

    IIS plays the role of both web and app server. We sell internet banking product .. and infact using IIS at both layers client saves money by not having to purchase additional app server like webspeher or weblogic.

    http://DotNetWithMe.blogspot.com
    vikas goyal



  • Banacek

    Aaron13 wrote:
    So basically, your saying that IIS should be used as the app server also.. Exposing the application via a web interface is totally understood, but the philosophy of also keeping your middle tier code in the web server process is quite smelly imho. So besides Enterprise Services, MS has no app server for pure .net components


    Your quite right, that's no middle tier and quite smelly :-)

    If your after a seperate middle tier so you can scale out rather than up etc you just have to make the connection to the middle tier machine.

    The middle tier machine can be running a web service or you can use remoting. These give you the ability to make distributed calls to the middle tier (load balanced when your scaling out).
    Web services gives you a cleaner upgrade path to Windows Communication Fooundation in .Net 3.0. Remoting can be hosted in a service which negates the need for IIS on your middle tier boxes and is more performant.

    You can have x number of Web Servers conecting to x number of business layer boxes connecting to your clustered databases. This scales out as far as you need

    Regards

    Ed



  • vtortola

    So basically, your saying that IIS should be used as the app server also.. Exposing the application via a web interface is totally understood, but the philosophy of also keeping your middle tier code in the web server process is quite smelly imho. So besides Enterprise Services, MS has no app server for pure .net components
  • rvaas

    Like any server listening to a network, IIS responds to requests received via a network stack. It's primary mission is obviously to serve up web pages using HTTP. But it is also frequently used as an application server, especially when web protocols are involved. Hosting web services in IIS makes sense because you don't have to open TCP ports to support DCOM and most WS implementation run over HTTP anyway. It sounds like you have a server-based UI and a server-based application, which isn't unusual. There shouldn't be anything inherently scary about having both hosted by IIS. If you would rather put the middle tier in a non-IIS service, just create a Windows Service project and do your own listening on a network port. Also, the new WCF bits give you a lot more choice in coming up with a programming model.



  • Multi-tiered enterprise application