23 messaggi dal 01 ottobre 2001
Ciao a tutti
Nello scrivere pagine con remote scripting, mi sono imbattuto in un problema
di grande consumo di memoria

Il codice delle 2 pagine è:

***********************************************************************
FIRST FILE (CLIENT - SIDE )
***********************************************************************
<%@ Language=VBScript %>
<HTML>
<!--
Carica i valori dell'applicativo WIN2000 che risiede e
gira sul lato Server, utilizzando le due Utility Javascript
di IIS RS.ASP ed RS.HTM.
Abilita lo scripting remoto nella pagina corrente (chiamante),
instanzia una chiamata ad i metodi dell'oggetto definito sul
Server dando pieno accesso a i suoi metodi
-->
<HEAD>

<LINK REL=STYLESHEET HREF="../css/NetAxis.css" TYPE="text/css">
<!--
1° Carica RS.HTM
2° Abilita lo scripting remoto
>>>>!!! INSTANZIA UN APPLET IIS !!!!<<<<<
-->
<script language="JavaScript"
src="http://ak000054l/_ScriptLibrary/rs.htm"></script>
<script
language="JavaScript">RSEnableRemoteScripting("http://ak000054l/_ScriptLibra
ry");</script>

</HEAD>

<BODY
onload =javascript:window.setTimeout("NumAxis()",50)
onunload=javascript:KillObject()

>


<form id=form1 name=form1>

<!-- Oggetto DIV (HTML) che contiene gli INPUT con i valori -->
<div id=TableValues></div>

<SCRIPT LANGUAGE="VBScript">
'Varialibi Locali
****************************************************************************
**********************
Dim NumberOfAxis, i, LoadFirst
Dim serverURL, retval, j
Dim rsMath, Values
Dim ActVal(100)
Dim OldVal(100)
Dim UpdateVal(100)
'***************************************************************************
****************************************

'Inizializzazioni
****************************************************************************
**********************
serverURL = "http://ak000054l/AllServer/assi.asp"
LoadFirst = 0
j = 1
'***************************************************************************
****************************************

set rsMath = RSGetASPObject(serverURL) 'Instanzia l'oggetto ASP

Function NumAxis()
On Error Resume Next

If Err.number <> 0 Then
alert "ERROR: " & Err.number & " - " & Err.Description & " FUNCTION:
NumAxis() <<NetAxis.asp>>"
Exit Function
Else
'*************************************
set Naxis = rsMath.num(numAx) 'Chiama il metodo "num"
NumberOfAxis = Naxis.return_value 'Ritorna il valore della
chiamata
set Naxis = nothing 'Scarica l'oggetto
'*************************************

If LoadFirst = 0 Then 'Se è la prima volta che viene
caricata
For i = 0 to NumberOfAxis - 1 'la pagina
Etich = i
set Nameaxis = rsMath.nam(Etich) 'Chiama il metodo "nam"
'<INPUT> Etichetta ***************************
Set oNewNode = document.createElement("INPUT")
TableValues.appendChild(oNewNode)
oNewNode.id = "Etich" & i
oNewNode.className = "Etichetta"
oNewNode.innerText = Nameaxis.return_value
'<INPUT> Valore *******************************
Set oNewVNode = document.createElement("INPUT")
TableValues.appendChild(oNewVNode)
oNewVNode.id = "ValAx" & i
oNewVNode.className = "Valore"
oNewVNode.innerText = ASPremoteOBJECT(i)
Next
LoadFirst = 1
Set oNewVNode = nothing
Set Nameaxis = nothing
Else 'La seconda volta fai partire
aggiorna
window.setInterval "aggiorna()",1000
End If
End If
End function

window.setTimeout "NumAxis()",50 'Ricarica la funzione una seconda
volta

Function GetValue()
If i >= NumberOfAxis - 1 Then 'ri-azzera l'indice
i = 0
End If

do While i < NumberOfAxis - 1
ActVal(i) = ASPremoteOBJECT(i) 'registra i valori nell'array
If OldVal(i) <> ActVal(i) Then 'Carica gli OLD
OldVal(i) = ActVal(i)
UpdateVal(i) = true
End If
i = i + 1
Loop
End function

Function aggiorna() 'Aggiorna i valori dell'ASP Object
On Error Resume Next

GetValue()

For i = 1 to NumberOfAxis
If NumberOfAxis > i-1 Then
If UpdateVal(i-1) = true Then
TableValues.childNodes(i + i - 1).innerText = ActVal(i-1)
UpdateVal(i-1)= false
End If
End If
Next
End function


Function ASPremoteOBJECT(i) 'Torna i valori dell'oggetto remoto
set Values = rsMath.pos(i)
ASPremoteOBJECT = Values.return_value
End function

Function KillObject() 'Torna i valori dell'oggetto remoto
set Values = nothing
set rsMath = nothing
End function

</SCRIPT>


</form>


</BODY>
</HTML>


****************************************************************************
*****************************
SECOND FILE (SERVER SIDE)
****************************************************************************
*****************************
<%@ LANGUAGE=VBSCRIPT %>
<% Initialize() %>
<% RSDispatch() %>

<!--#INCLUDE FILE="../_ScriptLibrary/rs.asp"-->
<!--#include file="../Messages.asp"-->
<!--#include file="../COMutilsASP.vbs"-->
<SCRIPT RUNAT=SERVER LANGUAGE="JavaScript">
var public_description = new MyServerMethods();
function MyServerMethods()
{
this.num = Function( 'numAx','return AxisNum(numAx)' );
this.nam = Function( 'Etich','return AxisName(Etich)' );
this.pos = Function( 's1','return AxisPos(s1)' );
this.vel = Function( 's2','return AxisVel(s2)' );
this.fwe = Function( 's3','return AxisFWE(s3)' );
}

</SCRIPT>

<SCRIPT RUNAT=SERVER LANGUAGE="VBScript">
Function AxisNum(numAxis)
AxisNum = wind2000.GetNumAxis(-1)
End Function

Function AxisName(Etich)
AxisName = wind2000.GetAxisName(Etich)
End Function

Function AxisPos(x)
AxisPos = wind2000.RdVarR(x)
End Function

Function AxisVel(x)
AxisVel = wind2000.GetAxisActVelString(0)
End Function

Function AxisFWE(x)
AxisFWE = wind2000.GetAxisActPosString(0)
End Function

</SCRIPT>


NOTES
wind2000 = COM Object on server side


Funziona correttamente ma, ho raggiunto il 75% dell'utilizzazione della
CPU.....
Come potrei fare per far scendere questa percentuale da incubo?
Thank a lot for Helping

Morpheus78
robynet00@tiscalinet.it











Costruire un componente server-side che fa quello che vuoi che faccia :)


