Jim,
In what I have read about Web Services, and played with, you don't have to host your com object in COM+ as far as I see.
http://www.west-wind.com/presentations/xmlmessaging/soapwebservices.htmhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfoxgen7/html/vfpws.aspAlso, in FoxTalk Whil did a 4 part series on VFP Web Services which may help you out.
BOB
>Craig,
>
>You seem to be one of few experts on COM+ here. I've been looking at creating a web service for a
real application and I've hit a number of stumbling blocks. I'm hoping that you can answer some questions that have arisen regarding the COM+ part of that facility. I've read the articles on your web site.
>
>The Walkthrough in the VFP8 Help has the creation of a MTDLL as one of the steps to creating a web service. I'll
assume that MTDLLs are the only way to make a go of a web service.
>
>Now on to my questions:
>1) Your part I says "
First, your application should be stateless. This means that your client program should instantiate the component, make calls to a method, and then release the component.". The code following has lines:
> loMtx = CREATEOBJECT("MTXAS.APPSERVER.1")
> * Create a reference to the Context object
> loContext = loMtx.GetObjectContext()
>o
>o
>o
> * Commit the transaction if there is one and
> * tell MTS that we're done using the component
> loContext.SetComplete()
I find nothing in standard VFP8 documentation mentioning MTXAS or SetComplete().
>
Q1 What happens if I just build my MTDLL and leave out this code?
>
>
Q2 How can my client code be "stateless" when I first have to instantiate X, then get control back, then execute some method of X, then get control back,(then execute some other method of X...)?
>
>
Q3 How can one "SetComplete"
within the MTDLL?... How would it know if the client has finished? (in particular the "done" part shown in the code in part III:
> * .T. = Deactivate, .F. = Leave activated
> loContextState.SetDeactivateOnReturn(llDone)
> loContextState.GetDeactivateOnReturn(@llGetDone)
)
>
>
Q4 Would one code for SetComplete() ("DONE", actually) at the end of every method in a multi-method server?
>
>2) VFP has SYS(2336) - Critical Section support, used to indicate the start/stop of "critical sections" of MTDLL server code. If I understand the concept correctly these are sections of code that must NOT be interrupted (possibly by preemption to another task that may execute the same range of code).
>
Q5 What commands of VFP are subject to being affected as "critical section" (I can find nothing that delineates what commands/functions are susceptible)?
>
>
Q6 How would I recognize any "critical section" of my own code?
>
>My real objective is to decide if I should deliver a web service for a specific application and these questions seem most relevant to that decision.
>I'll appreciate any clarification you can offer.