Wcf – Easy way to deploy new WCF services

deploymentwcf

About 3 months ago I made the switch from asmx services to WCF services, since then I've had my share of headaches, but I've stuck with it, but even as a seasoned developer deployment remains a problem.

Typically I hand the solution over for deployment to consultants who are not developers with years of debugging experience behind them.

So almost always I have to hand hold the operation.

One solution I am working on started off with just 3 web services, I've since then realized that adding more services to the solution can become a logistical nightmare.

Configuration needs to change in both client and server and its subject to environmental changes like SSL or not. In classic asmx things are a lot simpler. Typically I don't require a hybrid protocol, and mainly I only use basic or wshttpbinding.

I've had one server that we simply could not get running under SSL, and as a result it was decided to leave it off due to time and budget constraints.

My question is – are there automated easy deployment helper apps available that can detect environment and configure accordingly, or wizard based apps where the consultant would be able to follow an easy to use form driven system, to help in the setup of these services.

Thanks in advance.

Best Answer

No, I don't think there's a lot out there right now, to ease WCF deployment.

On the other hand - since all you need to do is update the config, which is in plain old XML config files, you can always dream up your own system.

What I like to do is "externalize" the WCF config - e.g. use something like this in web.config:

<system.serviceModel>
    <behaviors configSource="behaviors.config" />
    <bindings configSource="bindings.config" />
    <services configSource="services.config" />
</system.serviceModel>

Sure - Visual Studio will put red squigglies under all this - but it does work - it DOES! :-) I have this in production all day long.

This way, I can leave the web.config / app.config alone, and just tweak the individual "externalized" configs and deploy those.

We also do a thing where we have bindings.dev.config, bindings.test.config etc. to separate the various stages of dev/test/staging etc. - you could of course also do the same thing with e.g. customer names or something like that.

That's about the best solution that I've found for now.

Related Topic