"This message was written using 100% recycled electrons"
23 messaggi dal 01 ottobre 2001
Beh, se esiste la possibilità di poter chiamare delle funzioni server semplicemente da script, non vedo perchè dovrei fare un componente server side.... il mio problema non è il come avere i dati ma come usare meglio la memoria.

Troppo elementare come risposta

Morpheus78

23 messaggi dal 01 ottobre 2001
Eh dai, ragazzi! Possibile che nessuno è in grado di aiutarmi su questo problema?!?

Morpheus78
robynet00@tiscalinet.it

Costruire componenti server side aiuta il codice ad essere più veloce perchè istruzioni come l' update se fatte mediante componenti sono eccezionali, specie se scritte bene. E per bene intendo con una buona gestione delle variabili ecc...quindi un risparmio di memoria. Ottimizzare IIS non vuol dire solo costruire codice ben fatto ma anche saper configurare l' interfaccia, eliminare i filtri ISAPI che non si usano, settare i permessi correttamente, usare al massimo le peculiarità e le caratteristiche del proprio db server (es. SQL Server -> uso di stored procedure, trigger, project). Non vuol dire niente "se esiste la possibilità di poter chiamare delle funzioni server semplicemente da script, non vedo perchè dovrei fare un componente server side"
perchè con un componente puoi spaziare 100 volte in più he con script server side, specie se i componenti non sono scritti in VB ma in C. Ho comprato un 'manualetto' di MS sull' uso di IIS, una pocket reference e devo dire che contiene tutti i segreti per ottimizzare il funzionamento di IIS e anche qualche tips per far girar meglio il proprio codice. Dopo tutto questo IIS è ancora una cozza? la memoria usata è eccessiva? Vai con Apache+php o Tomcat+jsp


"This message was written using 100% recycled electrons"
23 messaggi dal 01 ottobre 2001
Questa è una risposta, non la prima.


PS. Intendevo dire che se potevo cavarmela con lo script era meglio ma, se non c'è uscita vabè...

PSS. non volevo alimentare una polemica in seguito alla risposta di ieri anzi, ero solo rimasto deluso dal fatto che hai scritto solo 1 riga. Ora riconosco la fonte di idee che mi ha levato le "castagne" dal fuoco più volte.


Grazie
Morpheus78
robynet00@tiscalinet.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.