Andrea "Kiraya"Magini

IT Professional Master

Single post

Primi passi con C# e WCF : (2) Webservice di backend

Definizione del WebService

Partiamo implementando la parte di backend dei servizi, e cioe il webservice che ci fornirà i dati utente.
Questo webservice si basa su un interfaccia molto semplice.
Apriamo visual studio 2010 e creiamo una progetto Visual C# di tipo Applicazione servizio Web ASP.NET


Una volta creato il progetto ci troveremo di fronte all’implementazione del webservice con il metodo HelloWorld.
Modifichiamo il webservice per aggiungere i metodi pubblici necessari a soddisfare le nostre richieste.
Il Webservice che andiamo a realizzare è composto da alcuni webmethod:

  • uno per l’acquisizione dei dati anagrafici utente
  • uno per acquisizione dell’elenco dei movimenti per utente

Andiamo quindi a definire gli oggetti che ci interessano creando un folder dto (data transfer objects) nella nostra soluzione.
Aggiungiamo quindi un nuovo elemento di tipo File di Codice, per il PersonaDto:

Mettiamo gli attributi necessari alla descrizione dei dati anagrafici dell’entità Persona:

using System;
using System.Data;
namespace DTOWebServices
{
public class PersonaDTO
{
public int UserId { get; set; }
public string Username{ get; set; }
public string Nome { get;set;}
public string Cognome { get; set; }
public DateTime DataNascita { get; set; }
public string CittaResidenza { get; set; }
public string IndirizzoResidenza { get; set; }
public string CAPResidenza { get; set; }
public string ProvinciaResidenza { get; set; }
}
}
Nella stessa maniera creiamo un MovimentoDto cosi composto:
using System;
using System.Data;
namespace DTOWebServices
{
public class MovimentoDTO
{
public int UserId { get; set; }
public int IdMovimento { get; set; }
public DateTime DataMovimento { get; set; }
public string Descrizione { get; set; }
public Double Valore { get; set; }
}
}

Ora che abbiamo definito i Dto, andiamo a creare i WebMethod nel nostro webservice.
Andiamo a definire un getPersona webmethod e un getMovimenti webmethod cosi composti:

[WebMethod]
public PersonaDTO getPersona(string username)
{
if (username.Equals("kiraya"))
{
return new PersonaDTO
{
UserId = 1,
Username = "kiraya",
Nome = "Andrea",
Cognome = "Magini",
DataNascita = new DateTime(1966,6,6),
IndirizzoResidenza = "Via Proxy 666",
ProvinciaResidenza ="HL",
CittaResidenza ="HELL",
CAPResidenza="00666"
};
}
if (username.Equals("test"))
{
return new PersonaDTO
{
UserId = 2,
Username = "test",
Nome = "TestNome",
Cognome = "TestCognome",
DataNascita = new DateTime(1980,12, 1),
IndirizzoResidenza = "Via test xxx",
ProvinciaResidenza = "RM",
CittaResidenza = "ROMA",
CAPResidenza = "00141"
};
}
return null;
}
[WebMethod]
public MovimentoDTO[] getMovimenti(int userid)
{
MovimentoDTO[] listaMovimenti = new MovimentoDTO[3] ;
listaMovimenti[0] = new MovimentoDTO();
listaMovimenti[0].UserId = userid;
listaMovimenti[0].IdMovimento = 1;
listaMovimenti[0].DataMovimento = DateTime.Parse("01/01/2010");
listaMovimenti[0].Descrizione = "primo movimento";
listaMovimenti[0].Valore = 50000;
listaMovimenti[1] = new MovimentoDTO();
listaMovimenti[1].UserId = userid;
listaMovimenti[1].IdMovimento = 2;
listaMovimenti[1].DataMovimento = DateTime.Parse("02/01/2010");
listaMovimenti[1].Descrizione = "secondo movimento";
listaMovimenti[1].Valore = 22000;
listaMovimenti[2] = new MovimentoDTO();
listaMovimenti[2].UserId = userid;
listaMovimenti[2].IdMovimento = 3;
listaMovimenti[2].DataMovimento = DateTime.Parse("03/01/2010");
listaMovimenti[2].Descrizione = "terzo movimento";
listaMovimenti[2].Valore = 12000;
return listaMovimenti;
}
}

con questi piccoli passi siamo in grado di esporre due metodi che tornano dei dati statici che utilizzeremo nello strato di business logic.
Lanciando in debug la solution, siamo subito in grado di generare il webservice e testarlo in modo molto semplice ed efficace.
Scarica la Solution