Jag vill bygga en VB-applikation som med SOAP-anrop kontaktar en IIS som exponerar metoder i en DLL-fil. (Alltså inte en objektinstantiering i serverscriptkod som t.ex. ASP-teknik.)
Därför har jag lagt ut en WSDL-fil (Web Service Definition Language) som beskriver vilka metoder som finns i den exponerade webbservicen. Anropet går bra och jag kan nu "prata" med min DLL-fil, men...
Ponera att vi skulle vara flera som anropade denna webbservicen. Dvs. 50 användare som samtidigt anropar WSDL-filen med hjälp av MSSOAP.SoapClient. Hur kommer webbservern att uppföra sig då? Kommer en ny tråd att skapas för varje anrop till DLL-filen, så att den 50:e användaren inte får time-out eller måste vänta? Hur funkar detta?
Dim soapClient
set soapclient = CreateObject("MSSOAP.SoapClient")
On Error Resume Next
Call soapclient.mssoapinit("http://127.0.0.1/soap/DocSample1.wsdl", "DocSample1", "Sample1SoapPort")
if err <> 0 then
wscript.echo "initialization failed " + err.description
end if
wscript.echo soapclient.EchoString("Hello World")
if err <> 0 then
wscript.echo err.description
wscript.echo "faultcode=" + soapclient.faultcode
wscript.echo "faultstring=" + soapclient.faultstring
wscript.echo "faultactor=" + soapclient.faultactor
wscript.echo "detail=" + soapclient.detail
end if
Kommer en ny tråd att skapas för varje anrop till DLL-filen, så att den 50:e användaren inte får time-out eller måste vänta?
Det blir säkert en tråd per anrop. IIS:en vet ju inte vad SOAP är för nåt utan ser det som en vanlig HTTP-request som alla andra.
Vill du sen verkligen övertyga dig så är det ju lätt att ta reda på: Kompilera en Dll med ett anrop till Sleep 10000 i EchoString. Kolla sen om det tar 10 eller 20 sek. när du anropar den samtidigt från två olika webläsarinstanser.
Trycket kommer inte att ligga mot WSDL filen, den är ju bara till för att beskriva det du exponerar. När man väl vet det så används den inte längre kan man säga.
Jag har bara kodat web services i Java, men det är så det är tänkt att fungera iaf.
Precis som niko skriver så är det ett vanlig HTTP anrop (med XML i HTTP bodyn).
264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25