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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | [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.