webForumDet fria alternativet

Hur hanterar IIS trådar för SOAP-anropade DLL-filer via WSDL-filer

Webbservrar

2 svar · 364 visningar · startad av ElMaco

Medlem sedan juni 2000161 inlägg
Frågan#1

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

Tacksam för alla tankar kring detta.

/M.

Medlem sedan juni 20022 599 inlägg
#2

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.

Medlem sedan juni 2003372 inlägg
#3

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
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)