Archivi tag: Programming

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:

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; }

}

}
Nella stessa maniera creiamo un MovimentoDto cosi composto:
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.

Scarica la Solution

Primi passi con C# e WCF : (1) Introduzione e scenario test

Dopo anni di disegno e sviluppo di applicazioni in Java, mi ritrovo a dover sviluppare un applicativo web con interfacciamento verso uno strato di webservices interni , completamente in .net .

Dopo lo sconforto iniziale di dover iniziare da capo a muovermi all’interno di una piattaforma tecnologica da zero, inizio a cercare documentazione utile allo scouting delle tecnologie utilizzabili.

Scenario di test

Il progetto di test che voglio mettere in piedi si basa su una web-application molto semplice.

Si tratta di fornire dati ad un utente sulla base di un suo codice e parametri di input.

La prima maschera è la raccolta dei dati utente , in questo caso Username e password.

Una volta autenticato l’utente si propone la lista di delle funzioni disponibili:

  • Estratto Movimenti
  • Dati Anagrafici

Estratto Movimenti prevede la selezione di un filtro per data, e l’ottenimento di dati fiscali e con la possibilità di vedere il dettaglio delle singole operazioni effettuate dall’utente.

Dati Anagrafici prevede l’ottenimento  del dettaglio dei dati anagrafici dell’utente.

Questo per quanto riguarda il front-end che andremo ad implementare.

Per il backend, i dati sono forniti direttamente tramite da alcuni webservices .

Quello che dobbiamo andare a costruire è tutto lo strato di interfacciamento tra la web-application, e i servizi, cercando di separare le funzionalità e la responsabilità, al fine di ottenere un’infrastruttura modulare che ci permetta di lavorare velocemente con i mock e creare semplici test case per monitorare le varie fasi di sviluppo e test di regressione. Uno dei punti fondamentali su cui pongo l’attenzione è il low coupling tra i vari strati che compongono l’intera soluzione.

Identificazione delle tecnologie

La web application verrà realizzata in ASP.NET utilizzando la metodologia MVC 2 , mentre lo strato di Business Logic verrà realizzata esponendo dei servizi, tramite WCF (Windows Communication Foundation) che oltre a fare da agent verso i webservice, implementeranno la business logic sui dati.

Il webservice che esporrà i dati allo strato di Business Logic sarà un webservice puro.

Per questo test, utilizziamo il framework 3.5 e visual studio 2010