We are creating a new middle tier for the application suite. We are searching to rewrite our business logic and data access layers in C#, because they are presently in VB6 and released via COM+.
What we are attempting to decide is when exactly to create this middle tier open to different clients. We'll be utilising WCF to get this done, and we have made the decision that we'll use a number of bindings to be able to facilitate each different client's needs, including a netTcpBinding for the desktop application, a internet.Tcp and/or named pipe binding to have an internet application running either in your area or on the machine inside the network, plus some flavor of HTTP binding to have an exterior web API.
What we are attempting to decide is how you can host our service. It appears like the majority of places Time passes to express IIS is what you want, however it appears like you'd improve performance from the BLL/DAL part of it whether it was within Home windows Service, and @marc_s here on SO appears to recommend self-hosting generally. So we host it under IIS, within service, or some hybrid where possibly a thin service is located in IIS for that HTTP endpoint and consumes the primary service using a internet.tcp or named pipe binding? Separating it enables in order for there to become a physical separation if preferred, in addition to permitting for the potential of IIS heading down, which may still leave the service running for individuals clients that access the endpoints it puts out.
Also, how about scalability and reliability? Can there be much distinction between both hosting conditions this way?
I recognize there's lots of questions such as this, however i weren't capable of finding quite the info I have been searching for, so links to more concrete help work equally well being an answer.
Reading through this answer would appear to claim that self-hosting is marc_s's preference depending on accepting the overhead in coding the host yourself:
IIS provides you with everything free of charge. I'd say thinking about this in advance isn't a bad idea, but nothing is preferable to calculating performance metrics to find the cold, hard details by what is the best for your solution.
Try IIS and when it is that poor, make your own host. It isn't exactly costly to have it moving in IIS - and you will find some tuning tips online.
Update: published this soon after marc_s said. To be sure in principle, but doing the hosting yourself could end up being overhead for no benefit. IIS is as they are to some extent, and it has it's restrictions - restrictions you might never encounter.
I am unclear about the relevance of the feedback, but we use IIS to host .Internet Remoting objects for the application. It's presently dealing with a significant considerable performance metric gathering process when preparing for any near factor of 10 scale up because of a brand new client. For all of us, IIS is not recognized as anything worth worrying about. Concerning the only adhering point individuals have is it has ended HTTP (older IIS version for all of us), so is a touch more message-heavy instead of TCP possibly.
Update: this MSDN article touches upon self-hosting and talks about some facts to consider: