Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005...
-
Upload
annalisa-belli -
Category
Documents
-
view
219 -
download
6
Transcript of Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005...
![Page 1: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/1.jpg)
Corso di Informatica industriale
Creazione e pubblicazione di un web service in Visual Studio 2005
Prof. Ing. Salvatore CavalieriIng. Giovanni Cutuli
![Page 2: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/2.jpg)
I web service
Il web service è un sistema software progettato per supportare il concetto di interoperabilità fra diversi host all'interno di una rete L' interfaccia è definita utilizzando WSDL La comunicazione avviene mediante SOAP I messaggi sono trasportati dal protocollo HTTP I messaggi sono formattati in XML
![Page 3: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/3.jpg)
L'HTML è un linguaggio creato principalmente per la descrizione e la formattazione di pagine web mentre XML è un metalinguaggio utilizzato per creare nuovi linguaggi, atti a descrivere documenti strutturati. In HTML si hanno un insieme già definito di tag utilizzabili per la creazione delle pagine, mentre in XML è invece possibile definirne di propri a seconda delle esigenze.<?xml version="1.0" ?><utenti> <utente> <nome>Mario</nome> <cognome>Rossi</cognome> </utente> <utente> <nome>Max</nome> <cognome>Verdi</cognome> </utente></utenti>
XML
![Page 4: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/4.jpg)
Creazione di un servizio Web• Passo 1: Creazione nuovo progetto in VS 2005
• Passo 2: Creazione di un servizio ASP. NET
![Page 5: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/5.jpg)
Creazione di un servizio Web• Passo 3: Esempio automatico “HelloWorld” nel file Service.asmx
![Page 6: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/6.jpg)
Creazione di un servizio Web• Passo 4: Avviare il debug del servizio web
• Passo 5: Creazione file di configurazione del servizio Web
![Page 7: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/7.jpg)
Creazione di un servizio Web• Passo 6: Avvio del server di sviluppo integrato ASP.NET
• Passo 7: Test del servizio Web
![Page 8: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/8.jpg)
Creazione di un servizio Web• Passo 8: Richiamare un servizio pubblicato dal web service
• Passo 9: Risultato della chiamata al web service
![Page 9: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/9.jpg)
Il file WSDL
La descrizione dei servizi esportati dal web service è fatta in WSDL ed inserita in un opportuno file che avrà estensione “wsdl”. E’ possibile prendere visione del file aggiungendo la stringa “?WSDL” alla fine dell’ URL del web service. Esempio:Se l’URL del web service è:
http://localhost:1139/WebService/Service.asmxAllora la relativa descrizione dei servizi si otterrà col seguente URL
http://localhost:1139/WebService/Service.asmx?WSDL
![Page 10: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/10.jpg)
Il file WSDL
![Page 11: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/11.jpg)
Pubblicazione del servizioPer pubblicare il servizio Web dopo averlo sviluppato e testato è necessario farlo riconoscere ad IIS. Con la seguente procedura si pubblicherà il servizio Web in modo che non utilizzi più il server di sviluppo ASP.NET bensì IIS.
• Passo 1: Predisporre una directory sotto C:\Inetpub\wwwroot di nome “prova_sito” dove andranno posizionati i file necessari per il corretto funzionamento del servizio web. Dopo aver creato la cartella bisogna modificare i permessi sulla cartella appena creata altrimenti il servizio web non potrà funzionare ed ovviamente avviare IIS sull’ indirizzo localhost.
![Page 12: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/12.jpg)
Pubblicazione del servizio
![Page 13: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/13.jpg)
Pubblicazione del servizio
![Page 14: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/14.jpg)
Pubblicazione del servizioPer pubblicare il servizio Web dopo averlo sviluppato e testato è necessario farlo riconoscere ad IIS. Con la seguente procedura si pubblicherà il servizio Web in modo che non utilizzi più il server di sviluppo ASP.NET bensì IIS.
• Passo 2: Utilizzare la procedura guidata
![Page 15: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/15.jpg)
Pubblicazione del servizio
• Passo 3: Configurare il servizio web
• Passo 4: Testare il servizio web
http://indirizzoIP/prova_sito/Service.asmx
![Page 16: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/16.jpg)
Pubblicazione del servizio
• Problemi di funzionamento:
Se si riscontrano problemi di funzionamento dovuto ad errori sul file di configurazione (.config) molto probabilmente non si sta utilizzando la versione corretta del framework .NET. E’ necessario quindi selezionare quella corretta col seguente comando lanciato dal prompt:
C:\Windows\Microsoft.NET\Framework\v2.0.50215\aspnet_regiis.exe –i
E dopo riavviare Internet Information Service col comando iisreset
![Page 17: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/17.jpg)
Creazione di un client
• Passo 1: Creazione di un nuovo progetto in Visual Studio 2005
![Page 18: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/18.jpg)
Creazione di un client
• Passo 2: Creazione di una console application
![Page 19: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/19.jpg)
Creazione di un client
• Passo 3: E’ necessario aggiungere un riferimento Web nel progetto per permettere al client di dialogare col servizio web precedentemente creato.
![Page 20: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/20.jpg)
Creazione di un client
• Passo 4: Cercare il servizio fra i servizi locali
![Page 21: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/21.jpg)
Creazione di un client
• Passo 5: Selezionare il servizio desiderato
![Page 22: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/22.jpg)
Creazione di un client
• Passo 6: aggiungere il riferimento al progetto rinominandolo come “Servizio”.
Se dovessero esserci problemi controllare l’indirizzo del server
![Page 23: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/23.jpg)
Creazione di un client
• Il riferimento appena inserito dovrà apparire fra i file coinvolti nel progetto.
![Page 24: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/24.jpg)
Creazione di un client
• Passo 7: Creazione di un oggetto che rappresenta il servizio web. A questo punto è possibile invocare tutti i metodi del servizio web come se fossero locali.
![Page 25: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/25.jpg)
La parola chiave out in C#
In C# con la parola chiave out gli argomenti saranno passati per riferimento. Funzionalità simile offre la parola chiave ref, solo che se si sceglie di utilizzare ref la variabile passata alla funzione deve essere prima inizializzata.
Per utilizzare un parametro out, è necessario che la definizione del metodo e il metodo chiamante utilizzino in modo esplicito la parola chiave out.
![Page 26: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/26.jpg)
Esempio
![Page 27: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/27.jpg)
Esempio
![Page 28: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/28.jpg)
Corso di Informatica industriale
Funzioni e strutture dati in OPC XML-DA
Prof. Ing. Salvatore CavalieriIng. Giovanni Cutuli
![Page 29: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/29.jpg)
OPC XML DA
Per lo scambio dati fra client e server sono previste determinate strutture dati che servono ad inglobare al loro interno le varie informazioni da inviare al web service e di conseguenza le informazioni di risposta che il web service invia al client.
![Page 30: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/30.jpg)
Esempio di scambio dati (GetStatus)
Server OPC XML-DA
Client OPC XML-DA
GetStatus
(string LocaleID, string ClientRequestHandle, out ServerStatus Status)
GetStatusResponse
(ReplyBase Response, ServerStatus Status)
string statusInfoField; string vendorInfoField; string[] supportedLocaleIDsField; interfaceVersion[] supportedInterfaceVersionsField; DateTime startTimeField; string productVersionField
DateTime rcvTimeField; DateTime replyTimeField; string clientRequestHandleField; string revisedLocaleIDField; serverState serverStateField;
![Page 31: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/31.jpg)
Esempio di scambio dati (Read)
Server OPC XML-DA
Client OPC XML-DA
Read
(RequestOptions Options, ReadRequestItemList ItemList, out ReplyItemList RItemList, out OPCError[] Errors)
ReadResponse
(ReplyBase ReadResult, ReplyItemList RItemList, OPCError[] Errors)
string ItemPathQName ReqTypeint MaxAgeReadRequestItem[] Items
boolean ReturnErrorText boolean ReturnDiagnosticInfo boolean ReturnItemTime boolean ReturnItempath…
![Page 32: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/32.jpg)
Esempio di scambio dati (Write)
Server OPC XML-DA
Client OPC XML-DA
ItemValue[] Items boolean ReturnErrorText boolean ReturnDiagnosticInfo boolean ReturnItemTime boolean ReturnItempath…
Write
(RequestOptions Options, WriteRequestItemList ItemList, bool ReturnValuesOnReply, out ReplyItemList RItemList, out OPCError[]
Errors)
WriteResponse
(ReplyBase WriteResult, ReplyItemList RItemList, OPCError[] Errors)
![Page 33: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/33.jpg)
Esempio di scambio dati (Subscribe)
Server OPC XML-DA
Client OPC XML-DA
SubscribeRequestItem[] Items
Subscribe (RequestOptions Options, SubscribeRequestItemList ItemList, bool
ReturnValuesOnReply, int SubscriptionPingRate, out SubscribeReplyItemList RItemList, out OPCError[] Errors, out string
ServerSubHandle)
SubscribeResponse
(ReplyBase SubscribeResult, SubscribeReplyItemList RItemList, OPCError[] Errors, string ServerSubHandle)
![Page 34: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/34.jpg)
Esempio di scambio dati (Subscription Polled Refresh)
Server OPC XML-DA
Client OPC XML-DASubscriptionPolledRefresh
(RequestOptions Options, string[] ServerSubHandles, System.DateTime HoldTime, bool HoldTimeSpecified, int WaitTime, bool ReturnAllItems, out
string[] InvalidServerSubHandles, out SubscribePolledRefreshReplyItemList[] RItemList, out OPCError[] Errors,
out bool DataBufferOverflow)
SubscriptionPolledRefreshResponse(ReplyBase SubscriptionPolledRefresh Result, string[]
InvalidServerSubHandles, SubscribePolledRefreshReplyItemList[] RItemList, OPCError[] Errors, bool DataBufferOverflow)
![Page 35: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/35.jpg)
Esempio di scambio dati (Subscription Cancel)
Server OPC XML-DA
Client OPC XML-DA
SubscriptionCancel(string ServerSubHandle, ref string ClientRequestHandle)
SubscriptionCancel Response
(string ClientRequestHandle)
![Page 36: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/36.jpg)
Esempio di scambio dati (Browse)
Server OPC XML-DA
Client OPC XML-DA
Enumeration {all, branch, item}
Browse(System.Xml.XmlQualifiedName[] PropertyNames, string LocaleID, string
ClientRequestHandle, string ItemPath, string ItemName, ref string ContinuationPoint, int MaxElementsReturned, browseFilter BrowseFilter, string
ElementNameFilter, string VendorFilter, bool ReturnAllProperties, bool ReturnPropertyValues, bool ReturnErrorText, out BrowseElement[] Elements,
out OPCError[] Errors, out bool MoreElements)
BrowseResponse(ReplyBase BrowseResult, BrowseElement[] Elements, OPCError[]
Errors, bool MoreElements)
string ItemPath string ItemName bool IsItem bool HasChildren ItemProperty[] Properties
![Page 37: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/37.jpg)
Esempio di scambio dati (Get Properties)
Server OPC XML-DA
Client OPC XML-DA
ItemProperty[] Properties string Description string ItemPath string ItemName …
GetProperties(ItemIdentifier[] ItemIDs, System.Xml.XmlQualifiedName[]
PropertyNames, string LocaleID, string ClientRequestHandle, string ItemPath, bool ReturnAllProperties, bool ReturnPropertyValues, bool
ReturnErrorText, out PropertyReplyList[] PropertyLists, out OPCError[] Errors)
GetProperties Response(ReplyBase GetProperties Result, PropertyReplyList[] PropertyLists,
OPCError[] Errors)
![Page 38: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/38.jpg)
WSDL per GetStatus<s:element name="GetStatus"><s:complexType> <s:attribute name="LocaleID" type="s:string" /> <s:attribute name="ClientRequestHandle" type="s:string" /> </s:complexType> </s:element> <s:element name="GetStatusResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="GetStatusResult" type="s0:ReplyBase" /> <s:element minOccurs="0" maxOccurs="1" name="Status" type="s0:ServerStatus" /> </s:sequence> </s:complexType> </s:element> <s:complexType name="ReplyBase"> <s:attribute name="RcvTime" type="s:dateTime" use="required" /> <s:attribute name="ReplyTime" type="s:dateTime" use="required" /> <s:attribute name="ClientRequestHandle" type="s:string" /> <s:attribute name="RevisedLocaleID" type="s:string" /> <s:attribute name="ServerState" type="s0:serverState" use="required" /> </s:complexType>
![Page 39: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/39.jpg)
Corso di Informatica industriale
Il file WSDL ufficiale di OPC XML-DA
Prof. Ing. Salvatore CavalieriIng. Giovanni Cutuli
![Page 40: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/40.jpg)
Compilatore WSDL
Per compilare il file WSDL ufficiale di OPC foundation è necessario un tool presente in Visual Studio 2005. Il tool in questione è il compilatore WSDL invocabile col comando “wsdl”. Il comando WSDL è visibile, per impostazione predefinita, soltanto dal prompt dei comandi di Visual Studio.
![Page 41: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/41.jpg)
Compilatore WSDL Basta lanciare il comando wsdl senza parametri per ottenere l’ elenco delle opzioni disponibili. La forma generale di utilizzo del compilatore è la seguente:
In cui: <opzioni>: rappresenta l’insieme di opzioni di compilazione <url o percorso>: indica il percorso del file WSDL da compilare
![Page 42: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/42.jpg)
Compilatore WSDL
Le opzioni più importanti, che saranno usate in seguito, sono:“/language: <linguaggio>” opzione che serve a specificare in che linguaggio creare la classe (default: c#)“/namespace: <spaziodeinomi>” opzione che serve a definire lo spazio dei nomi“/out:<nomefile>” opzione che serve a definire un nome per il file di output generato alla fine della compilazione (il nome della classe è Service)
![Page 43: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/43.jpg)
Creazione OPC Client
WSDL file Compilatore WSDL Classe “proxy” client
Passo 1: Creazione classe proxy del client che conterrà tutti i metodi, strutture dati e tutto il necessario per una buona programmazione e un buon funzionamento del client OPC
Il comando da lanciare per ottenere la classe proxy client in C# (di nome Service) e memorizzarla nel file ClientProxy.cs è il seguente: wsdl /language:cs /out:ClientProxy.cs OPC.wsdl
![Page 44: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/44.jpg)
Creazione OPC Client
Quello che si ottiene è una classe definita cosi:
public partial class Service : System.Web.Services.Protocols.SoapHttpClientProtocol{
//codice del client}
La parola chiave partial in C# consente di definire classi, metodi e strutture dati in generale all’interno di diversi file che verranno “unificati” in fase di compilazione.
![Page 45: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/45.jpg)
Creazione OPC Client
Passo 2: Creare una console application in Visual Studio 2005 per poter costruire il client OPC
![Page 46: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/46.jpg)
Creazione OPC Client
Passo 3: Aggiungere i riferimenti a System.Web e System.Web.Services
Passo 4: Aggiungere al progetto il file ClientProxy.cs
![Page 47: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/47.jpg)
Creazione OPC Client
Passo 5 (opzionale): Includere la classe ProxyClient al namespace del progetto
namespace ConsoleApplication{
//ProxyClient code}
In questo modo la classe ProxyClient farà parte dello stesso spazio dei nomi del programma principale (main) che rappresenta il client OPC
![Page 48: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/48.jpg)
Creazione OPC Client
Passo 6: Sviluppare il client OPC. Prima cosa da fare instanziare un oggetto che rappresenta il server OPC con il quale dialogare definendo l’ URL al quale si trova.
![Page 49: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/49.jpg)
Creazione OPC Client (GetStatus)
Passo 7: Sviluppare i vari metodi del client OPC.
![Page 50: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/50.jpg)
Stampa dei risultati (GetStatus)
![Page 51: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/51.jpg)
Creazione OPC Client (Read)
La Read che utilizzeremo più avanti ha la seguente firma:
Prima è necessario definire le strutture dati necessarie:
![Page 52: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/52.jpg)
Creazione OPC Client (Read)
![Page 53: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/53.jpg)
Creazione OPC Client (Read)
![Page 54: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/54.jpg)
Stampa dei risultati (Read)
Chiamata al metodo e stampa dei risultati
![Page 55: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/55.jpg)
Stampa dei risultati (Read)
Chiamata al metodo e stampa dei risultati
![Page 56: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/56.jpg)
Creazione OPC Client (Write)
La Write che utilizzeremo più avanti ha la seguente firma:
Prima è necessario definire le strutture dati necessarie non definite prima:
![Page 57: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/57.jpg)
Creazione OPC Client (Write)
![Page 58: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/58.jpg)
Stampa dei risultati (Write) Chiamata al metodo e stampa dei risultati
![Page 59: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/59.jpg)
Stampa dei risultati (Write)
![Page 60: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/60.jpg)
Creazione OPC Client (Subscribe)
La Subscribe che utilizzeremo più avanti ha la seguente firma:
Prima è necessario definire le strutture dati necessarie non definite prima:
![Page 61: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/61.jpg)
Stampa dei risultati (Subscribe)
Stampa dei risultati
![Page 62: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/62.jpg)
Creazione OPC Client (SubscriptionPolledRefresh)
La SubscriptionPolledRefresh che utilizzeremo più avanti ha la seguente firma:
Prima è necessario definire le strutture dati necessarie non definite prima:
![Page 63: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/63.jpg)
Stampa dei risultati (SubscriptionPolledRefresh)
Stampa dei risultati
![Page 64: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/64.jpg)
Creazione OPC Client (SubscriptionCancel)
La SubscriptionCancel che utilizzeremo più avanti ha la seguente firma:
![Page 65: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/65.jpg)
Creazione OPC Client (Browse)
La Browse che utilizzeremo più avanti ha la seguente firma:
Prima è necessario definire le strutture dati necessarie non definite prima:
![Page 66: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/66.jpg)
Stampa dei risultati (Browse)
Stampa dei risultati
![Page 67: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/67.jpg)
Creazione OPC Client (GetProperties)
La GetProperties che utilizzeremo più avanti ha la seguente firma:
Prima è necessario definire le strutture dati necessarie non definite prima:
![Page 68: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/68.jpg)
Stampa dei risultati (GetProperties)
Stampa dei risultati
![Page 69: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/69.jpg)
Corso di Informatica industrialeA.A. 2007 - 2008
Connessione ad un server OPC XML
Prof. Ing. Salvatore CavalieriIng. Giovanni Cutuli
![Page 70: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/70.jpg)
Parametri connessione
Supponiamo che l’ IP del server sia 192.168.0.9Attivare l’opzione “Ottieni automaticamente un indirizzo IP”, in modo da ottenere un indirizzo in modo automatico. Se si vuole impostare tutto manualmente è sufficiente inserire un indirizzo del tipo 192.168.0.x dove x ≠9
![Page 71: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/71.jpg)
Parametri connessione
Nel codice del client sostituire l’URL del server con il nuovo URL:
Invocare i metodi sul server e controllarne le risposte (come visto in precedenza)
![Page 72: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/72.jpg)
Corso di Informatica industriale
Creazione di un server OPC XML-DA
Prof. Ing. Salvatore CavalieriIng. Giovanni Cutuli
![Page 73: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/73.jpg)
Compilatore WSDL
Per compilare il file WSDL ufficiale di OPC foundation per la classe lato server si utilizza lo stesso tool utilizzato per creare la classe proxy del client. Il tool in questione è il compilatore “wsdl” al quale si associano gli opportuni parametri.
![Page 74: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/74.jpg)
Compilatore WSDL Basta lanciare il comando wsdl senza parametri per ottenere l’ elenco delle opzioni disponibili. La forma generale di utilizzo del compilatore è la seguente:
In cui: <opzioni>: rappresenta l’insieme di opzioni di compilazione <url o percorso>: indica il percorso del file WSDL da compilare
![Page 75: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/75.jpg)
Compilatore WSDLLe opzioni più importanti e che saranno usate in seguito sono:“/language: <linguaggio>” opzione che serve a specificare in che linguaggio creare la classe astratta (default: c#)“/namespace: <spaziodeinomi>” opzione che serve a definire lo spazio dei nomi“/out:<nomefile>” opzione che serve a definire un nome per il file di output generato alla fine della compilazione (il nome della classe è Service)“/server” opzione che serve a generare la classe astratta per il server OPC (se l’opzione è omessa il tool genera la classe proxy per il client)
![Page 76: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/76.jpg)
Creazione OPC Server
WSDL file Compilatore WSDL Classe “proxy” server
Passo 1: Creazione classe proxy del server che conterrà tutti i metodi, strutture dati e tutto il necessario per una buona programmazione e un buon funzionamento del server OPC
Il comando da lanciare per ottenere la classe proxy client in C# (di nome Service) e memorizzarla nel file ProxyServer.cs è il seguente:wsdl /language:cs /out:ProxyServer.cs /server OPC.wsdl
![Page 77: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/77.jpg)
Creazione OPC Server
Quello che si ottiene è una classe definita cosi:public abstract partial class Service : System.Web.Services.WebService{
//codice del server proxy}
Utilizzare il modificatore abstract in una dichiarazione di classe significa che una classe può essere utilizzata soltanto come classe base di altre classi. I membri contrassegnati come astratti o inclusi in una classe astratta devono essere implementati da classi che derivano dalla classe astratta.
![Page 78: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/78.jpg)
Creazione OPC Server Passo 2: Creare un nuovo progetto in Visual Studio 2005. Il progetto deve essere di tipo Web ed in particolare dovrà essere un servizio Web ASP.NET
![Page 79: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/79.jpg)
Creazione OPC Server Passo 3: Aggiungere il file ProxyServer.cs al progetto appena creato.
![Page 80: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/80.jpg)
Creazione OPC Server Passo 4: Da Visual Studio trascinare il file ProxyServer.cs all’interno della cartella APP_CODE del progetto.
![Page 81: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/81.jpg)
Creazione OPC Server Rinominare il file Service.cs in ServerOPC.cs per evitare confusione con la classe Service presente all’ interno del file ProxyServer.cs che rappresenta invece la classe astratta del servizio web
![Page 82: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/82.jpg)
Creazione OPC Server Rinominare il file Service.asmx in ServerOPC.asmx e modificarne il contenuto
![Page 83: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/83.jpg)
Creazione OPC Server I file principali del progetto sono:
ProxyServer.cs : classe proxy del server.
ServerOPC.asmx : classe principale del servizio Web (e quindi del server OPC). Il suo codice è racchiuso in ServerOPC.cs
Per contattare il server (dopo la pubblicazione) si utilizzerà il seguente link:
http://ip/ProvaServerOPC/ServerOPC.asmx
![Page 84: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/84.jpg)
Creazione OPC Server Passo 5: Fare in modo che la classe ServerOPC (definita in ServerOPC.cs) estenda la classe Service definita all’interno del file ProxyServer.cs e non System.Web.Services.Webservice
public class ServerOPC : Service {
//OPC Server code}In questo modo la classe Server estenderà la classe astratta Service contenuta in ProxyServer.cs
![Page 85: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/85.jpg)
Creazione OPC Server
Dal punto di vista concettuale è stata appena creata la seguente architettura:
WSDL OPC Classe proxy del server OPC(di nome Service ed
estende System.Web.Services.WebService)
Classe del server OPC(di nome ServerOPC ed
estende la classe Service)
Compilazione
Client OPCConnessione
![Page 86: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/86.jpg)
Creazione OPC Server
Passo 6: Sviluppare il server OPC implementando tutti i metodi che ci impone la classe astratta Service (altrimenti non compila).
![Page 87: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/87.jpg)
Creazione OPC Server
Quando si implementa un metodo che era definito come abstract in c# bisogna anteporre la parola chiave override
![Page 88: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/88.jpg)
Creazione OPC Server Implementare i metodi non basta, soprattutto se nei parametri della funzione sono presenti parametri out. Esempio con GetStatus: In tal caso basta sviluppare la funzione in modo che ritorni i parametri richiesti, anche se vuoti:public override ReplyBase GetStatus(…) {
Status = null;ReplyBase Response = new
ReplyBase();return Response;
}
![Page 89: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/89.jpg)
Creazione OPC Server
Se non si mettesse la linea:Status = null;
il compilatore darebbe errore:
perché tutti i parametri out devono essere assegnati prima che la chiamata a funzione termini
![Page 90: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/90.jpg)
Creazione OPC Server
Passo 7: Impostare come pagina iniziale del progetto il file contenente il server OPC
![Page 91: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/91.jpg)
Creazione OPC Server
Passo 8: Avviare e testare il server OPCPotrebbe essere necessario aggiungere un nuovo file Web.config (come visto in precedenza)
![Page 92: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/92.jpg)
Creazione OPC Server
Avviando il server appare l’interfaccia con i metodi esportati dal server:
![Page 93: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/93.jpg)
Pubblicazione del server OPC
A questo punto il nostro servizio web ha bisogno solo di essere pubblicato, predisponendo una cartella dal nome ProvaServerOPC (utilizzando la procedura vista in precedenza).Dopo la pubblicazione del servizio, il server OPC sarà disponibile all’ indirizzo:
http://ip/ProvaServerOPC/ServerOPC.asmx
![Page 94: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/94.jpg)
Esempio GetStatus lato server
public override ReplyBase GetStatus(string LocaleID, ClientRequestHandle, out ServerStatus status){ ReplyBase Response = new ReplyBase(); Response.RcvTime = System.DateTime.Now; Response.ServerState = serverState.running; Response.ClientRequestHandle = "Client Handle modificato dal server"; Response.RevisedLocaleID = "IT";
Status = new ServerStatus(); Status.ProductVersion = "Product version"; Status.StartTime = new DateTime(2008, 06, 04, 11, 0, 0); Status.StatusInfo = "Status info"; Status.SupportedInterfaceVersions = new interfaceVersion[1]; Status.SupportedInterfaceVersions[0] = interfaceVersion.XML_DA_Version_1_0; Status.SupportedLocaleIDs = new string[1]; Status.SupportedLocaleIDs[0] = "IT"; Status.VendorInfo = "Vendor INFO";
Response.ReplyTime = System.DateTime.Now; return Response;}
![Page 95: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/95.jpg)
Corso di Informatica industriale
Salvataggio variabili
Prof. Ing. Salvatore CavalieriIng. Giovanni Cutuli
![Page 96: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/96.jpg)
Salvare le variabili
Supponiamo di voler memorizzare quante volte è stata attivata una determinata funzione, da quando il servizio è in run. Ovviamente tale valore andrebbe perso se il servizio dovesse smettere di funzionare e dovesse essere necessario il riavvio dei servizi.
CLIENT
callCounterVariable
Attivazione della funzione SERVER
![Page 97: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/97.jpg)
Salvare le variabili Creare un semplice Web Service come visto in precedenza.
![Page 98: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/98.jpg)
Salvare le variabili Click destro sul nome del progetto e aggiungere una “classe di applicazione globale”
![Page 99: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/99.jpg)
Salvare le variabili A questo punto il contenuto del progetto sarà:
![Page 100: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/100.jpg)
Salvare le variabili
![Page 101: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/101.jpg)
Salvare le variabili Caso senza salvataggio variabili
![Page 102: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/102.jpg)
Salvare le variabili
![Page 103: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/103.jpg)
Salvare le variabili
![Page 104: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/104.jpg)
Salvare le variabili
Caso con salvataggio variabili (Global.asax)
![Page 105: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/105.jpg)
Salvare le variabili
Caso con salvataggio variabili (Service.cs)
![Page 106: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/106.jpg)
Salvare le variabili
![Page 107: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/107.jpg)
Salvare le variabili
Arrestiamo e avviamo nuovamente IIS e vediamo cosa accade se richiamiamo la funzione
![Page 108: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/108.jpg)
Salvare le variabili
Il conteggio riprende da zero dato che l’applicazione è stata riavviata
![Page 109: Corso di Informatica industriale Creazione e pubblicazione di un web service in Visual Studio 2005 Prof. Ing. Salvatore Cavalieri Ing. Giovanni Cutuli.](https://reader036.fdocumenti.com/reader036/viewer/2022062701/5542eb4d497959361e8ba7a1/html5/thumbnails/109.jpg)
Salvare le variabili
E’ possibile memorizzare una variabile di livello applicativo direttamente nella classe del servizio (nel file Service.cs), a patto che sia inizializzata.