Disconnected Service Agent Feedback

Topics: CAB & Smart Client Software Factory, Offline Application Block
Feb 27, 2007 at 5:53 PM
Edited Feb 28, 2007 at 11:00 PM
We just released our first drop for the SCSF Update, which includes the Disconnected Service Agent (DSA) block and a simple Quickstart using it. We would like to use this discussion thread to gather all your feedback as at this point in the project is very valuable and will likely be included in our discussions for consideration.
Some of the areas where we want feedback are:
- How easy/hard is to setup and use the RequestManager.
- How easy/hard is to create a DSA to consume a web service.
- What do you think about the approach we used to handle the DSA callbacks?
- If we could assign priorities to the queues messages, so some messages can be dispatched faster than other regardless of their position on the queue, would that be useful?
- Any other thing you can think of!
Mar 12, 2007 at 8:38 AM

I'd just like to say that I think you guys are doing an awesome job with the software factory. I am currently combining the factories and teaching myself the guidance automation toolkit so that I can create an overall software factory that will cover probably 90% of what my company does on a day to day basis. The idea is that we have a standard smart client factory, mobile client factory, web client factory and service factory that will remove roughly 50% of the tedious coding tasks from my developers.

I believe in the work you guys are doing and I can't wait to use the new DSA block.

Thanks a lot.

Technical Director
WEBlife Infochannel Pty Ltd
Mar 12, 2007 at 10:22 PM

Perhaps these my thoughts are not addressed straight to DSA rather to interoperability with Endpoint Catalog and Connection Monitor.

I think it could be very useful if I can add alternative endpoints to the catalog. Let's say

<add Name="IntegerCalculatorEndpoint" tag="1" Address="http://localhost:1366/IntegerCalculator/IntegerCalculatorService.asmx" />
<add Name="IntegerCalculatorEndpoint" tag="2" Address="http://web1:80/IntegerCalculator/IntegerCalculatorService.asmx" />
<add Name="IntegerCalculatorEndpoint" tag="3" Address="http://web2:80/IntegerCalculator/IntegerCalculatorService.asmx" />

Then in the queue if a try to the first url failed the next try will be done using the alternative second url.
Something like this.

May 15, 2007 at 8:33 PM
This is THE block I've been waiting for. It is great. Good job guys.

I am just getting started using this. Got the QuickStart get working with SQL Express. Now I am off to create my own module under an existing SCSF based project.

When I run the create "Disconnected Service Agent" recipe, I get an error.

Microsoft.Practices.RecipeFramework.ActionExecutionException: An exception occurred during the binding of reference or execution of recipe CreateDisconnectedServiceAgentCS. Error was: Action AddDisconnectedAgentReference failed to execute:
Error HRESULT E_FAIL has been returned from a call to a COM component..
You can remove the reference to this recipe through the Guidance Package Manager. ---> System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
at VSLangProj.References.Add(String bstrPath)
at Microsoft.Practices.RecipeFramework.Extensions.Actions.VisualStudio.AddAssemblyReferenceAction.Execute()
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName, Dictionary`2 inputValues)
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName)
at Microsoft.Practices.RecipeFramework.Extensions.Coordinators.ConditionalCoordinator.Run(Dictionary`2 declaredActions, XmlElement coordinationData)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
--- End of inner exception stack trace ---
at Microsoft.Practices.RecipeFramework.Recipe.UndoExecutedActionsAndRethrow(Exception ex)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
at Microsoft.Practices.RecipeFramework.Recipe.Execute(Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(String recipe, IAssetReference reference, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(IAssetReference reference)
at Microsoft.Practices.RecipeFramework.RecipeReference.OnExecute()
at Microsoft.Practices.RecipeFramework.AssetReference.Execute()
at Microsoft.Practices.RecipeFramework.VisualStudio.RecipeMenuCommand.OnExec()
at Microsoft.Practices.RecipeFramework.VisualStudio.AssetMenuCommand.Invoke()