I have seen examples, sample codes etc for self hosting WCF services within a console app, windows service etc.
My question is, how will this work in production? Will it be efficient? Will it scale?
I m not sure, how it will work, so other question is, will that be single threaded? multi threaded? do i need to manage the multi threading? appdomains?
I prefer hosting with command line, windows service for application related reasons.
A Windows service hosting a WCF endpoint is fine for small services that aren’t going to be hit often; you don’t have to mess with IIS (which can be a REAL pain IMO). However, there will only be one listener listening, so it’s not recommended for a service that is likely to be hit from several places at once (use IIS for that; it sets up an app pool that can handle many simultaneous requests). This model is good for one-on-one interop between two machines; you might set up the service host on a “set and forget” box living out in a warehouse somewhere, and call it to perform simple but custom tasks like rebooting, log dumps, etc.
Avoid having any user app (console or otherwise) host a service endpoint, except for initial proof-of-concept testing. In addition to the single-listener drawback, a user app MUST be run in the context of a logged-in user (not the service users, which are “logged in” as part of Windows startup), and must have custom “keepalive” monitoring; with a service, Windows can be told to simply restart it if it crashes, while it doesn’t give a toss about a user app crashing other than to prevent that program taking down the whole OS (and to ask the user if they want to report the crash).