Ciao. Sto creando un applicativo web che tra le varie cose deve occuparsi di scrivere una sorta di report in formato csv.
I dati da scrivere saranno dei dati anagrafici di persone.
Siccome questo file dev'essere scritto in una zona fuori dalla rete del web server (per questioni di sicurezza), devo utilizzare un webservice.

La domanda è: qual'è il sistema migliore per "trasportare" i dati da scrivere verso il webservice?

Esempio: devo scrivere un file con questi dati ed in questo formato:

ragione_sociale;indirizzo;cap;citta;provincia;

Come potrei passare i dati al webservice che si occupa di creare il file?
Una array di stringhe?
Una classe che rappresenta i dati della riga? E come farei ad allineare la classe tra il webservice (residente su una macchina apposita) e quella del sito web?

Forse son domande banali, ma vorrei avere qualche consiglio in merito.
Se ho capito bene, allora dovresti documentarti sui Data Transfer Objects (DTOs). In rete trovi un sacco di risorse.

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
Consiglio personale: non usare un webservice. Passa direttamente ad un servizio WCF. Magari può sembrare un pò ostico all'inizio, però ti assicuro che a lungo andare ti offre molta più flessibilità ed efficienza.

Per quanto riguarda i dati, ti basta creare una classe che incapsula il tuo modello, l'importante è che tutti i tipi all'interno siano serializzabili.

Davide Guida
Technical Architect @ Razorfish Healthware
http://davideguida.altervista.org
678 messaggi dal 12 maggio 2001
www.idioteca.it
andri745 ha scritto:
Siccome questo file dev'essere scritto in una zona fuori dalla rete del web server (per questioni di sicurezza), devo utilizzare un webservice.

Non ho capito questa parte...
se da web devi lanciare qualcosa che crea un file, non ti basta salvare il tuo file in una cartella e da iis impedire la visione dell'estensione del tuo file (.csv)? L'alternativa del webservice può andare, ma cosa ci devi fare poi con i file creati?
Approfondendo meglio le tue esigenze, sarà più facile darti consigli mirati.
ciao
2.198 messaggi dal 30 novembre 2001
sono d'accordo con mizrael, l'unica cosa da tenere presente se realizzi un servizio WCF, se il server è in hosting o in housing, perchè su aruba per esperienza personale il servizio WCF non funziona per alcune policy sulla sicurezza degli assembly
mizrael ha scritto:
Consiglio personale: non usare un webservice. Passa direttamente ad un servizio WCF. Magari può sembrare un pò ostico all'inizio, però ti assicuro che a lungo andare ti offre molta più flessibilità ed efficienza.

Per quanto riguarda i dati, ti basta creare una classe che incapsula il tuo modello, l'importante è che tutti i tipi all'interno siano serializzabili.


Ciao.

I server sono tutti interni, però tempo fa avevo provato ad utilizzare un servizio WCF di test, ma anche se richiamandolo dal browser lo vedevo, richiamandolo dal codice non c'era verso di farlo andare e non si capiva il perchè.

Comunque la situazione sarebbe questa (utilizzo ovviamente del codice di prova):
classe che identifica la persona e che si trova nel progetto del sito:

[Serializable()]
public class Persona
{
  public Persona()
  {
    
  }

    public string nome { get; set; }
    public string cognome { get; set; }
    public byte eta { get; set; }
}


Dal sito mi creo da qualche parte un array di Persona:


Persona[] p = new Persona[2] { 
            new Persona{  cognome = "Bianchi", nome = "Pippo", eta = 20}, 
            new Persona {nome = "Mario", eta = 25, cognome="Rossi"}
        };




Questo array lo passo al webservice che si occupa di scrivere il file:

[WebMethod]
    public  void BinSerialize(string path, string nomeFile, Persona[] p) {
        
        string fullPath = Path.Combine(path, nomeFile);

        //logica per la scrittura del file utilizzando Persona[]
    }


Considerando che il sito ed il web service sono progetti staccati tra loro e che fisicamente risiedono su macchine differenti, è possibile fare quel che vorrei?
dalla descrizione che hai dato, questo dovrebbe essere l'unico problema: http://msdn.microsoft.com/it-it/library/cc197955(VS.95).aspx

Ad ogni modo prova, se esce fuori qualcos'altro sai già dove chiedere :D

Davide Guida
Technical Architect @ Razorfish Healthware
http://davideguida.altervista.org
710 messaggi dal 13 novembre 2008
Contributi
Faccio mente locale perchè ho fatto qualcosa di simile poco tempo fa, e a mio parere il webService è la soluzione più veloce:

Costruisci il servizio web sul sito 1, all'interno di una cartella supponiamo webServices, perchè in futuro potresti implementarne altri (a me è capitato):

da VisualStudio, aggiungi nuovo elemento Servizio Web

questo crea due file: un .asmx nella cartella webServices e un .cs in App_Code; apri il .cs, qui hai la tua classe e scrivi i metodi che ti occorrono.
Quando finito metti in rete il tuo servizio sul sito 1.

Nel sito 2 dalla cartella App_WebReference, aggiungi riferimento al servizio web, cerchi il tuo file .asmx del sito 1

http://www.mioSito.it/webServices/mioService.asmx

e clicchi aggiungi riferimento dandogli il nome che vuoi.

Ora hai a disposizione tutto ciò che ti occorre

Da una pagina richiami il servizio ad esempio asincronicamente così:


namespaceWebService.classeWebService ws=new namespaceWebService.classeWebService();

IAsyncResult iAsync;
iAsync = ws.BeginMetodo(parametro,null,null);

while(iAsync.IsCompleted==false)
{}

if (wlapp.EndMetodo)
{
// recupero i dati che mi interessano
}

Non capisco che problema dovrebbe esserci, due server differenti, uno con il webService, e uno con il consumer.

Forse ho compreso male il problema?

ciao, spero di aiuto!

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.