Reputation: 4170
My product, at present has a full deployment size of 72MB, with 68 of those MB's being DLL's found in the bin folder of my app. The main application DLL itself is less than 2 MB, so the vast majority of the footprint is coming from MVC itself, and from some 'addons' that my project has (Stimulsoft Reports, Glimpse, etc).
This app will ultimately be deployed to 2000 websites. Obviously, there's a huge amount of redundancy in an application deployed this way (Bin Deployed -- Copy Local True). How can I reduce the overall footprint of this deployment?
All the documentation I've been able to find really only addresses the 'single deployment' case. I've not been able to locate anything that really explains to to do this in such a way as to conserve deployment size, disk space, and memory usage.
Upvotes: 1
Views: 157
Reputation: 9103
Bin deployment, even 2000 times, is still probably the best approach. Disk space is very cheap compared to the cost of building something custom to manage this.
If you really want to, you could reduce the DLL count/size on disk by strong naming them and adding them to the GAC. Putting assemblies in the GAC does have many tradeoffs that you should be aware of however, such as potentially issues with versioning and trust levels.
Memory consumption can be reduced on the web server by grouping sites into the same app pools (shared assemblies will only load once) - however once again I don't really recommend this. Shared app pools means no isolation - so if one site goes down, they all do.
So that said, the best bet it to buy more disk space and memory and don't worry about it if possible - but it you have to make sure you understand the tradeoffs.
Upvotes: 1