With App-V we have something called “Full Infrastructure”, this is used to refer to an App-V Management Server based method of delivery for App-V packages.
In App-V 4.x we had the App-V Management Server role which was responsible for not only managing the packages but also servicing client requests to refresh and publish App-V applications. This meant the Management Server bore the brunt of every single publishing refresh request from every client whether the client was local or in a branch location.
In App-V 5.0 the roles of management and publishing have been separated out. We have a Management Server which is responsible for managing our packages. We also have a Publishing Server which as the name suggests is responsible for handling refresh requests from client machines.
Separating out these roles has pushed App-V Full Infrastructure towards a more scalable hub and spoke model:
The way it works is very simple, let’s start from the beginning.
Our Management Server is essentially a web service, every time a new package is added, a subsequent record in the database is created alongwith an increment to a sequence number. Our Management Server also keeps a local .xml file containing all the information around what apps are available and to who they are published.
Every time we change what is available to our users or computers in the Management Console this file will get updated with the latest information alongwith a reference to the new sequence number.
Our Publishing Server which is also a web based role utilising http gets registered with our Management Server in the console:
This is all you need to do to connect a spoke to the hub! Now our Publishing Server will be able to poll into our Management Server at set intervals. This interval is set to 10 minutes by default (set in seconds) and can be influenced in registry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Server\PublishingService
Our Publishing Server will then periodically retrieve the .xml hosted by the Management Server when the sequence number is newer than what it already has. It too, like the Management Server stores the .xml file locally, it has a raw file which is a container to onboard new changes and an active .xml which the changes get committed to when possible.
The final piece of the puzzle is the client. Once a Publishing Server has been registered with the client the next refresh will trigger a communication into the publishing server, again via http. The publishing server will return a filtered view of the .xml file it holds and publish the relevant packages. You can see a user based filtered view of this file by simply hitting the publishing server URL from a web browser:
The client refresh itself is handled via scheduled tasks:
Again depending on whether we are using global or user based refresh, these tasks will run accordingly by running a .vbs script which will trigger the process.
So that explains the basic mechanics of a publishing refresh in App-V 5.0, it really is simple!
Always look forward to your posts, you do a great job and your blog is a true asset to the APP-V community.
Quick question re: this post. If the publishing server is up and running with no issues, the Management Server goes off-line in between the 10min cycle for a Publishing Server look-up for NEW content from Management Server, how does that impact the Publishing Server? Will it continue to service publishing request from clients?
Ah thanks, appreciate your comment and glad you find the content useful!
Regarding your question, in the event the Publishing Server is unable to contact the Management Server to check for a new metadata.xml it will simply continue to service client requests using the .xml it currently has.
@Thamin your posts really helps a lot. keep up the good work
Hello, I am new to the AppV setup. We created a test environment, in which we had the Management Server, Publishing server and the SQL database on one virtual machine and the reporting server on a separate VIrtual machine ( we are doing this more as proof of concept) My question is, are hopes are assinging security groups for each package that we create, so if we create a 2007 XML notepad package, the security group would be be "AppV-xml2007" and whatever user that needed access to it would have that membership added to there AD account. I have noticed when I create a new security group, appv will not publish it for hours later. I am assuming that there is a setting in the management server somewhere, where I can change so that it will poll AD every hour or what have you? Any help on this would be greatly appreciated! thanks
I was wondering how client package refresh is handled and didn't realise it was via a scheduled task.
Is there way this can be controlled via App-V powershell or group policy. it would make far more sense to have a setting that says check for updates every 'xx' after the user has logged on or just a registry setting (similar to the publishing server value).
Hi Andy, There are controls around this as discussed here: http://blogs.technet.com/b/virtualvibes/archive/2012/11/08/installing-and-configuring-the-app-v-5-0-client-with-publishing-server.aspx UserRefreshEnabled Values: (0/1) Enables a publishing refresh
for the user UserRefreshOnLogon Values: (0/1) Specifies whether or not a user refresh should be initiated at user logon UserRefreshInterval Values: (0-744) Specifies the frequency of the refresh with the publishing server, can be in days or hours as below
UserRefreshIntervalUnit Values: (Hours(0) or Days (1)) Specifies the unit for the UserRefreshInterval setting