Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is the entire package uploaded to MsDeploy.axd?

Tags:

msdeploy

Can anyone confirm (preferably with a link to docs) whether MSDeploy packages are uploaded in their entirety before the files are sync'd or does the sync occur between msdeploy.exe and msdeploy.axd (with only modified files being uploaded)?

Or, to put it another way, if I have a 1GB package zip that only contains 1MB worth of changed files will msdeploy upload the entire 1GB package to MsDeploy.axd and perform the sync on the server or will it only upload the 1MB worth of changed files?

like image 418
Richard Szalay Avatar asked Sep 05 '12 00:09

Richard Szalay


People also ask

What does MSDeploy EXE do?

cmd file or by using MSDeploy.exe directly, you can parameterize your commands and call them from a target in a Microsoft Build Engine (MSBuild) project file.

How do I know if MSDeploy is installed?

Is Web Deploy installed? You can verify web deploy is installed by going to the "Programs and Features" control panel and looking for "Microsoft Web Deploy 2.0" in the list of installed programs. If it is not there, you can install it via the Web Platform Installer by going to the "Products" tab.

What is web Deploy package?

This file, commonly known as a web deployment package (or simply a deployment package), contains all the content and configuration information that IIS needs in order to re-create your web application on a web server. Once you've created a web deployment package, you can publish it to an IIS server in various ways.

Where is MSDeploy installed?

Once the command prompt is up, you will navigate to the folder level where MSDeploy.exe exists. On Windows 7, the default installation will place msdeploy.exe in C:\Program Files (x86)\IIS\Microsoft Web Deploy. msdeploy.exe has an extensive command base.


3 Answers

Is this documentation official enough for you to trust that the behavior you observed is deterministic?

http://www.iis.net/learn/publish/using-web-deploy/introduction-to-web-deploy

Section "How does Web Deploy compare to FTP?", point 1:

Web Deploy is faster than FTP. Web Deploy does not issue a different command for each operation. Instead, it does a comparison at the start of the sync and only transfers changes.

like image 83
Tilo Avatar answered Oct 18 '22 18:10

Tilo


Here is an answer from a Microsoft employee on a similar question: http://forums.asp.net/post/4361026.aspx

Also, here is a very helpful writeup that details the process of how the packages are assembled: http://blog.winhost.com/using-msdeploy-to-publish-your-site/

like image 24
gilletty Avatar answered Oct 18 '22 19:10

gilletty


Since it's difficult to get MSDeploy to run through a proxy, I've made the process more obvious by simply using a huge file (750MB).

For the Agent Service (http://localhost:80/MsDeployAgentService), I can confirm that it does not upload the entire package. If I remove the file from the server (localhost), the deployment takes ~25 seconds. Once the file is already there, the deployment is almost instantaneous. Given my machines specs, there's no way it transferred 750mb into memory in that time (let alone transferred it over HTTP).

Update I can also confirm the same behavior when deploying to a remote (albeit same network) MsDeploy.axd service. Initial deployment was 50 seconds, next deployment was < 1 second.

Update 2 Kristina Olson of the IIS team confirmed this in her comment:

Web Deploy does its incremental sync in 2 parts, so in 1st part it sends just metadata about the file content in the package to determine which files actually need updating, so that in 2nd part only those incremental update files are sent over the wire. Basically metadata about every file (things like name, size, write-time) is sent over the wire, but the actual file content is not unless the file needs updating

like image 44
Richard Szalay Avatar answered Oct 18 '22 19:10

Richard Szalay