Sei sulla pagina 1di 60

Infomedia Green:

informazione e sostenibilità
Dal mese di Dicembre parte la nostra campagna contro lo spreco della carta e la deforestazione
selvaggia delle foreste primarie. Abbiamo deciso di dare impulso a questa iniziativa prendendo
atto della realtà diffusa in cui la carta è considerata una risorsa illimitata, a buon mercato e tuttora
utilizzata per qualsiasi tipo di pubblicazione (compresi miliardi di volantini “usa e getta”, come quelli
che lastricano le zone fieristiche all’ora di chiusura).

Dati alla mano, ogni anno in Italia vengono sprecati solo… 50 miliardi di fogli di carta! Ossia 2
milioni di alberi. Dal 1995 al 2020 la produzione internazionale della cellulosa e della carta per
l’editoria sarà cresciuta del 77%, e circa il 75% del legname importato da Russia e Indonesia – e quindi
della carta utilizzata per la stampa – proviene da alberi abbattuti illegalmente nelle foreste primarie.
Tutti gli anelli che compongono la catena editoriale sono, a vario titolo, responsabili del consumo
della carta ed ognuno, con un po’ di buona volontà, può (e prima o poi dovrà) correggere le storture
di un processo editoriale disattento alla sostenibilità.

Un esempio è la quantità esorbitante di carta utilizzata per gli atti dei parlamenti (nazionali ed
europeo), magari per minute e testi di validità più che effimera; ulteriore esempio è il numero di
copie tirate dai quotidiani, dai settimanali e dai periodici che è di gran lunga superiore (per via dei
contributi statali) alle copie effettivamente vendute: in sintesi, si sa già in partenza che gran parte di
quelle copie è destinata al macero. Punto.

Questo scenario distorto era tarato per una società in cui l’informazione veniva veicolata quasi
esclusivamente su carta, ma oggigiorno non è più così: tra televisione, radio, Internet, telefoni cellulari
e dispositivi vari, il cartaceo non è più “il principale supporto” di veicolazione. Invece attraversando
i capannoni industriali capolinea della distribuzione editoriale, si nota che sono stracolmi di torri di
rifiuti editoriali cartacei. Migliaia di tonnellate di prodotti destinati al macero ogni anno.

Il progetto Infomedia Green è ambizioso e innovativo; per realizzarlo abbiamo necessità della
collaborazione e della buona volontà di tutti i nostri lettori: perché ognuno, dalla sua scrivania, può
iniziare a far molto per una migliore sostenibilità.

Per mettere in atto questo progetto promuoveremo degli incentivi per promuovere un consumo più
critico, prendendo atto dell’inevitabile sorpasso del digitale sul cartaceo: la qualità dei nostri contenuti
resta immutata, ed è comunque possibile stampare i PDF degli articoli che più interessano.

Non prevediamo l’eliminazione totale della stampa su carta, ma opteremo per una soluzione “on
demand”: l’utente che non vuol rinunciare alla sua copia cartacea completa potrà comunque
acquistarla in ogni momento, limitando al massimo lo spreco di carta. È una questione di sensibilità
e anche di comodità, visto che già oggi trascorriamo più tempo a leggere informazioni tecniche dal
video e sempre meno su carta.
���������������������������������������������������
��������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������
��� ������� �������� �� �������� ��������� ����������
������������������������������������������������
�������������������������������������������������
��������������������������������������������
������������������������
IN VETRINA

Object-Oriented Programming Administrator’s Guide to Cisco Networking Simplified


in Python Microsoft Office 2007 Servers 2a Ed.
di M. Goldwasser e D. Letscher di J. Bruzzese e R. Barrett di N. Anderson et al.
Prentice Hall Sams Cisco
688 pp - euro 83,95 576 pp - euro 44,95 432 pp - euro 36,95
ISBN 9780136150312 ISBN 9780672329494 ISBN 9781587201998

ASP.NET 3.5 Unleashed Advanced FPGA Design Visual Basic 2005 with .NET 3.0
di S.Walther Architecture, Implementation, and Programmer’s Reference
Sams Optimization di R. Stephens
1920 pp - euro 52,95 di S. Kilts John Wiley
ISBN 9780672330117 John Wiley 1200 pp - euro 35,95
336 pp - euro 80,00 ISBN 9780470137055
ISBN 9780470054376

Building a Web 2.0 Portal Programming .NET 3.5 Wiley Pathways PC Hardware
with ASP.NET 3.5 Rough Cuts Version Essentials Project Manual
di O. A. Zabir di A. Horovitz e J. Liberty di D. Groth, R. Gilster e R. Polo
O’ Reilly O’ Reilly John Wiley
308 pp - euro 45,00 704 pp - euro 49,00 240 pp - euro 25,00
ISBN 9780596510503 ISBN 9780596510398 ISBN 9780470114117
VBJ 78

Foundations of Windows Server 2008 Mastering Microsoft


Net-Enhanced Organizations The Definitive Guide Visual Basic 2008
di D. Straub di J. assell di E. Petroutsos
John Wiley O’ Reilly Sybex
496 pp - euro 55,50 856 pp - euro 54,00 1152 pp - euro 42,00
ISBN 9780471443773 ISBN 9780596514112 ISBN 9780470187425

Scrivi a book@gruppoinfomedia.it specificando nell’oggetto della e-mail:


IN VETRINA VBJ n. 78
oppure inviaci il coupon al numero di fax 0587/732232
Potrai acquistare i libri qui riportati con uno SCONTO ECCEZIONALE
del 10% anche se acquisti solo un libro
oppure del 20% se acquisti 3 libri

VBJ 78
���� ��������
����������������
�����������������������������������
�������������������������������������
�����������������������������������
��� ���� ��� �������� �������������� ��� ��
����������������������������������
������������������������������� ��������
��������������������������������������
����������������������������
�������� �� ������ ���� ������� ����
�� ����������������������������������������������
������������������������
�����������������������������������
����������������������������������������
������������������������������������ ������
������������������������������������
����������������������������������������������
����������������������������������������
�������������������������������������
�� ��������������������������������������������������������������������������������
������������������������������������� �������������������������������������������������������������
������������������������������������ �������������������
��������������������������������������
�� �������������� ���� ��������� ������
���������������������������������� ������
������������������������������������
���������� �� �������������������������������������������������������
�����������������������������������������������������������������������������������
���� ����� ��� ��������� ������� ���
������ ������ �������� ������ ���������
��������������������
��� ������� ��� �������� ���� ������ �����������������������������������������
����������������������������������
��������
���������� ������� ���� �������� ����� ���������
�������� ��������������� ��� �������
������������������������������������
������������������������������������
�� ��������������������
���������������������������������������������������������������������
������ ���� ���������� ��� ��������� ��� �������������������
���������������������������������
�����������������������������������
������� ���������� ������ ������ ������ ����
�������������������������������������
�������������������������������������
���������� �������������� ��� ��������
��� �������� ���������� �� ���� �����������
�� �������������������������������������������������������������������������������������������
��������� ��������������������������������������������������������������������������������������
������ ������ ���� ������������� ��� ������������
���������� ��� ������� ����������� �������������������������������
���������� ������� ���� ������
��������
���������
���������������������
�� ���������������������������������������������������������������������������������
��������������������������������������������������������������������
�������������������

���������������
��������
������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������� �� ����������
�������������������������������������������������������������������������������������������
������������������������������������������������������������������� �� ���������������

����������������������������������� �
�������������������
��������������������������������
�����������������������������

��������������������������
��������������������������������������

��������������������
���� ������� ������
�������������������������
�����������������������������������������
����������������
�������������������������������
�������������
�����������������������
���������������
�����������������
�������������
���������������������


������������������������������������������������������
������������������������������������������������������
���������������������������������������������������
��������������������������������������������������������������
�����������������������������������������������������������������
��������������������������������������������������������������
����������������������������������������������������������������
�����������������������������������������������������������������
����������������������������������������������������������������
�����������������������������������������������������������������
�������� ������� ����������� ����������� ����������� ����� �������
����������
��������������������
��������������������������������
�������������������������������������������������������������������������������������
������������������������� ���������������������������������������������������������������������������������������������
����������������������� ���������������������������������������������������������������������������������������
�����������������������
��������������������������������������������������������������������������������������
��������������� ��������������������������������������������������������������������������������������������
������������������������������
������������������
������� ��������������������������������������������������������������������������������������������
����������������������� ����������������������������������������������������������������������������������������
�������������� ���������������������������������������������������������������������������������������
������������������� �������������������������������������������������������������������������
����������� �����������������������������������������������������������������������������������������
������������������� ��������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������
������ ���������������������������������������������������������������������������������������
������������������������ �����������������������������������������������������������������������������������������
����������������������
�����������������������������������������������������������������
���������������������������������������������������������������������������������������������
������������������� ��������������������������������������������������������������������������������������������
����������������������������������
��������������������������������� ��������������������������������������������������������������������������������������������
���������������� ��������������������������������������������������������������������������������������������
�������������������������������������������������������������������������������������������
�������������������������������
������������������������������������������������ ���������������������������������������������������������������������������������������������
���������������������������������� ������������������������������������������������������������������������������������������
�������������������� ������������������������������������������������������������������������������������������
�������������������������

����������������
��������������������������

���������������������������������������������������������
����������������������������������������������������
������������������������������������

����������������������������������������������������������������
���������������������������������������������������������
�������������������������������������
�������������������������������������������������������������������������
�����������������������������������������������������
����������������������������������� ��
WINDOWS SERVER

Windows Server
System
Reference Architecture

di Alessandro Sinibaldi

Microsoft ha pubblicato una serie di guide su § Application Architecture -


Windows Server System per permettere a un’or- Principi di disegno dell’in-
ganizzazione di costruire un’infrastruttura sicura, frastruttura a supporto del
scalabile, gestibile e affidabile. Le guide sono pub- livello applicativo.
blicate alla URL: § Management Infrastructu-
h t t p : / / w w w. m i c r o s o f t . c o m / t e c h n e t / re Architecture - È basata
solutionaccelerators/wssra/raguide/default.mspx su Microsoft Operations
e sono divise in due parti, a loro volta suddivise Framework e concerne la
in sezioni: gestione dell’infrastruttu-
ra.
• Architecture Blueprints § Security Architecture -
§ Introduction Strategia di sicurezza che
§ Network Architecture - Principi di disegno riguarda la suddivisione in
dell’infrastruttura di rete a supporto della zone, le policy e le proce-
comunicazione dentro l’organizzazione. dure.
§ Storage Architecture - Scelte architetturali
per il consolidamento e/o la centralizzazio- • Implementation Guides
ne dello storage. § Device Services
− Network devices -
Router, switch, load
balancer.
Alessandro Sinibaldi è Enterprise Architect e Project Mana-
ger. Lavora da circa dieci anni nel settore IT con clienti sia − Computing devices -
nella Pubblica Amministrazione sia nel settore Telecomu- Tipi di server e requi-
nicazioni. Si occupa di sicurezza informatica in particolare siti hardware.
ma spazia dai sistemi operativi, ai database, ai linguaggi di
programmazione. È certificato CISSP, CEH, MCSE: security,
− Storage devices - Direct-
MCSD, MCDBA, OCP, SCSECA e CWSP. I suoi interessi attuali attached storage (DAS),
sono orientati alle grandi architetture enterprise. È autore network attached
del libro “Risk Management”, edito da Hoepli nel 2007. È
storage (NAS), storage
contattabile via email all’indirizzo asinibaldi@infomedia.it.
area network (SAN).

VBJ N. 78 - Novembre/Dicembre 2007 11


WINDOWS SERVER

Figura 1 Struttura di business di riferimento (adattata dal sito Microsoft)

§ Security Services − Data services Microsoft SQL Server


− Firewall services firewall inter- 2000, Windows cluster.
zone, ISA server, Web proxy service,
caching. § Supplemental services
− Backup and recovery services − Web application services Microsoft
infrastruttura di backup e recovery Internet Information Services (IIS).
dei dati e dei sistemi. − Infrastructure management servic-
− Certificates services Public key es Remote Control, Debug facilities,
infrastructure (PKI). remote management e tool.
− Remote access services Site-to-site
§ Core services virtual private network (VPN), Client
− Deployment services installazione e VPN, RRAS, Internet authentication
configurazione del sistema operati- service (IAS).
vo, APF, WinPE, Sysprep. − Middleware services NET Framework,
− Network services DNS, DHCP, COM+ e Message Queuing Services
WINS. (MSMQ).
− Directory services Microsoft Active − Messaging services Microsoft Ex-
Directory. change.
− File and print services Distributed File
Service (DFS), File Replication Service La struttura di business che le guide hanno
(FRS), print device, Windows cluster. come riferimento è quella mostrata in Figu-

12 VBJ N. 78 - Novembre/Dicembre 2007


WINDOWS SERVER

ed è liberamente disponibile. La prima ver-


sione del Framework risale al 1995).

Architettura di rete

Lo schema di base è quello mostrato in Fi-


gura 2.
Un router collega l’azienda a internet con
un’interfaccia seriale verso la rete esterna e
una ethernet collegata a uno switch dove af-
feriscono anche le interfacce di rete esterne
del firewall aziendale. Il router riceve il traf-
fico dalla seriale, lo gira sulla ethernet e da
qui al firewall. Questo analizza il traffico in
base alle sue regole e, se permesso, lo gira sul-
la sua interfaccia ethernet interna. Questa, a
sua volta, è collegata a uno switch a cui sono
attaccati gli altri host della rete interna.
Il tipo di periferiche che vengono prese in
considerazione sono: router, switch, firewall,
server VPN, periferiche in load balancing.
Ad alto livello, i requisiti di business posso-
no essere espressi così:
“gli utenti hanno bisogno di usufruire dei ser-
Figura 2 Infrastruttura di rete di riferimento vizi IT in modo efficiente, affidabile e sicu-
ro. In aggiunta, le periferiche che forniscono i
servizi devono pure connettersi tra di loro in
modo affidabile, efficiente e sicuro”.
ra 1, dove sono evidenziate le varie aree lo-
giche di un’organizzazione: La rete interna (LAN Local Area Network)
ha, in generale, e soprattutto in realtà di classe
• un ufficio centrale enterprise, una struttura addizionale, rispetto
• una sede periferica a quella mostrata in Figura 2. In particolare
• una extranet per la condivisione di dati essa può essere segmentata in Virtual LAN
con clienti e fornitori (VLAN). Una VLAN è identificata da una serie
di porte su uno o più switch. Tutte le periferi-
Linee guida architetturali che attaccate a queste porte condividono un
(Architecture blueprints) dominio di broadcast, nel senso che tutto il
traffico di broadcast proveniente da una delle
Se dovessimo confrontare WSSRA con TO- macchine collegate è replicato solo e soltanto
GAF questa sarebbe la parte degli Architec- alle periferiche appartenenti alla stessa VLAN.
ture Building Block. In generale ogni VLAN ha un indirizzamen-
(Togaf, attualmente giunto alla versione 8.1, è to di rete differente. Per instradare il traffico
un framework, composto da un metodo (ADM da una VLAN all’altra è necessaria una peri-
Architecture Development Method) e da un ferica che lavora al livello 3 ISO/OSI e cioè
insieme di strumenti di supporto, per svilup- un router o uno switch di livello 3.
pare un’architettura enterprise. È gestito da Cisco raccomanda, come struttura di rete ri-
The Open Group (http://www.opengroup.org) dondata, un modello di tipo gerarchico come

VBJ N. 78 - Novembre/Dicembre 2007 13


WINDOWS SERVER

Figura 3 Architettura di rete di riferimento secondo Cisco (adattata dal sito Cisco)

quello mostrato in Figura 3. punto, del Livello 3, verso le altre VLAN.


Gli switch di questo livello presentano due
La rete è divisa in tre livelli: tipi di collegamenti: uno verso entrambi
gli switch del Core Layer per motivi di ri-
• Access Layer - Sono gli switch a cui sono dondanza e un altro tra di loro. Le porte
collegati gli utenti finali. Questi switch che collegano i due switch del distribution
sono caratterizzati da un’alta densità di layer devono essere in trunking dal mo-
porte, un costo contenuto e caratteristi- mento che devono far passare il traffico
che per implementare il controllo dell’ac- proveniente dalle varie VLAN.
cesso degli utenti e la sicurezza (come ad • Core Layer - Questi switch costituiscono
esempio il filtraggio dei MAC address). Le il backbone dell’organizzazione. Essi sono
porte dei vari switch sono suddivise even- caratterizzati da un’altissima velocità e ef-
tualmente in VLAN. Il consiglio che si dà ficienza nello smistamento dei pacchetti.
normalmente è di far coincidere le VLAN In genere a questo livello la scalabilità si
con gruppi di macchine/utenti che han- ottiene per scaling-up, cioè aggiungendo
no un frequente scambio di dati tra loro risorse come RAM e quant’altro o passan-
come nel caso di workgroup, business unit do a modelli più performanti piuttosto che
o simili. Da notare che, in Figura 3, ogni per scaling-out, che consiste nell’aggiun-
switch ha due porte di uplink collegate a gere più periferiche dello stesso tipo, tec-
ciascuno degli switch che costituiscono il nica, questa, che invece può andare bene
distribution layer per motivi di ridondan- sull’access o sul distribution layer.
za.
• Distribution Layer - Questo livello è ca- Il modello gerarchico è un modello logi-
ratterizzato da switch con porte molte ve- co e fisicamente può essere implementato in
loci e funzionalità di Livello 3. Il traffico vari modi, a seconda delle dimensioni e delle
proveniente dalle varie VLAN arriva qui e caratteristiche dell’organizzazione.
viene smistato, grazie alle funzionalità, ap- La struttura vera di un’organizzazione di

14 VBJ N. 78 - Novembre/Dicembre 2007


WINDOWS SERVER

tipo enterprise è mostrata in


Figura 4.
Da notare la presenza di altri
blocchi, ad esempio l’Internet
Block che raccoglie tutte quel-
le periferiche che garantiscono
l’accesso dell’organizzazione a
Internet. Questi blocchi raccol-
gono periferiche, caratterizzate
da funzionalità comuni e con-
divise a tutta l’azienda. Ogni
server è quantomeno dotato
di due schede LAN differenti
che si agganciano a due switch
diversi dell’access o del distri-
bution layer.
Tipicamente firewall, router,
server web e altro sono ridon-
dati tramite Load Balancing.
Il Load Balancing è ottenuto
tramite software installato sul-
Figura 4 Architettura di riferimento secondo Cisco
le macchine o tramite hardware (adattata dal sito Cisco)
dedicato in due modi distinti:

• Distributed - Software ap- • Le sedi periferiche si collegano tramite


posito gira su ogni nodo, che riceve tutto il linee dedicate o tramite VPN attraverso
traffico dedicato al cluster. I nodi si scam- internet. Le periferiche coinvolte sono, ti-
biano pacchetti tra di loro che permetto- picamente, CSU/DSU o switch (Frame Re-
no a) di verificare lo stato di vita o meno lay, ATM, ecc.)
del singolo nodo e b) di distribuirsi il ca-
rico di lavoro, facendo sì che solo uno dei Tra le varie forme di collegamento alla rete
nodi processi la richiesta entrante. aziendale non possiamo dimenticare anche
• Routed - In questo caso esiste un hardwa- le tecnologie wireless, che assumono le va-
re dedicato, ad esempio un concentratore, rie forme di:
che riceve ogni pacchetto dedicato al clu-
ster e lo smista, usando vari algoritmi, a • WPAN (Wireless Personal Area Networks)
un nodo per volta. in questa categoria rientrano forme di
collegamento come Bluetooth o Infraros-
Per quanto riguarda il servizio di acces- si. Sono collegamenti a distanza molto cor-
so remoto, invece, ci sono, in genere due tipi ta (al massimo 10 metri) e utilizzati per in-
di collegamenti: terfacciare varie periferiche tra loro, come
Palmari, stampanti, notebook e simili.
• I singoli client si collegano alla rete azien- • WLAN (Wireless Local Area Networks) in
dale tramite linee telefoniche, con modem, questa categoria rientrano vari standard
o tramite connessioni a banda larga, come di collegamenti Wi-Fi, come 802.11a, b o
ADSL, ISDN o simili. Le periferiche coin- g o collegamenti con laser. Sono usati per
volte sono, tipicamente, modem analogici collegamenti LAN veri e propri.
o digitali. • WWAN (Wireless Wide Area Networks) in

VBJ N. 78 - Novembre/Dicembre 2007 15


WINDOWS SERVER

di sessione.
• Packet filter: lavora a livello 3 o 4. Ogni
pacchetto di rete è accettato o rifiutato sul-
la base di una serie di regole di accesso
determinate dall’amministratore di rete. È
sensibile ad attacchi come l’IP spoofing, in
cui un attaccante sfrutta degli indirizzi IP
consentiti.
• Proxy server: il firewall nasconde i detta-
gli della rete dietro di esso facendo sem-
brare come se tutte le richieste provenien-
ti dagli host dietro di lui, provenissero da
lui stesso.

Architettura di storage
Figura 5 Modello di storage tipo DAS. Ogni
server ha le sue unità di immagazzi- Ad alto livello, i requisiti di business posso-
namento dati no essere espressi così:
“aumentare l’efficienza, riducendo lo spreco
di spazio di storage e il total cost of ownership
questa categoria rientrano varie tecnolo- (TCO), e gestire un volume sempre crescente
gie per il collegamento remoto all’azien- di dati di business”.
da, tipo WiMAX, UMTS, GPRS, HDSPA e
così via. Il disegno di un’architettura di enterprise
storage deve tenere conto di un certo nume-
Infine, tra le varie periferiche presenti sulla ro di fattori:
rete non possiamo tralasciare apparati di si-
curezza come i firewall. Questi hanno lo sco- • volume dei dati
po di separare zone della rete che hanno una • criticità dei dati immagazzinati nelle di-
classificazione diversa dal punto di vista del- verse posizioni
la sicurezza. Così, ad esempio, metteremo le • capacità di rete dell’organizzazione
risorse più preziose come il database delle pa- • diversità tecnica degli ambienti di busi-
ghe in un certo segmento di rete, i desktop ness
aziendali in un altro, le risorse internet in un • eventuale presenza di sistemi di storage
altro ancora e così via. Lo scopo di un firewall di tipo legacy
è separare, facendo passare solo il traffico di • skill tecnici
rete che è legittimo far passare. I firewall pos-
sono essere di vario tipo: A disposizione dell’architetto ci sono varie
tecnologie di storage:
• Application gateway: lavorano al livello 7
della pila ISO/OSI. È il firewall di tipo più • Direct-Attached Storage (DAS) - È lo sto-
sofisticato perché va ad ispezionare i pac- rage attaccato direttamente al server con
chetti destinati a certe applicazioni, come cavi in fibra e rame. Si va dai normali di-
il traffico HTTP o quello FTP. schi IDE ai più elaborati controller RAID.
• Circuit-level gateway: lavorano al livello I vantaggi di questa soluzione sono: il bas-
5. Distinguono i pacchetti in base al pro- so costo, la semplicità, le performance, la
tocollo e alle porte ma non fanno nessun sicurezza (in quanto i dati sono accessibi-
controllo sui contenuti. Hanno il concetto li solo da un singolo server), la gestione

16 VBJ N. 78 - Novembre/Dicembre 2007


WINDOWS SERVER

• Storage Area Network (SAN) - È una rete


specializzata che fornisce l’accesso a sot-
tosistemi di storage di alte performance e
alta disponibilità. È normalmente compo-
sta da Host Bus Adapter (HBA) sui server
che necessitano di storage, di switch che
istradano le richieste di storage come se
fossero switch di rete, sottosistemi di sto-
rage e tape library per i backup. I proto-
colli utilizzati sono specifici come iSCSI
(SCSI over IP). Tutte le periferiche sono
connesse con rame o fibra. I vantaggi di
questa soluzione sono: backup e recove-
ry ad alta velocità e che non impattano la
rete, gestione centralizzata, scalabilità (con
la possibilità di allocare spazio dove serve
Figura 6 Modello di storage misto tra DAS, in modo dinamico e veloce), possibilità di
NAS e SAN interconnettere, usando iSCSI, periferiche
in posizioni fisiche separate anche chilo-
metri, per una migliore procedura di Disa-
iniziale. Gli svantaggi invece sono: la sca- ster Recovery. Gli svantaggi invece sono:
labilità, la difficoltà di gestione a livello complessità, costo, mancanza di interope-
centralizzato, i problemi dei backup (che rabilità tra i vari produttori.
o sono risolti server per server o compor- • Windows server technologies - Windows
tano l’esecuzione di backup in rete). Server 2003 ha funzionalità avanzate per
• Network-Attached Storage (NAS) - È un l’uso dello storage. Tra queste ricordiamo:
server dotato di storage e che mette a di- Virtual Disk Service (VDS), che permette
sposizione spazio disco in rete tramite pro- di vedere le risorse di storage in modo tra-
tocolli TCP/IP standard come CIFS o NFS. sparente alle applicazioni, Shadow copy,
I vantaggi di questa soluzione sono: basso
costo, semplicità (lo spazio viene allocato a
ciascun server da un’unica posizione), tol-
leranza ai guasti spesso integrata nella so-
luzione. Gli svantaggi invece sono: ai dati
si accede via LAN (con possibile uso in-
tensivo della banda), incompatibilità con
applicativi come i DBMS, i problemi dei
backup (che o sono risolti a livello di peri-
ferica con possibili degradazioni di presta-
zione o comportano l’esecuzione di backup
in rete).
• Windows Storage Server 2003 - Sono delle
appliance con Windows 2003 e che si com-
portano solo come file server ad alte presta-
zioni, gestibili e sicuri. Sono preconfigura-
ti in modo da poter esportare spazio disco Figura 7 Modello di storage misto tra DAS
con tutti i protocolli più diffusi (NFS, Ap- e SAN
pleTalk, FTP, HTTP, WebDav e NWLink).

VBJ N. 78 - Novembre/Dicembre 2007 17


WINDOWS SERVER

gici distinti:

• Modello a storage distribuito - Ciascun


server gestisce e configura l’allocazione
del proprio spazio disco
• Modello a storage ibrido - È la soluzione
più flessibile ma anche la più complessa da
gestire. Le varie soluzioni vengono adotta-
te in modo autonomo tra i progetti e i ser-
vizi
• Modello a storage centralizzato - C’è
un’unica soluzione di storage che soddi-
sfa i bisogni di tutta l’organizzazione

A livello di protezione dei dati invece le so-


luzioni sono due:

• Duplicazione o replicazione
• RAID (con parità) che permette di ricostrui-
re velocemente i dati in caso di corruzione
parziale

Figura 8 Architettura applicativa di riferimento Architettura applicativa

L’infrastruttura applicativa deve essere in


grado di supportare l’intero ciclo di vita del
che permette di fare una copia dei dati su software. In particolare le singole applicazio-
un file server a un certo istante e il loro ni verranno istanziate attraverso vari am-
restore successivo, e un migliore suppor- bienti:
to delle SAN.
• Ambiente di sviluppo - In questo ambien-
Sono anche possibili soluzioni miste, in cui te il software viene sviluppato a livello di
per esempio un NAS accede allo spazio disco singola funzionalità. È un ambiente ad alta
di una SAN. volatilità, in quanto tipicamente sotto la
completa gestione del singolo sviluppato-
Un processo corretto di definizione dello sto- re e della sua creatività. Tre sono tipica-
rage deve tenere conto di diversi aspetti: mente i tipi di software che troveremo a
questo livello: librerie di componenti riu-
• determinare i requisiti di storage sabili, ambiente di sviluppo, come Micro-
• scegliere la soluzione di storage più adat- soft Visual Studio o Eclipse per Java, e un
ta software di versioning per gestire le varie
• definire le tecnologie di tolleranza ai gua- versioni del codice prodotto.
sti • Ambiente di integrazione - È dove il codi-
• definire le tecnologie per il backup e reco- ce dei vari sviluppatori viene inizialmente
very assemblato per verificarne la compatibili-

Le architetture di storage possono utilizza- • Ambiente di test - È un ambiente forte-
re queste tecnologie in base a tre modelli lo- mente controllato dove le varie release can-

18 VBJ N. 78 - Novembre/Dicembre 2007


WINDOWS SERVER

Figura 9 Elementi dell’architettura applicativa Microsoft

didate vengono rilasciate e sottoposte alla dall’application server.


verifica delle funzionalità a fronte dei re-
quisiti contenuti nelle specifiche. Anche in questo caso vediamo prima qual è
• Ambiente di staging - È l’ambiente più si- il requisito di business: “l’infrastruttura ap-
mile possibile a quello di produzione. Le plicativa deve essere composta da elementi che
applicazioni vengono rilasciate qui per gli possano essere scalati sia orizzontalmente che
ultimi test, soprattutto quelli relativi alle verticalmente per supportare bisogni crescenti
performance. di business. Essa deve fornire la sicurezza, la
• Ambiente di produzione - È l’ambien- semplicità di gestione, la scalabilità e il su-
te meno volatile e il più fortemente con- bstrato di comunicazione tra i vari elementi
trollato. È da qui che i servizi, interni ed dell’architettura applicativa”.
esterni, vengono effettivamente erogati
agli utenti. I componenti dell’architettura applicativa
di Microsoft sono visibili in Figura 9 e sono
La architettura di base è quella mostrata in i seguenti:
Figura 8 e sostanzialmente comprende:
• Windows Server 2003 - È il sistema ope-
• un Web/application server rativo di base e fornisce una piattaforma
• una serie di client che accedono dalla rete sicura, gestibile e flessibile.
locale e da Internet • Framework .NET - È un ambiente sicuro
• un database server dove risiedono i dati e flessibile di gestione del codice applica-
che vengono consultati dinamicamente tivo ed è capace di esporre i servizi come

VBJ N. 78 - Novembre/Dicembre 2007 19


WINDOWS SERVER

Il modello applicativo di Micro-


soft è basato su componenti strut-
turati in livelli. Un componente è
un modulo software logico, come un
componente COM o .NET. Due sono
i principi che governano la scrittura
di componenti sicuri ed affidabili:

• Alta coesione - I componen-


ti software possono collaborare tra
loro per fornire servizi più comples-
si.
• Basso accoppiamento - Ogni
componente dovrebbe essere dise-
gnato in modo da essere autocon-
sistente e da racchiudere quelle
funzionalità che collaborano stret-
tamente l’una con l’altra per dimi-
nuire le chiamate sulla rete o ver-
so altri processi di sistema che sono
time-consuming e fonti di possibili
errori e problemi di sicurezza.

I livelli in cui un’applicazione può


essere strutturata sono invece tre:
Figura 10 Modello di riferimento di un’architettura Web fisica
• Presentation layer - Inclu-
de tutto ciò che ha a che fare con
la renderizzazione dell’interfaccia
Web service. È basato sul CLR (Common utente e incapsula la logica di navigazio-
Language Runtime) e permette così l’inte- ne dell’utente.
roperabilità di applicazioni scritte in codice • Business Layer - Include i componenti che
diverso, purchè supportino la CTS (Com- incapsulano i servizi, le regole e la logica
mon Type Specification). di business.
• Internet Information Services - È l’Ap- • Data Layer - Include i componenti che ge-
plication server di Microsoft e supporta stiscono l’accesso ai dati nelle varie sorgen-
vari tipi di applicazioni web, da ASP, a ti, dai database, ai Web service, ai dati su
ASP .NET, al semplice Html, al .NET re- Directory Server.
moting. Fornisce anche servizi di SMTP e
FTP. Fisicamente, i componenti sono rilasciato
• COM+ - Fornisce un ambiente di esecuzio- come assembly .NET, e in particolare come
ne per componenti che facilita l’efficien- eseguibili (.exe) o come dynamic-link library
za, la gestione e l’isolamento di eventuali (.dll).
problemi.
• Message Queuing - Fornisce servizi di mes- La tolleranza ai guasti nell’infrastruttura
saggistica asincrona con delivery affidabi- applicativa viene assicurata da due possibi-
le dei messaggi. li strutture:

20 VBJ N. 78 - Novembre/Dicembre 2007


WINDOWS SERVER

pio di cluster del


genere è Oracle
real Application
Cluster (RAC).
• Cluster atti-
vo-passivo - Dei
due nodi del clu-
ster solo uno ser-
ve effettivamen-
te gli utenti. L’al-
tro è in standby e
subentra solo se il
primo si rende in-
disponibile.

I vari livelli del-


l’architettura pos-
sono essere fisi-
Figura 11 Architettura di gestione dell’infrastruttura
camente imple-
mentati in modo
separato (ogni li-
vello è ospitato
su macchine fi-
• Load balanced cluster - In questo caso sicamente diverse), consolidato (più livelli
l’applicazione è clonata su più server che sono ospitati sulle stesse macchine) oppure
si suddividono il carico. Tutti i nodi sono in cluster.
accessibili attraverso un unico indirizzo
IP virtuale. Questa forma di clustering è Veniamo ora alla parte client. I client posso-
ideale per quei livelli tipo read-only come no essere suddivisi in tre classi:
il Presentation Layer.
• Failover cluster - È tipicamente utilizzato • Thin client - L’accesso all’applicazione av-
per i DBMS e prende la forma di un certo viene tramite un browser che esegue chia-
numero di nodi che accedono a uno spazio mate HTTP/HTTPS.
disco condiviso dove risiedono i dati. L’av- • Thick client - Una parte dei processi del
vio di una transazione da parte di un ser- Presentation layer gira direttamente sul
ver fa sì che questo acceda al dato in mo- client ad esempio sotto forma di applica-
dalità di lock ed esegua i contenuti della tivo da installare sulla macchina.
transazione. Se il server muore durante il • Web service client - Il client formula una
processamento, la transazione va in roll- richiesta SOAP che poi invia a un Web ser-
back. vice.

Spesso si utilizza per i cluster anche un’al- L’architettura logica, vista fino ad ora, vie-
tra terminologia: ne implementata fisicamente tenendo presen-
ti due aspetti:
• Cluster attivo-attivo - Entrambi i nodi del
cluster erogano i servizi contemporanea- • la suddivisione dei livelli logici in livelli
mente fornendo, quindi, anche funziona- fisici.
lità di bilanciamento del carico. Un esem- • la suddivisione della rete dell’infrastruttu-

VBJ N. 78 - Novembre/Dicembre 2007 21


WINDOWS SERVER

Architettura di
gestione
dell’infrastrut-
tura

L’architettura di
base si presenta
come in Figura
11. Sono presenti
tre livelli:

• Data - Rap-
presenta l’insie-
me di tutti i ser-
ver e gli appara-
ti da sottoporre a
monitoraggio.
Figura 12 La metodologia di gestione del rischio secondo Microsoft • Services -
Rappresenta l’in-
sieme dei server
che espletano i
ra in più segmenti separati da firewall. compiti di raccolta delle informazioni sulle
performance, la sicurezza, e eventuali al-
Si possono avere, quindi, più configurazio- larmi sui server monitorati. È questo il li-
ni possibili, tutte documentate sul sito di WS- vello di Governance dell’infrastruttura.
SRA. Riporteremo qui una di queste, quella • Centralized - È il punto dove fisicamente
che più comunemente si troverà in un am- siedono le persone del Service Desk che
biente di tipo Enterprise. tramite le opportune interfacce, cruscotti
e quant’altro tengono d’occhio lo stato di
Questa architettura, a 3 livelli fisici separa- salute dell’infrastruttura ed eseguono gli
ti, ha il vantaggio che il Livello Dati e quel- appropriati task di gestione.
lo di Business sono entrambi protetti da due
firewall che devono aprire solo le porte TCP Il requisito di business è esprimibile trami-
80 (http) e 443 (https). Lo svantaggio d’altron- te la frase: “gli obiettivi di massima visibili-
de, qualora una parte delle sorgenti dati sia tà per l’efficacia operativa includono la ri-
rappresentata da Web service esterni è che le duzione dei costi della gestione dei core as-
chiamate a questi devono partire dalla rete in- set IT di un’organizzazione e l’aumento del
terna, dove si trovano gli application service. livello di servizio che questi asset forniscono
Possiamo allora dire che, se la maggioranza ai loro utenti”.
delle sorgenti dati si trovano nella rete inter-
na, allora forse quella mostrata è l’architettu- Le metodologie alla base di questo processo
ra preferibile, altrimenti si potrebbe prendere di gestione dell’infrastruttura IT sono Micro-
in considerazione l’architettura in cui l’appli- soft Operations Framework e ITIL.
cation server che ospita il business layer vie-
ne spostato nella DMZ (Demilitarized Zone) I prodotti che Microsoft considera a questo
o rete perimetrale dove si trova il web server livello sono:
(Presentation Layer).

22 VBJ N. 78 - Novembre/Dicembre 2007


WINDOWS SERVER

• Microsoft Operations Manager (MOM) ti potrebbero dirottarsi verso i siti dei nostri
• Microsoft Software Update Services concorrenti. La nostra reputazione potrebbe
(SUS) venire a mancare, portando anche alla perdi-
• Microsoft SMS ta di vecchi clienti. Se un nostro dipendente
distrugge per sbaglio un file importante con-
Architettura di sicurezza tenente i dati di vendita, questo potrebbe ren-
derci incapaci di soddisfare una scadenza fi-
Il requisito di business è esprimibile trami- nanziaria e quindi esporci a multe. Tutto ciò
te la frase: rappresenta la perdita di Valore.
“il business sta diventando sempre di più
orientato a Internet. Il confine tra le aziende Una volta individuati gli asset, la doman-
diventa sempre più debole, dal momento che da successiva è capire cosa può minacciar-
i sistemi IT di partner, fornitori e clienti de- li (threat). Nell’esempio sopra, la rottura di
vono essere sempre più interconnessi. Questo un disco o la distruzione di file sono esem-
apre la strada a nuovi pericoli di intrusioni. pi di threat. In entrambi i casi, ciò che viene
La globalizzazione porta ad avere clienti, an- evidenziato è che il nostro Business è vul-
che potenziali, a fusi orari molto diversi tra nerabile.
loro, con la necessità, quindi di essere sempre
online, 24 ore su 24 e 7 giorni su 7”. A questo punto dobbiamo capire come con-
trastarli (contromisure). Nel caso del disco
Il problema fondamentale della sicurezza è potremmo decidere che per ovviare alla pos-
quello di poter garantire continuità al Busi- sibilità teniamo un hard disk di riserva e fac-
ness. Per fare questo sono necessari un cer- ciamo un backup giornaliero oppure dotiamo
to numero di passi: il nostro server di un controller RAID e faccia-
mo un mirroring del disco. Da questo esem-
• Capire cosa è che dà valore al business. pio, capiamo anche un altro aspetto. In gene-
• Capire quali sono gli eventi che possono rale, a fronte di un singolo Threat ci posso es-
togliere valore al business. sere più contromisure adeguate a contrastar-
• Capire come contrastare questi eventi. lo. Dobbiamo però capire quale può essere
• Capire qual è la probabilità con cui que- la più idonea e con questo indendiamo quel-
sti eventi possono verificarsi. la che ha il costo minore, l’impatto minore e
• Capire la priorità con cui investire le li- le controindicazioni minori. Va da sè, inoltre,
mitate risorse economiche per contrastare che se ho un budget limitato e la mia azien-
l’accadimento degli eventi negativi (anali- da risiede in una zona a basso rischio sismi-
si costi/benefici). co e a alta criminalità, probabilmente non in-
vestirò i miei soldi per dotarmi di una sede a
Il processo che abbiamo appena descritto prova di terremoto ma mi doterò di guardia-
rappresenta i passi necessari per effettuare ni e di antifurti.
una gestione del Rischio.
L’analisi dei processi di Business, ci permet- Arriviamo così ad un altro aspetto della ge-
te di valutare quali sono gli asset dell’organiz- stione del Rischio, la probabilità di accadi-
zazione, cioè quei punti dove risiede il valore. mento di un threat. Dal momento che il no-
Valore è tutto ciò che fa sì che noi possiamo stro obiettivo finale sarà quello di fare un’ana-
continuare a fare ciò che stiamo facendo. lisi costi-benefici, dovremo anche capire se ci
Se, ad esempio, l’hard disk del nostro sito conviene o no contrastare una minaccia op-
di e-commerce si rompe, questo vuol dire che pure semplicemente prenderne atto, conside-
potremmo dover sopportare un downtime du- randone il rischio trascurabile.
rante il quale potenziali nostri nuovi clien-

VBJ N. 78 - Novembre/Dicembre 2007 23


WINDOWS SERVER

Questo processo, per ora descritto in modo rimento e il processo da usare.


qualitativo, può essere tradotto in termini più • Planning Guide - È la parte di disegno e
quantitativi usando varie metodologie. Quello deployment.
esposto sul sito di WSSRA è il seguente, mo- • Build Guide - Descrive la parte di imple-
strato anche in Figura 12. mentazione, arrivando a indicare i singoli
servizi e le singole voci di configurazioni
1. Identificare un rischio sulle varie macchine.
2. Usando il processo descritto sopra, asse- • Operations guide - È la parte che descri-
gnare una probabilità (TP) alla minaccia ve la gestione in produzione.
usando una scala 0-100 (0 percentuale più
bassa, 100 più alta). Bibliografia
3. Assegnare un fattore di criticità (CF)
usando una scala 1-10 (1 più basso, 10 più • http://book.itzero.com/read/cisco/0512/
alto), che rappresenta il livello di potenzia- Cisco.Press.Cisco.Field.Manual.Catalyst.S
le impatto di una minaccia su un asset. witch.Configuration.Oct.2002.INTERNAL_
4. Individuare il livello di esperienza (E), in html/1587050439/ch02lev1sec2.html
una scala 1-10 (1 più basso, 10 più alto), ne- • http://www.mcmcse.com/cisco/guides/
cessario per un attaccante per realizzare la hierarchical_model.shtml
minaccia. • http://www.networknewz.com/2004/
5. Determinare il fattore di rischio (RF) 0206.html
come CF/E. • http://www.cisco.com/en/US/netsol/ns658/
6. Determinare il livello di frequenza della networking_solutions_customer_profile0
minaccia usando la formula (TP x RF). 900aecd804a17ea.html
7. Individuare il fattore di vulnerabilità • http://en.wikipedia.org/wiki/Scalability
(VF) in una scala 1-10 (1 più basso, 10 più • Sinibaldi. A., “Risk Management”, Hoepli,
alto), che rappresenta la nostra esposizio- 2007
ne all’attacco.
8. Identificare la priorità dell’asset (AP)
9. Determinare il fattore di impatto (IF)
usando la formula (VF x AP). Nota
10. Determinare il fattore di esposizione (EF)
usando la formula (livello di frequenza del- L’articolo è estratto dal testo
la minaccia x Fattore d’Impatto / 1000). Il Architetture Enterprise - Metodi di Disegno e
progettazione di A. Sinibaldi,
fattore di esposizione è espresso in percen- edito dal Gruppo Editoriale Infomedia.
tuale.
ISBN: 9788881500352
Guide di implementazione Pagine: 350
Anno: 2007
Prezzo: 49,00 Euro
Queste parti riguardano l’aspetto di imple-
mentazione dell’architettura. Se dovessimo
confrontare WSSRA con TOGAF questa sa-
rebbe la parte dell’Enterprise Continuum,
suddivisa tra Architecture Building Blocks
e di Solutions Building Block. Ognuna del-
le sezioni è divisa in 5 parti:

• Introduction
• Blueprint - Descrive l’architettura di rife-

24 VBJ N. 78 - Novembre/Dicembre 2007


VB.NET

Migrazione
da VB6 a VB.NET,
un nuovo approccio
A sei anni dalla introduzione di .NET sono ancora molte le applicazioni VB6
che devono essere convertite nella versione .NET di Visual Basic.
In questo articolo, il primo di una mini-serie, affronteremo il problema in
modo analitico.

di Francesco Balena

Da molti anni, praticamente da quando ho comin- Forse il primo esempio che


ciato a muovermi nel settore della programmazio- viene in mente di come l’ana-
ne, sono sempre stato affascinato dalla possibilità lisi del codice non sia adeguata
di trattare il codice come una forma di dato. Pos- alle aspettative è il Visual Ba-
siamo analizzare e trasformare i record che memo- sic Upgrade Wizard incluso in
rizziamo in un database, e possiamo controllare la Visual Studio, ma certo non è
correttezza sintattica e grammaticale di un testo l’unico. Un paio di anni fa do-
in un word processor, e allo stesso modo possiamo vetti convertire una gran quan-
anche eseguire il parsing e la trasformazione del tità di applicazioni da VB.NET
codice sorgente scritto in un determinato linguag- a C#, e acquistai un paio di uti-
gio di programmazione. Eppure, mentre sono mol- lity che sulla carta erano in gra-
to diffusi programmi per la generazione automa- do di eseguire questa operazio-
tica del codice sorgente – si pensi ai vari C.A.S.E ne in modo automatico, solo per
presenti da anni sul mercato – a mio avviso sia- rendermi conto che comunque
mo ancora molto arretrati nella analisi e trasfor- la quantità di operazioni ma-
mazione automatica del codice. Considerando che nuali necessarie per completa-
il codice sorgente è quello con cui gli sviluppatori re la migrazione in modo sod-
hanno a che fare otto ore al giorno (e spesso ben disfacente era tutt’altro che tra-
più di otto ore!) questa considerazione è alquanto scurabile.
sorprendente, ma nondimeno vera.

VBJ N. 78 - Novembre/Dicembre 2007 25


VB.NET

I costi della migrazione lioni di righe di codice, non è pensabile un


approccio manuale al problema.
Essendo Visual Basic il linguaggio a cui mi
sono maggiormente dedicato negli ultimi 15
anni, è evidente che il problema della con-
versione da VB6 a VB.NET è sempre stato al Siamo ancora molto
centro della mia attenzione. Fino a qualche
anno fa, tuttavia, a chi mi chiedeva come ap- arretrati nella analisi e
procciare la migrazione di applicazioni gestio- trasformazione automatica
nali VB6 verso la nuova piattaforma, la mia
risposta standard era “I due ambienti sono del codice
troppo differenti e le applicazioni devono es-
sere riscritte da zero. Punto.” Poi però i no-
stri clienti ci hanno chiesto consulenza su ap-
plicazioni VB6 in cui l’opzione “riscrittura da D’altre parte, a sei anni dalla introduzione
zero” non era semplicemente praticabile: in di .NET, la necessità di migrare le applicazio-
alcuni casi gli sviluppatori che avevano scrit- ni VB6 esistenti è diventata non più proroga-
to il codice originale erano andati via e con bile, per almeno due motivi. Prima di tutto,
loro si era persa la conoscenza di quello che come ufficialmente annunciato da Microsoft
il codice avrebbe dovuto fare; in altri casi – [3], il supporto esteso per Visual Basic 6 ter-
la maggioranza a dire il vero – le dimensioni mina definitivamente a Marzo 2008. Secondo,
dell’applicazione erano talmente enormi che la stessa Microsoft assicura che le applicazioni
la sua riscrittura sarebbe semplicemente co- sviluppate interamente in Visual Basic 6 fun-
stata troppo o durata troppo a lungo. zionino perfettamente sotto Vista (vedi [4]),
ma una analoga affermazione non può essere
Secondo uno studio di Gartner [1], il costo fatta per i programmi che utilizzano controlli
per portare una applicazione VB6 verso .NET ActiveX di terze parti, che poi sono la maggior
è compreso tra il 40 e il 60 percento del costo parte delle applicazioni in commercio. A causa
originale della applicazione. A questa misura di questo secondo problema, molte software
poco incoraggiante si aggiunge una seconda house hanno chiesto ai propri clienti di non
stima, sempre di Gartner [2], secondo cui il installare i loro programmi VB6 su Windows
processo per portare un programmatore VB6 Vista, una richiesta che danneggia la reputa-
agli stessi livelli di produttività in VB.NET zione delle aziende e limita la diffusione del
dura almeno cinque mesi e costa circa 43.000 software. Per una guida ai problemi della mi-
dollari, considerando i costi di formazione e grazione da VB6, si può leggere un libro Mi-
la mancata produttività. Come magra conso- crosoft Press, la cui versione inglese è libe-
lazione, lo stesso studio rivela che migrare ramente scaricabile dal Web [5].
da VB6 a VB.NET costa comunque meno che
migrare da VB6 verso altri linguaggi, come I limiti dell’Upgrade Wizard
Java o C#.
Alla necessità di convertire le applicazio-
Se si tengono queste considerazioni ben pre- ni VB6 esistenti, Microsoft ha risposto pro-
senti, non è difficile credere alle statistiche in- ponendo l’Upgrade Wizard. Questo tool è in
dicanti che la penetrazione di .NET tra i pro- realtà prodotto da Artinsoft [6] e ceduto ap-
grammatori Visual Basic sia grossomodo del punto in licenza a Microsoft per includerlo in
50-60% e che in molte aziende si continui a Visual Studio. Sia Microsoft che Artinsoft di-
lavorare in VB6. Quando si ha a che fare con chiarano che il tool è in grado di convertire
applicazioni con centinaia di form e con mi- codice con una accuratezza del 95%. Sembra

26 VBJ N. 78 - Novembre/Dicembre 2007


VB.NET

un valore abbastanza alto, ma se consideria- L’Upgrade Wizard converte correttamente il


mo una applicazione gestionale di medie di- codice nel metodo Test, ma non sa converti-
mensioni (200 mila righe di codice), tale per- re la Declare per via dei parametri As Any, e
centuale comporta la riscrittura di diecimila il risultato produce un errore di compilazio-
righe di codice. Il vero problema nella riscrit- ne in VB.NET:
tura di questo codice è che potrebbe richiede-
re la completa revisione di intere parti della Declare Sub RtlMoveMemory Lib “kernel32.dll” (ByRef
applicazione. Ad esempio, per riscrivere una dest As Any, ByRef source As Any, ByVal bytes As
istruzione grafica (Line, Circle) o di stampa Integer)
(Printer.Print) occorrono decine o centinaia Sub Test()
di istruzioni VB.NET, perchè i modelli di pro- Dim arr1(10) As Short, arr2(20) As Short
grammazione per la grafica e la stampa nei ‘ …
due linguaggi sono completamente differenti. ‘ copia i primi 5 elementi di arr1 in arr2
Altri esempi sono il drag-and-drop, il suppor- RtlMoveMemory(arr1(0), arr2(0), 5 * 2 )
to per la clipboard, il data-binding, i numerosi ‘ copia gli elementi 8-9 in un intero a 32-
controlli VB6 che non hanno un equivalente bit
.NET (ad es. ImageCombo, SysInfo, Picture- Dim result As Integer
Clip e Animation), e moduli di tipo UserDo- RtlMoveMemory(result, arr1(8), 4)
cument e DHTML Page designer. End Sub

I due linguaggi sono molto simili eppure in Se riuscisse a interpretare correttamente


molti casi l’Upgrade Wizard non riesce a ge- questo codice – come farebbe uno sviluppa-
nerare codice corretto. I motivi sono princi- tore con un minimo di esperienza – l’Upgra-
palmente due: a volte l’Upgrade Wizard non de Wizard saprebbe “incrociare” le due chia-
riesce ad analizzare in modo corretto il codice mate al metodo RtlMoveMemory con la De-
sorgente VB6 e, in secondo luogo, le differen- clare dello stesso metodo, e potrebbe genera-
ze tra l’ambiente VB6 e l’ambiente VB.NET re i due overload necessari:
sono tali da non poter essere annullate sem-
plicemente generando codice. Una dimostra- Declare Sub RtlMoveMemory Lib “kernel32.dll” (ByRef
zione del primo concetto è l’approccio insod- dest As Short, ByRef source As Short, ByVal bytes
disfacente con cui l’Upgrade Wizard gestisce As Integer)
le istruzioni Declare che contengono un pa- Declare Sub RtlMoveMemory Lib “kernel32.dll” (ByRef
rametro As Any, come nel seguente esempio dest As Short, ByRef source As Integer, ByVal bytes
di codice VB6: As Integer)

Declare Sub RtlMoveMemory Lib “kernel32.dll” (dest Potrei fare numerosi altri esempi di questo
As Any, source As Any, ByVal bytes As Long) concetto. Per rimanere nell’ambito delle API
di Windows, l’Upgrade Wizard non è in gra-
Sub Test() do di tradurre correttamente le Declare che
Dim arr1(10) As Integer, arr2(20) As Integer contengono un indirizzo di callback, come ad
‘ … esempio EnumWindows e EnumFonts. Un al-
‘ copia i primi 5 elementi di arr1 in arr2 tro esempio è la cosiddetta finalizzazione non
RtlMoveMemory arr1(0), arr2(0), 5 * 2 deterministica di VB.NET, come mostrato nel
‘ copia gli elementi 8-9 in un intero a seguente codice:
32-bit
Dim result As Long Dim cn As New ADODB.Connection
RtlMoveMemory result, arr1(8), 4 ‘ apri e usa la connessione
End Sub ‘ ... (omesso) ...

VBJ N. 78 - Novembre/Dicembre 2007 27


VB.NET

Set cn = Nothing to in VB.NET.

In VB6 l’ultima riga del precedente codice La storia di VB Migration Partner


distrugge l’oggetto e implicitamente chiu-
de la connessione, se aperta. Viceversa, in Mi sono imbattuto spesso nei limiti dell’Up-
VB.NET impostare a Nothing una variabile grade Wizard, ma la prima volta che ho ana-
di tipo Connection non causa alcun effetto lizzato “scientificamente” il problema è sta-
collaterale implicito. L’Upgrade Wizard tradu- to durante la lettura di un libro disponibile
ce quel codice “letteralmente” e costringe il sul sito Web di Microsoft [7]. Il libro, scritto
developer a controllare che ciascuna connes- proprio da Artinsoft, è molto ben fatto, tan-
sione sia chiusa correttamente. Sarebbe sta- t’è vero che io stesso consigliai a Mondadori
to molto più comodo se l’Upgrade Wizard ge- di tradurlo in italiano [8]. Se siete seriamente
nerasse il codice seguente: interessati a questo tema, il libro è un vero e
proprio must-read, in quanto si sofferma sia
Dim cn As New ADODB.Connection sugli aspetti tecnici che metodologici della
‘ apri e usa la connessione migrazione.
‘ ... (omesso) ...
If cn IsNot Nothing Then cn.Close() D’altra parte, mentre procedevo nella lettura
Set cn = Nothing mi rendevo conto che molti costrutti di VB6
che nel libro venivano menzionati come “non
Come menzionato in precedenza, ci sono traducibili automaticamente” in realtà pote-
differenze tra VB6 e VB.NET che non pos- vano essere tradotti – e anche molto efficace-
sono essere annullate semplicemente gene- mente – in VB.NET. Oltre alle Declare con pa-
rando codice. Nella maggior parte dei casi si rametri As Any e parametri di callback, come
tratta di proprietà e metodi che si comporta- spiegato in precedenza, è abbastanza semplice
no in modo differente nei due linguaggi. Ad tradurre gli array con indice inferiore diverso
esempio, il metodo Format di VB6 supporta la da zero, le istruzioni GoTo calcolate e le varia-
formattazione, il padding, e la conversione in bili auto-instancing (As New). Persino le Go-
maiuscolo/minuscolo di stringhe – ma nessuna sub possono essere rese in VB.NET in modo
di queste opzioni è disponibile in VB.NET: automatico, con un po’ di sforzo.

Debug.Print Format(“abc”, “>@@@@@”) Anche se una feature di VB6 non è imme-


‘ risultato “ ABC” diatamente disponibile in VB.NET, è però
spesso possibile costruire un metodo o clas-
La lista delle differenze di questo secon- se VB.NET che replica perfettamente la featu-
do tipo è virtualmente infinita: basti pensa- re in questione. Ad esempio, è possibile crea-
re a tutte le proprietà e i metodi dei controlli re una funzione Format6 che duplica il com-
VB6 che sono assenti o che si comportano in portamento del metodo Format di VB6. Crea-
modo completamente differente in VB.NET. re una simile funzione richiede un’ora o due,
Ad esempio, non esiste nel controllo Combo- ma tale sforzo è ripagato dalla possibilità di
Box di .NET una proprietà in grado di leg- duplicare esattamente il comportamento della
gere o modificare l’indice dell’elemento in applicazione originale VB6, riducendo il nu-
cima alla lista, come permette di fare la pro- mero di warning nella applicazione e il tempo
prietà TopIndex in VB6. Un altro esempio: il necessario a controllarli uno per uno.
controllo ListBox di .NET non scatena mai
l’evento Scroll quando l’utente fa scorrere la Insomma, quasi per gioco nel gennaio di due
lista degli elementi, quindi il codice nel ge- anni fa ho cominciato a lavorare al mio tool
store dell’evento Scroll non sarà mai esegui- di migrazione, che ha poi preso il nome di VB

28 VBJ N. 78 - Novembre/Dicembre 2007


VB.NET

Migration Partner. La prima versione consiste- con la keyword ByVal. Oppure segnala quan-
va in un parser abbastanza rudimentale, ma do una concatenazione di stringhe all’interno
già dopo pochi mesi riusciva a migrare mol- di un ciclo potrebbe essere ottimizzata dopo
ti dei costrutti fuori dalla portata dell’Upgra- la migrazione ricorrendo ad una variabile di
de Wizard. Quando mi sono reso conto che il tipo StringBuilder.
potenziale di questo prodotto era enorme, ho
riscritto il prototipo e abbiamo creato un vero VB Migration Partner supporta gli oltre 60
e proprio team in Code Architects dedicato a controlli forniti con VB6, i project group, le
questo progetto (attualmente ci sono cinque istruzioni grafiche e di stampa, il drag-and-
persone che ci lavorano a tempo pieno). Men- drop, i menu popup, gli array di controlli,
tre scrivo il prodotto è ancora in fase di beta l’istruzione Controls.Add, il data-binding con
test ed è previsto che sia rilasciato entro Feb- qualsiasi sorgente DAO, RDO, e ADO, e mol-
braio 2008, ma abbiamo già creato un sito Web to altro ancora. Se interessati, sul sito potrete
[8] che contiene il manuale del prodotto, nu- trovare tutte le informazioni che vi servono.
merosi esempi e articoli di knowledge base, e
video dimostrativi. Una sezione del sito è de- Preparare il codice VB6
dicata alla migrazione in generale – con link alla migrazione
sui migliori libri e articoli sull’argomento – ed
ho anche aperto un blog (in inglese) tutto de- In questo articolo – e gli altri che seguiranno
dicato alla migrazione da VB6. – analizzeremo a fondo le differenze tra i due
linguaggi e come evitare che influiscano sulla
qualità del codice migrato in VB.NET. In due
anni di lavoro abbiamo raccolto una casisti-
Utilizzare Option Explicit ca di problemi che va molto al di là del soli-
to elenco che potrete trovare sui tanti siti de-
per accertarsi che tutte le dicati al Visual Basic, ad esempio [10]. Molte
delle informazioni che abbiamo raccolto non
variabili siano dichiarate sono mai state pubblicate altrove, da quanto
mi risulta. Illustreremo soprattutto le tecni-
esplicitamente che che abbiamo messo a punto per sempli-
ficare la migrazione da VB6. Molte di tali tec-
niche non dipendono dall’uso del nostro tool
e possono essere applicate utilizzando l’Up-
Abbiamo testato VB Migration Partner su grade Wizard.
centinaia di sample e applicazioni reali e ab-
biamo riscontrato in media un errore di com- Il primo passo da seguire – ben prima di usa-
pilazione pari ogni 1100 righe di codice, pari re un tool di conversione – consiste nel pre-
ad una percentuale di successo superiore al parare il codice VB6 alla migrazione per ade-
99.9%. Il codice generato è di qualità pari o guarsi alle migliori coding guidelines di .NET.
superiore a quello che produrrebbe un bravo Sia l’Upgrade Wizard che VB Migration Part-
programmatore .NET e provvede a segnalare ner sono in grado di convertire – con diver-
come potrebbe essere ulteriormente perfezio- si gradi di successo – anche il peggior codice
nato. Ad esempio, VB Migration Partner se- VB6, ma è ovviamente preferibile partire da
gnala i metodi non utilizzati (il cosiddetto dead una applicazione scritta per bene e in modo
code) e indica quando un parametro by-refe- ordinato. Il Riquadro 1 contiene alcune re-
rence implicito (ossia la cui keyword ByRef gole a cui attenersi, ma l’elenco non è certo
è omessa) non viene modificato nel codice e esaustivo: le regole in questione riguardano
potrebbe quindi essere più correttamente reso infatti solo le keyword del linguaggio e non

VBJ N. 78 - Novembre/Dicembre 2007 29


VB.NET

sono incluse le guideline che hanno a che fare argomenti separati da virgole o punto-e-vir-
con l’uso di form e controlli. gola, e se la lista termina con un punto e virgo-
La tecnica più efficace nel preparare il codi- la non viene emesso un carriage-return verso
ce VB6 alla migrazione è in realtà molto sem- la stampante. In questo esempio non ci adden-
plice: l’accesso alle funzioni e alle feature di treremo in queste complicazioni, ma il concet-
VB6 “problematiche” dal punto di vista del- to comunque dovrebbe essere chiaro.
la migrazione dovrebbe sempre avvenire per
mezzo di metodi wrapper. Ad esempio, tutte Eseguire il wrapping delle istruzioni VB6
le istruzioni grafiche e le istruzioni di stam- “native” con i metodi appena definiti signifi-
pa dovrebbero essere convertite in chiamate ca in pratica sostituire manualmente le istru-
in metodi definiti in uno speciale modulo del zioni originarie con delle chiamate al wrap-
programma VB6, simile a quanto segue: per corrispondente. Ad esempio, il seguente
codice VB6:
Sub DrawLine(obj As Object, x1 As Single, y1 As
Single, x2 As Single, y2 As Single, _ Form1.Line (10, 20) - (30, 40)
c As Long) Form1.Line (30, 40) – (50, 60), vbRed
obj.Line (x1, y1)-(x1, y2) dovrebbe essere riscritto come segue (nota-
End Sub re che dobbiamo passare il valore del colore
anche quando è pari alla proprietà ForeCo-
Sub Printer_Print(text As String) lor del form):
Printer.Print text
End Sub DrawLine Form1, 10, 20, 30, 40, Form1.ForeColor
Nella realtà questi metodi wrapper sono DrawLine Form1, 30, 40, 50, 60, vbRed
parecchio più complessi e accettano nume-
rosi parametri opzionali per tener conto del- Il vantaggio di utilizzare metodi wrapper è
la miriade
di opzioni
dei metodi Listato 1
Line e Print.
L’ i s t r u z i o -
ne Line di Imports System.Drawing
Imports Microsoft.VisualBasic.Compatibility.VB6
VB6 permet-
te di omet- ‘ NOTA: i metodi TwipsToPixelsX/Y richiedono un riferimento all’assembly
‘ Microsoft.VisualBasic.Compatibility
tere il pun-
to di parten- Module GraphicMethods
za, di ottene- Sub DrawLine(ByVal obj As Object, ByVal x1 As Single, ByVal y1 As Single, _
re un rettan- ByVal x2 As Single, ByVal y2 As Single, ByVal c As Integer)
golo vuoto ‘ get the graphic context
Using gr As Graphics = DirectCast(obj, Control).CreateGraphics()
(opzione B) ‘ create the pen corresponding to the 32-bit color value
o pieno (op- Using pen As New Pen(ColorTranslator.FromOle(c))
‘ we assume that coordinates were originally expressed in twips
zione BF), e gr.DrawLine(pen, CInt(TwipsToPixelsX(x1)), CInt(TwipsToPixelsY(y1)), _
così via. Ana- CInt(TwipsToPixelsX(x2)), CInt(TwipsToPixelsY(y2)))
End Using
logamente,
End Using
il metodo End Sub
Printer.Print
End Module
potrebbe
contenere
una lista di

30 VBJ N. 78 - Novembre/Dicembre 2007


VB.NET

Listato 2 continua...

Imports System.Reflection
Imports System.Runtime.InteropServices

Module DefaultMemberSupport

‘ here we cache what we’ve found so far


Dim defaultMembers As New Dictionary(Of Type, MemberInfo)

‘ return the default member of an object

Public Function GetDefaultMember(ByVal obj As Object) As Object


Dim mi As MemberInfo = GetDefaultMemberInfo(obj)
If TypeOf mi Is FieldInfo Then
Return DirectCast(mi, FieldInfo).GetValue(obj)
Else
Return DirectCast(mi, PropertyInfo).GetValue(obj, Nothing)
End If
End Function

‘ set the default member of an object

Public Sub SetDefaultMember(ByVal obj As Object, ByVal value As Object)


Dim mi As MemberInfo = GetDefaultMemberInfo(obj)
If TypeOf mi Is FieldInfo Then
DirectCast(mi, FieldInfo).SetValue(obj, value)
Else
DirectCast(mi, PropertyInfo).SetValue(obj, value, Nothing)
End If
End Sub

‘ return the MemberInfo object corresponding to the default member

Private Function GetDefaultMemberInfo(ByVal obj As Object) As MemberInfo


‘ check whether we already know this type
Dim ty As Type = obj.GetType()
Dim mi As MemberInfo = Nothing
If defaultMembers.TryGetValue(ty, mi) Then Return mi

Dim memberName As String = “”

If ty.Namespace = “System.Windows.Forms” Then


‘ we know the default member for most controls
Select Case ty.Name

duplice: ora l’applicazione contiene una sola abbiamo un unico punto su cui intervenire
istruzione Line, quindi dopo la migrazione a per “simulare” la feature che non è suppor-
VB.NET il numero di errori di compilazione tata nativamente da .NET. Il Listato 1 mostra
è inferiore. Anzi, commentando temporanea- come possiamo riscrivere in VB.NET il me-
mente l’istruzione Line che appare nel meto- todo DrawLine per mostrare una linea anche
do DrawLine si ottiene codice VB.NET com- in VB.NET. Sulla falsariga di questo codice
pilabile. Ovviamente il programma non mo- è semplice supportare anche le varianti del
strerà alcun output grafico, ma avremo una metodo Line per disegnare rettangoli pieni
prima versione funzionante con cui comin- e vuoti, oppure linee con spessore maggiore
ciare a lavorare. di un pixel. Occorre un po’ di familiarità con
Il secondo vantaggio dei metodi wrapper è GDI+, ma è un compito alla portata di molti
molto più interessante: dopo la conversione sviluppatori .NET.

VBJ N. 78 - Novembre/Dicembre 2007 31


VB.NET

Listato 2 ...fine

Case “RadioButton” : memberName = “Checked”


Case “HScrollBar”, “VScrollBar” : memberName = “Value”
Case “PictoreBox” : memberName = “Image”
Case “Timer” : memberName = “Enabled”
Case Else : memberName = “Text”
End Select
ElseIf GetType(Form).IsAssignableFrom(ty) Then
memberName = “Text”
Else
‘ check whether we have a DefaultMember attribute
Dim defaultMemberAttr As DefaultMemberAttribute = _
DirectCast(Attribute.GetCustomAttribute(ty, GetType(DefaultMemberAttribute)), _
DefaultMemberAttribute)
If defaultMemberAttr IsNot Nothing Then
memberName = defaultMemberAttr.MemberName
Else
‘ we search the only member whose DispID is zero
For Each info As MemberInfo In ty.GetMembers()
Dim dispIdAttr As DispIdAttribute = _
DirectCast(Attribute.GetCustomAttribute(info, GetType(DispIdAttribute)), _
DispIdAttribute)
If dispIdAttr IsNot Nothing AndAlso dispIdAttr.Value = 0 Then
mi = info
Exit For
End If
Next
End If
End If

If memberName.Length > 0 Then


‘ here we assume that we have only one member with this name
mi = ty.GetMember(memberName)(0)
End If

‘ return the result, if we have one field or property


If mi IsNot Nothing Then
If Not (TypeOf mi Is FieldInfo OrElse TypeOf mi Is PropertyInfo) Then
Throw New Exception(“Unsupported default member type”)
End If
‘ remember for next call
defaultMembers.Add(ty, mi)
Return mi
End If
‘ error if we get here
Throw New Exception(“Unknown default member”)
End Function

End Module

Proprietà di default tro vantaggio importante è che se non si usa-


no variabili Variant o Object il tool di conver-
Le guideline riportate nel Riquadro 1 sug- sione è in grado di determinare il nome del-
geriscono di eliminare le variabili Variant, la proprietà o metodo di default, quando que-
Object e Control. Se si utilizza un tipo varia- sto è omesso. Per comprendere meglio questo
bile strong-typed per accedere a un control- punto, si consideri il seguente codice:
lo o oggetto si evita di utilizzare la modalità
late-binding e sia il codice VB6 che il codice Sub AssignControlValue(ByVal dest As Object, ByVal
VB.NET sarà sensibilmente più veloce. Un al- source As TextBox)

32 VBJ N. 78 - Novembre/Dicembre 2007


VB.NET

Riquadro 1 12 guideline per preparare il codice VB6 alla migrazione

• Utilizzare Option Explicit per accertarsi che tutte le variabili siano dichiarate esplicitamente.

• Evitare le variabili Variant se possibile – una variabile Variant in VB6 è spesso il risultato di una
programmazione sciatta e spesso la variabile Variant può essere sostituita con un tipo definito. In pratica una
variabile Variant serve solo se non è conosciuto a priori il tipo di dato che sarà contenuto nella variabile stessa.

• Evitare le variabili Object e Control se possibile – evitando l’uso del late-binding le applicazioni VB6 (e
VB.NET) eseguiranno più velocemente.

• Trasformare le istruzioni GoSub in chiamate a metodi separati – se il programma fa uso massiccio di GoSub,
questo è uno dei task più lunghi. VB Migration Partner riesce a convertire anche le istruzioni GoSub, ma è
comunque preferibile eliminare tali istruzioni prima della migrazione.

• Ridefinire gli array in modo che il loro indice inferiore sia pari a zero – VB Migration Partner riesce a gestire
array con LBound qualsiasi ma è sicuramente preferibile eliminarli prima della migrazione.

• Eliminare le istruzioni Goto e Gosub calcolate – molto meglio una istruzione Select Case per eseguire una
determinata azione in base al valore di una variabile.

• Eliminare o ridurre il numero di stringhe a lunghezza fissa – Upgrade Wizard supporta la conversione di tali
elementi ma non in tutti i casi, e comunque le prestazioni non sono ottimali. In particolare, è sempre possibile
sostituire le stringhe a lunghezza fissa utilizzate per creare dei buffer da passare a metodi delle API di
Windows (ad es. GetWindowsDirectory).

• Creare degli alias per le istruzioni Declare che contengono parametri As Any – gli esempi più comuni di tali
Declare sono RtlMoveMemory (spesso rinominata CopyMemory) e SendMessage.

• Evitare le funzioni stringa con un suffisso “B” (es. LenB o LeftB) – più in generale, occorre porre attenzione al
codice VB6 che utilizza le stringhe come contenitore di byte e che converte implicitamente da stringa a Byte
array.

• Evitare di assegnare un valore al parametro Value di un blocco Property Let o Property Set, oppure ad uno
degli elementi di un array corrispondente ad un parametro di tipo ParamArray – in VB.NET questi elementi
sono sempre passati by-value, quindi le modifiche non sarebbero restituite al chiamante, come avviene invece
in VB6.

• Evitare l’istruzione LSet per assegnare variabili Type di tipo differente.

• Evitare le istruzioni VarPtr, StrPtr, e ObjPtr e altre funzioni non documentate – in certi casi queste istruzioni
sono usate solo per ottimizzare del codice VB6 time-critical, che potrebbe essere riscritto anche senza
utilizzare tali funzioni.

dest = source Sub AssignControlValue(ByVal dest As Object, ByVal


End Sub source As TextBox)
‘ UPGRADE WARNING: ...
Sia l’Upgrade Wizard e VB Migration Partner dest = source.Text
generano il seguente codice VB.NET: End Sub

VBJ N. 78 - Novembre/Dicembre 2007 33


VB.NET

È evidente che il tool di conversione riesce a questa serie di articoli dedicati ad un “nuo-
determinare la proprietà di default del secon- vo approccio” alla migrazione da Visual Ba-
do parametro perché quest’ultimo è ben de- sic 6. Appuntamento al prossimo numero di
finito – un controllo TextBox – ma non quel- Visual Basic & .NET Journal.
la del primo parametro (che è un Object), e
questa incapacità causa il warning. Riferimenti

Le guideline suggeriscono di evitare di uti- [1] “The hidden costs of .NET”, Joe Wilcox,
lizzare variabili Variant, Object e Control, ma CNET News
in molti casi è davvero difficile farne a meno, http://news.zdnet.co.uk/itmanagement/0,
come in questo codice: 1000000308,2112313,00.htm
[2] “Visual Basic .NET migration costs
Sub ClearControls(ByVal frm As Form) more than expected, Gartner says”,
On Error Resume Next George Lawton
Dim c As Object http://searchwindevelopment.techtarg
For Each c In frm.Controls et.com/originalContent/0,289142,sid8_
c = “” gci1168001,00.html
Next [3] “Product Family Life-Cycle Guidelines
End Sub for Visual Basic 6.0”, Microsoft
http://msdn2.microsoft.com/en-us/vbrun/
È possibile risolvere questo problema senza ms788707.aspx
rivoluzionare il codice VB6 esistente definen- [4] “Support statement for Visual Basic 6.0
do due metodi ausiliari chiamati GetDefault- on Windows Vista”, Microsoft
Member e SetDefaultMember (vedi Listato http://msdn2.microsoft.com/en-us/vbrun/
2). Questi metodi utilizzano reflection e qual- ms788708.aspx
che euristica per determinare la proprietà o il [5] Free Book – Upgrading Microsoft Visual
campo di default di un controllo o una classe, Basic 6 to Microsoft Visual Basic .NET
e funziona anche con numerosi oggetti COM http://msdn2.microsoft.com/en-us/vbrun/
come le connessioni e i recordset. Quindi per ms788236.aspx
risolvere il problema evidenziato dal prece- [6] Artinsoft web site:
dente esempio è sufficiente modificare il co- http://www.artinsoft.com/
dice generato dal traduttore: [7] Upgrading Microsoft Visual Basic 6.0 Ap-
plications to Visual Basic .NET and Vi-
Sub ClearControls(ByVal frm As Form) sual Basic 2005
On Error Resume Next http://msdn2.microsoft.com/en-us/library/
Dim c As Object aa480541.aspx
For Each c In frm.Controls [8] “Visual Basic 6 – Aggiornare le applica-
SetDefaultMember(c, “”) zioni”, Mondadori
Next http://education.mondadori.it/libri/Sched
End Sub aLibro.asp?IdLibro=88-04-54250-0
[9] Il sito di VB Migration Partner, Code Ar-
Si noti che VB Migration Partner dispone chitects
di una libreria in cui è già definito il metodo http://www.vbmigration.com
SetDefaultMember ed è in grado di generare [10] VB.NET compatibility rules, Aivosto
direttamente questo tipo di codice. h t t p : / / w w w. a i v o s t o . c o m /
project/ help/ en terprise-netcheck-
Con questo si chiude la prima puntata di rules.html

34 VBJ N. 78 - Novembre/Dicembre 2007


OFFICE

Uno spooler di stampa


con Microsoft Access,
COBOL e XML
Realizzare tanto, con poco sforzo, grazie alla potenza degli strumenti che
abbiamo oggi a disposizione.

di Gionata Aladino Canova e Paolo Rivieri

L’articolo nasce descrivendo la realizzazione di una pe. Nell’ultimo decennio le tec-


soluzione software creata a 4 mani. Il dott. Paolo Ri- nologie di stampa sono cambia-
vieri è stato titolare per 25 anni della TDE Center te drasticamente e le stampanti
srl, azienda che ha fondato il suo business sullo svi- ad aghi sono quasi scomparse.
luppo del software, la quasi totalità del quale è sta- L’uso del modulo continuo ha
to creato in COBOL, nei suoi diversi dialetti. Sva- senso ormai soltanto dove si ab-
riate procedure sono utilizzate ancora oggi con pie- bia bisogno di più copie, magari
na soddisfazione degli utenti. Un problema che si su moduli prestampati o bollati.
fa sempre più pressante è però quello delle stam- In tutti gli altri casi una stam-
pante laser risolve egregiamen-
te qualsiasi necessità di stampa.
Proprio per questo, presso alcu-
ni clienti, è nata l’esigenza di ag-
giornare il sistema di stampa sen-
za però dover convertire l’intero
software sviluppato. Presso alcu-
Gionata Aladino Canova programma dai bei tempi del ni clienti era stata implementa-
Sinclair Spectrum. Laureato in Informatica, è socio fonda- ta anche una soluzione che con-
tore di TDE Informatica srl. Sviluppa con Microsoft Access, sisteva nel disegnare un modulo
VB.NET e realizza siti in ASP/ASP .NET. Può essere contattato
in PCL grazie a programmi appo-
a g.canova@tdeinformatica.it
siti. Delle macro fondevano poi

N. 78 - Novembre/Dicembre 2007 VBJ 35


OFFICE

Figura 1 Il file esempio.xml visualizzato nell’editor

il modulo e l’output del programma COBOL, sato si utilizzavano linguaggi poco espressi-
inviando il tutto alla coda di stampa. A parte vi, una buona analisi ed un’accurata proget-
le notevoli difficoltà legate alla modifica del- tazione erano essenziali per arrivare in fon-
le stampe, il tutto richiedeva comunque una do al lavoro. Procedure anche banali poteva-
stampante PCL. Recentemente, abbiamo svi- no produrre migliaia o decine di migliaia di
luppato una soluzione software, tutto somma- righe di codice. Oggi abbiamo a disposizione
to molto semplice, che risolve tutti i problemi strumenti molto potenti e linguaggi altamen-
illustrati, consentendo di toccare il meno pos- te espressivi. Chi ha programmato in qual-
sibile i sorgenti COBOL, di utilizzare qualsia- siasi linguaggio procedurale, senza fare uso
si stampante a disposizione e di modificare fa- particolare di librerie per la gestione dati, ed
cilmente i report. ha provato a gestire un archivio, ha un’idea
della differenza che passa tra un’istruzione
L’importanza dell’analisi e della pro- SQL e decine o centinaia di istruzioni di un
gettazione, ieri ed oggi linguaggio come il C, per eseguire lo stesso
compito. Tuttavia oggigiorno l’analisi e la pro-
L’analisi e la progettazione del software sono gettazione sono importanti per scegliere la
sempre stati fondamentali. Ma, nel passato ed soluzione più efficace. Adottare un linguag-
oggi, lo sono per motivi diversi. Quando in pas- gio, uno strumento o un protocollo al posto di

36 VBJ N. 78 - Novembre/Dicembre 2007


OFFICE

pano bolle e fatture fanno spes-


so elaborazioni anche comples-
se. Quindi, la nostra attenzione
si è accentrata su di essi. Cattu-
rare semplicemente il loro ou-
tput avrebbe reso semplice la
modifica dei sorgenti COBOL,
ma avrebbe complicato il recu-
pero dei dati. In COBOL, la so-
luzione naturale per l’esporta-
zione dati è fare un file ASCII
delimitato. Il problema di que-
sta soluzione è che il recupero
dei dati si presenta ancora una
volta complesso. Infatti una
fattura è composta almeno da
una intestazione, dalle righe di
dettaglio e da un pié di pagi-
na. Quindi si sarebbe reso ne-
Figura 2 Il menu principale dello spooler cessario un parsing del file per
estrapolarne i diversi elemen-
ti. Inoltre, cambiando qualsiasi
cosa nell’output del programma
COBOL, si sarebbe reso necessario il contem-
poraneo aggiornamento del programma che
Un file XML legge i dati.

contiene dati, metadati Qui entra in gioco l’XML. I punti di forza


e più entità sfruttati dell’XML sono:

- Il file contiene sia i dati che i metadati.


- Il file contiene più entità; ad esempio, l’in-
testazione e le righe di dettaglio.

un altro, può portare ad aumentare enorme- Nel nostro caso, abbiamo realizzato una se-
mente i tempi di sviluppo o di debug. Quin- zione in cui memorizziamo le informazioni re-
di, a differenza di una volta, è più facile co- lative al report da stampare, alla stampante da
munque arrivare a completare il lavoro, ma utilizzare e al numero di copie; una sezione
perché sprecare tempo, fatica e soldi? Vedia- relativa ai dati del documento ed una relativa
mo quali sono state le scelte vincenti per la alle righe. Vedremo tra poco i dettagli.
nostra soluzione.
Scelta dell’applicazione
XML come collante per realizzare lo spooler

Nel nostro caso non aveva senso pensare di Il sistema è stato realizzato in Microsoft Ac-
leggere direttamente i file dati COBOL, cosa cess XP. La scelta è stata dettata dalla facilità
per altro fattibile per alcuni dialetti con ap- con cui, in Microsoft Access si possono gesti-
positi driver. Infatti, i programmi che stam- re i report. Il VBA consente di gestire agevol-

N. 78 - Novembre/Dicembre 2007 VBJ 37


OFFICE

mente l’importa-
zione dei file XML
e qualsiasi elabo-
razione eventual-
mente richiesta
sui dati. Qualsia-
si strumento di
alto livello con un
generatore di re-
port, come Visual
Studio, sarebbe
comunque stato
adatto.

Realizzazione
del programma
COBOL

Dal lato COBOL,


la parte del siste-
ma che va realiz-
Figura 3 Associazione delle stampanti
zata è sostanzial-
mente una conver-
sione delle routine
di stampa già esistenti. In pratica, si prendo- di dettaglio, come da esempio:
no i programmi di stampa e si aggiungono le
istruzioni che servono per realizzare la strut- TDE Informatica srl
tura del file XML e per scrivere il tutto su un 0001 Realizzazione articolo per VBJ € 10
file di testo, anziché su una stampante. Una
facilitazione sta nel fatto che non servono rot- va tradotta in XML in
ture di codice per la gestione del salto pagi-
na. Eventuali elaborazioni possono essere spo- <Radice>
state sul report realizzato in Access. Sarebbe <XMLImpostazioniStampa>
anzi dannoso, se ci fossero. Infatti cambian- <NumeroCopie>3</NumeroCopie>
do semplicemente margini al report, potreb- </XMLImpostazioniStampa>
be essere che le righe contenute in una pagi- <XMLDocumento>
na cambino, invalidando tutti i conti fatti in <Campo001>TDE Informatica srl</Campo001>
COBOL per il salto pagina. </XMLDocumento>
Una complicazione sta nel fatto di dover apri- <XMLRigaDocumento>
re e chiudere i tag relativi all’intero file, alle <Campo0>001</Campo0>
sezioni ed ai singoli campi. Poiché l’apertura <Campo1>Realizzazione articolo per VBJ
e la chiusura di un tag possono essere distan- </Campo1>
ti all’interno del codice sorgente, è necessa- <Campo2>€ 10</Campo2>
rio tenerne conto in fase di scrittura del pro- </XMLRigaDocumento>
gramma, prevedendo magari subroutine che </Radice>
aprano e chiudano i tag.
Per fare mente locale, una stampa di 3 co- Un esempio completo, aperto in un editor
pie, con una riga di intestazione ed una riga XML è visibile in Figura 1.

38 VBJ N. 78 - Novembre/Dicembre 2007


OFFICE

I caratteri speciali Realizzazione dello Spooler

L’XML è un formato molto rigido. Nella parte La struttura dello spooler è semplice. Un
che contiene dati sono vietati molti caratteri, timer provvede, ad intervalli regolari, a fare
tra cui, ad esempio, l’apostrofo. Ovviamente, una scansione di una cartella specificata in
la nostra terza stampa di prova conteneva un un parametro. Se vengono trovati nuovi file
apostrofo nel nome della ditta... Le soluzioni vengono importati in una lista. La lista viene
sono essenzialmente due. La prima consiste ordinata e poi i file vengono aggiunti ad una
nell’alterare il programma COBOL aggiungen- listbox. L’interfaccia dell’applicazione è visi-
dovi una routine che converte i caratteri spe- bile in Figura 2.
ciali con la corrispondente stringa valida. Ad
esempio, l’apostrofo diventa &apos;. Le speci-
fiche di XML prevedono esplicitamente anche Presso alcuni clienti,
la possibilità di utilizzare la codifica Unicode
per rappresentare i caratteri non latini, come è nata l’esigenza di
ad esempio i caratteri greci, cirillici, gli ideo- aggiornare il sistema di
grammi cinesi e giapponesi. Il problema prin-
cipale di queste soluzioni è che, ad un carat- stampa senza però dover
tere, corrisponde una stringa di più caratteri convertire l’intero
e quindi, avendo il COBOL dei campi a spa-
ziatura fissa, va gestito l’eventuale overflow
software sviluppato
che si potrebbe avere nella conversione.

Una soluzione molto più efficiente, per cui L’ordinamento si è reso necessario quando
ringraziamo la dottoressa Renata Bandelloni, vi sono stampe consecutive, come nel caso
è affidarsi ad una caratteristica dell’XML [1] della fatturazione riepilogativa. È necessario
che consente di specificare qualsiasi carattere preservare l’ordine di uscita dei file da CO-
all’interno di un blocco ben delimitato. BOL. Per fare questo, il nome dei file COBOL
contiene la data e l’ora in formato yyyymmg-
Nel codice seguente ghhssxx più un numero progressivo che con-
sente di non sovrascrivere file stampati nello
<codice> stesso secondo.
<![CDATA[ La scelta del timer è dettata da ragioni di
<libro> semplicità. Si potrebbe pensare di utilizzare
<capitolo>Questo capitolo contiene € e ‘ le API con delle funzioni di callback per ave-
</capitolo> re notifica dal sistema operativo della presen-
</libro> za di nuovi file, ma il beneficio ottenuto sa-
]]> rebbe veramente minimo, a fronte di una no-
</codice> tevole complicazione del codice e di un più
difficile debug.
tutto quello che è incluso nel tag ![CDATA[
viene ignorato, dal punto di vista del controllo Il comando Application.ImportXML importa
sintattico. Ovviamente, in COBOL, la via più un file XML. La cosa interessante è che esso
veloce per risolvere tutti i problemi di carat- crea una tabella per ogni entità di primo li-
teri particolari è proprio questa. Si scrive nel vello. Quindi, scegliendo con criterio il nome
file il tag di apertura, si lascia invariato il co- degli oggetti di primo livello, ci risparmiamo
dice che scrive dati e si chiude il tag. un po’ di lavoro. Ogni nostro oggetto inizia
con il prefisso “XML”. La scelta è dovuta al

N. 78 - Novembre/Dicembre 2007 VBJ 39


OFFICE

fatto di poter cancellare le tabelle importate fasi: la parte relativa al COBOL e la parte re-
senza averne un elenco preventivo. lativa ad Access. Nel nostro caso le procedu-
La routine seguente re COBOL giravano su un server UNIX, che
è il caso più complesso. Dopo aver messo su
For Each tbl In CurrentData.AllTables i programmi modificati, si deve fare in modo
If Left(tbl.Name, 3) = “XML” Then CurrentPro- che i file generati siano visti da Windows. O
ject.Connection.Execute “DROP TABLE “ & tbl.Name si condivide una cartella sul server, dopo aver
Next installato un programma tipo Samba per ren-
derla visibile da Windows, o si crea una pro-
provvede all’eliminazione delle tabelle impor- cedura che copia i file su una cartella con-
tate. Visto che il programma deve essere il più divisa di un PC Windows, che è la strada da
robusto possibile, se un’importazione fallisce noi seguita.
a metà o se il file contiene informazioni erra- Sul PC Windows si installa il programma
te, ci garantiamo, entro certi limiti, di ripu- scritto in Access, con l’eventuale runtime se
lire sempre bene il nostro database prima di necessario. Per chi ancora non lo sapesse, il
una nuova importazione. runtime di Access 2007 è diventato gratuito
[2]. Poi, dal programma stesso, si impostano
La prima tabella creata, XMLImpostazio- le stampanti e la cartella da cui leggere i file.
niStampa, contiene le informazioni sulla Infine si spera bene... J
stampante da utilizzare, il numero di copie Il risultato finale che deriva dal file di pro-
da stampare e il report da utilizzare. Il nome va è quello visibile in Figura 4.
della stampante è associato tramite la tabella
tblStampanti alla reale stampante Windows Conclusioni
da utilizzare. A questo punto, è sufficiente ac-
cordarsi su un nome di comodo per indica- Oggi più che mai è necessario, di fronte ad
re una certa stampante e selezionarla poi ef- un problema, staccare le mani dal PC e fer-
fettivamente da Windows, come illustrato in marsi a riflettere su quali strade sono percor-
Figura 3. Nel caso in cui la stampante venga ribili. Sono utilissimi anche confronti con col-
cambiata, il programma COBOL non viene leghi che hanno specializzazioni diverse dalle
toccato. Il nome del report consente al pro- nostre, proprio perché potrebbero suggerire
grammatore COBOL di selezionare il report approcci alla soluzione del problema radical-
che verrà utilizzato per la stampa. Quindi, per mente diversi dai nostri. Sempre più problemi
aggiungere la stampa di una DDT, si crea un possono essere risolti senza scrivere righe di
nuovo report in Access ed il programmatore codice o scrivendone pochissime. Ma bisogna
COBOL dovrà soltanto richiamarlo. aver imboccato la strada giusta all’inizio…

La seconda tabella creata, XMLDocumento, Un ringraziamento va a Paolo Rivieri che,


contiene i dati di testa e di fondo pagina del pur essendo in pensione e pensando alla sua
documento. Normalmente conterrà un solo re- barca a vela, ha trovato il tempo per scrivere
cord, mentre la terza tabella, XMLRigaDocu- un programma in COBOL ridotto al massimo,
mento, contiene tanti record quante sono le ri- da utilizzare come esempio per VBJ.
ghe di dettaglio del documento. In entrambe
le tabelle, si è scelto di dare un nome sequen- Riferimenti
ziale ai campi (campo001, campo 002...).
[1] http://xml.html.it/guide/lezione/1843/
Installazione del sistema documenti-ben-formati/
[2] http://office.microsoft.com/it-it/access/
L’installazione del sistema si divide in due HA102188641040.aspx

40 VBJ N. 78 - Novembre/Dicembre 2007


SICUREZZA

Lo stato dello SPAM

Il report mensile di Symantec, aggiornato con i dati di Dicembre 2007

a cura di Symantec

Il report di questo mese evidenzia la maggior cat- messa di cartoline regalo in


tiveria degli spammer rispetto alla passata stagio- cambio di risposte ad un son-
ne estiva. Raggiunta la fine del 2007, lo spam si è daggio, gli spammer sfrutta-
assestato al 75% di tutte le email (era il 72% a No- vano le primarie USA per rac-
vembre), crescendo fino all’83% nei giorni imme- cogliere informazioni perso-
diatamente precedenti alle vacanze natalizie. nali;
• Attenzione ai blog: L’uso di
Gli aspetti rilevanti di questo mese includono: blog all’interno dello spam è
in crescita, specialmente in
• Picchi di spam legato alle vacanze: Nuovi livel- Cina dove sono comuni i set
li di spam raggiunti tramite l’inserimento di pa- di caratteri semplificati.
role-chiave legate alle vacanze, sia nel subject
che nelle immagini allegate; Percentuali di email
• Gli spammers diventano onesti? Non proprio: identificate come spam
l’adattamento di un falso classico, la falsa pro-
messa di indennizzare le vittime di spam con La percentuale di spam dei Mail
100.000 dollari; Gateway Internet mondiali (Wor-
• Con l’impennata dei prezzi del petrolio, gli ldwide Internet Mail Gateway
spammer vanno a segno: email che prometto- Spam Percentage, Figura 1) rap-
no di smascherare gli impianti di rifornimento presenta il numero di messaggi
di carburante che alzano i prezzi irregolarmen- processati e catalogati come spam
te; contro il numero totale di messag-
• Un nuovo anno non così “felice”: i destinatari gi processati dai gateway. Questa
invitati a scaricare una simpatica canzonetta di misura rappresenta il filtraggio
Buon Anno, mentre in realtà era qualcosa di più a livello SMTP e non include la
pericoloso; quantità di email identificate a li-
• I sondaggi per le presidenziali USA: con la pro- vello rete (network).

N. 78 - Novembre/Dicembre 2007 VBJ 41


SICUREZZA

Figura 1

Categorie globali di spam


• Attacchi con email sulla salute, che offro-
I dati relativi alle categorie di spam (Figu- no o pubblicizzano prodotti e servizi lega-
ra 2) derivano dalle classificazioni dei mes- ti alla salute. Ad esempio: medicinali, cure
saggi passati attraverso il Symantec Probe mediche, rimedi erboristici.
Network. • Attacchi con email fraudolente (fraud), che
sembrano provenire da un nota azienda,
Definizione delle categorie ma non lo sono. Conosciute anche come
“brand spoofing” o “phishing”, questi mes-
• Attacchi con email di Prodotti (Products), saggi sono usati spesso per indurre i de-
che offrono o pubblicizzano beni o servizi stinatari a rivelare informazioni personali
generici. Ad esempio: dispositivi, servizi come indirizzi email, informazioni finan-
di investigazione, vestiario, cosmetici. ziarie e password. Ad esempio: notifica di
• Attacchi con email per adulti, che conten- accredito, verifica della carta di credito, ag-
gono o si riferiscono a prodotti o servizi giornamento di prezzi.
destinati a maggiorenni, spesso offensivi o • Attacchi con email sul tempo libero (lei-
inappropriati, Ad esempio: porno, annunci sure), che offrono o pubblicizzano premi,
personali, ricerca di compagnia. vincite o attività di vacanza a prezzi scon-
• Attacchi con email di finanza, che conten- tati. Ad esempio: offerte di vacanze, casi-
gono riferimenti o offerte legate al denaro, nò online, giochi.
alla Borsa, o ad altre “opportunità” mone- • Attacchi con email legate a Internet, che
tarie. Ad esempio: investimenti, rapporti offrono beni o servizi legati specificamen-
di credito, prestiti. te ad Internet. Ad esempio: web hosting,
• Attacchi con email fasulle (scams), ricono- web design, difesa dallo spam.
sciute come fraudolente, intenzionalmente • Messaggi politici che pubblicizzano la cam-
fuorvianti, o note per risultare come atti- pagna elettorale di un candidato, che si of-
vità fraudolenta da parte del mittente. Ad frono di donare denaro a un partito poli-
esempio: investimenti nigeriani, schemi a tico o per una causa politica. Ad esempio:
piramide, “catene di S.Antonio”. partito politico, elezioni, donazioni.

42 N. 78 - Novembre/Dicembre 2007
SICUREZZA

Gli spammer hanno anche modificato il cam-


po Subject delle loro email per adeguarsi allo
spirito natalizio. Qualche altro esempio:

• Subject: Christmas special offer


• Subject: your expected xmas gift will be
your increased PE!
• Subject: Enjoy your holiday season with a
new designer purse on our tab!
• Subject: Looking at buying your partner
or loved one a beautiful gift this Chri-
stmas?

Figura 2 Anche le immagini non sono state immuni


da modifiche in questo periodo. Gli spammer
hanno inserito in esse le stesse parole-chia-
ve nel tentativo di ficcarle bene nella mente
dei consumatori.
Regioni di provenienza
Gli spammer sono diventati onesti?
Le regioni di provenienza (Figura 3) rap- Non proprio
presentano la percentuale dei messaggi pro-
venienti dalle seguenti aree: Nord-America, Gli spammer che tradizionalmente utilizzava-
Sud-America, Europa, Australia/Oceania, Asia no storie di dittatori africani per derubare le per-
e Africa. sone, hanno recentemente cambiato strategia in
questo tipo di email.
Gli spammer spostano l’attenzione Le frodi osservate da Symantec in questo mese
sulle vacanze offrivano una compensazione alle vittima di tali
frodi. La frode consisteva nel fatto che il paga-
Come atteso, gli spammer sono stati attivi mento sarebbe stato supervisionato da un diri-
più del solito durante le vacanze. I livelli di gente dell’ONU e che 150 vittime avrebbero rice-
spam si sono impennati e hanno raggiunto il vuto un indennizzo di 100.000 dollari ciascuno.
75% del numero totale di email per la mag- Seguivano alcuni link come prova della re-
gior parte del mese, per arrivare all’83% nei stituzione effettuata alle vittime. In fondo al-
giorni precedenti alle feste di Natale. l’email, la spiegazione di come poter recupera-
Mentre la maggior parte dei messaggi di re il denaro.
spam arrivati in Dicembre consistevano in
spam generico, gli spammer hanno modifi- Con l’impennata dei prezzi del petrolio,
cato I loro URL con parole-chiave legate alle gli spammer vanno a segno
festività, e frasi per dar loro una maggiore at-
trattiva specifica. Ecco qualche esempio: Con la crescente speculazione intorno ai prezzi
del petrolio, è stata osservata da Symantec un’in-
• replica4christmas.com teressante email di spam avente come Subject
• buyholidaygiftshere.com “Lista de Gasolineras Fraudulentas”.
• discountedholidaygifts.com Tale email informa i consumatori che possono
• xmasgiftsfast.com scaricare un tool per ottenere una lista di stazioni
• cheapholidayoem.com di servizio in cui il prezzo della benzina era au-
mentato in modo irregolare. Questo spam sem-

N. 78 - Novembre/Dicembre 2007 VBJ 43


SICUREZZA

bra provenire dalla Mexican Fede-


ral Consumer Protection Agency,
ma il file scaricato risulta essere
un cavallo di troia.

Un nuovo anno
non così “felice”

Symantec ha osservato recen-


temente un tipo di spam che af-
ferma di voler aiutare i destina-
tari a celebrare l’arrivo del 2008
con una canzonetta. Figura 3
Quando l’utente clicca sul link
appare il messaggio:
“Your download should begin
shortly. If your download does not start in Attacchi dei blog cinesi
approximately 15 seconds, you can click
here to launch the download and then press Nelle scorse settimane, la frequenza dello
Run. Enjoy!” spam cinese che portava i destinatari verso i
Il file non è una canzone o una suo- blog appare in crescita sia per il set tradizio-
neria, ma uno dei due file infetti Hap- nale di caratteri, sia per quello semplificato,
pynewyear2008.exe o Happy_2008.exe, en- sebbene la maggior parte degli attacchi ap-
trambi varianti del worm Storm. pare indirizzato al set semplificato (Cina). Le
categorie di prodotti pubblicizzati in questo
Frode sulle elezioni presidenziali tipo di spam sono virtualmente infiniti, da
prodotti educational a opportunità di affari.
Gli spammer continuano a dimostrare di Promuovere prodotti da un blog pubblico e
essere aggiornati sugli eventi che accadono. personale è una delle tecniche più economi-
Quando le primarie presidenziali americane che a disposizione. Perché? Perché i siti di
si surriscaldano, viene fuori uno spam su una blog sono free. Tradizionalmente gli spam-
nuova carta omaggio. mer hanno ospitato le loro merci su propri
Ai destinatari viene offerta la possibilità di domini per cui dovevano pagare. Ma con l’ab-
ricevere una carta omaggio di 500 dollari in bondanza di siti blog gratuiti, adesso posso-
cambio della loro opinione sulle possibilità no risparmiare. Un altro motivo a favore dei
di Hillary Clinton di vincere le elezioni del blogger è che se un particolare blog viene
2008 (Figura 4). Invece gli utenti venivano bloccato da filtri email, si può facilmente tra-
dirottati su un sito che chiedeva e collezio- sportare il tutto su un altro blog gratuito.
nava informazioni personali.

Figura 4

44 N. 78 - Novembre/Dicembre 2007
Prodotti & News

E-mail Mobile rare queste sfide. RIM per esempio, phishing alle istituzioni finanziarie.
impressionante giro d’affari offre un servizio end-to-end (uno dei L’Italia questo mese si posiziona al
principi centrali del protocollo IP, che terzo posto con un 6% del totale.
L’e-mail wireless è uno dei più grandi fornisce le basi per Internet. Secondo Infatti, nel mese di novembre, sono
segmenti del mercato delle applica- il principio dell’end-to-end, le opera- state registrate 9 istituzioni finanziare
zioni per la telefonia mobile. La sua zioni relative ai protocolli di comu- sottoposte ad attacco, per un totale di
base installata continua a crescere dal nicazione devono avvenire nei punti 508 attacchi.
momento che nuovi clienti scelgono finali di un sistema di comunicazione). È decisamente aumentata rispetto a
questa soluzione e con questa scelta Dall’altro lato, Microsoft sta cercando settembre e ottobre la percentuale
riescono ad ampliare il loro raggio di rendere il proprio protocollo (Acti- di attacchi ospitati negli Stati Uniti.
operativo. Con il tempo questa ap- veSync) il più largamente usato. Dall’altra sono diminuiti gli attacchi
plicazione è diventata una necessità, ospitati in Cina e Hong Kong in corre-
e c’è una spinta crescente del mer- Red Hat collabora col lazione con la diminuzione di attacchi
Rock Phish che si sono avuti in questi
cato da parte degli utenti finali per Ministero dell’Economia
formulare strategie mobili centrate due paesi.
sull’e-mail senza fili. Rispetto al mese di ottobre, a novem-
Anche il Ministero dell’Economia e
Una nuova analisi di Frost & Sullivan bre il numero di istituzioni oggetto di
delle Finanze ha scelto le soluzioni
(http//:www.enterprisecommunicat attacco è leggermente aumentato e,
software di Red Hat, Inc. (Nasdaq:
ions.frost.com) sui mercati europei in generale, continua il trend cui si è
RHAT), leader mondiale nella forni-
dell’e-mail mobile rivela che questo assistito ultimamente ovvero pochi at-
tura di soluzioni open source. Lo ha
mercato ha avuto entrate pari a 1.86 tacchi indirizzati a organizzazioni mai
fatto per alcune delle applicazioni
miliardi di Euro nel 2007 e si pensa attaccate prima.
mission critical quali il “Service Perso-
che queste raggiungeranno i 6.65 Il Rapporto è realizzato dall’RSA Anti-
nale Tesoro” (SPT) la cui accessibilità
miliardi di Euro nel 2012. Fraud Command Center (AFCC), una
via web è garantita da una web farm
Gran parte degli operatori della tele- struttura attiva 24 ore su 24, 7 giorni
basata sulla stabilità e sulle alte pre-
fonia mobile europea hanno creato su 7 per individuare, monitorare e
stazioni di Red Hat Enterprise Linux.
un portfolio e-mail mobile che com- rendere inoffensivi attacchi phishing,
“L’accessibilità tramite web ad appli-
prende soluzioni di terze parti come pharming e Trojan tentati ai danni di
cazioni quali SPT (uno dei siti web
BlackBerry, Good e Microsoft, come oltre 200 istituzioni di tutto il mondo.
forse fra i più acceduti della P.A.) ha
pure propri servizi di push e-mail AFCC ha sventato a oggi oltre 60.000
un ruolo realmente mission-critical
(messaggi di posta elettronica inviati attacchi di phishing ed è una fonte di
per il Ministero dell’Economia e delle
e ricevuti in costante e automatica informazioni preziosa su questo feno-
Finanze in quanto consente di asservi-
sincronizzazione) basati su prodotti meno e sulle altre emergenti minacce
re ad un bacino di svariate migliaia di
di ditte come Visto, Seven e Nokia/ alla sicurezza.
utenti in costante aumento.
Intellisync. I partner RIM (Research in Le 10 principali minacce del 2008
Non è solo applicazioni, ma un
Motion) offrono la modalità servizi secondo Websense
mezzo che consente ai cittadini di
internet BlackBerry, che permette agli Come ogni fine d’anno, Websense - la
ricevere servizi importanti con tutta
abbonati di collegare il loro account società specializzata in soluzioni per la
la comodità che Internet permette di
personale (per esempio su Gmail o protezione dalle minacce alla sicurez-
ottenere”, spiega Marcello Niceforo,
MSM) a un servizio push e-mail Black- za - rilascia le previsioni sulla prevista
Dirigente del Ministero dell’Economia
Berry, gestito dai suoi operatori. Que- evoluzione del crimine informatico
e delle Finanze - Servizio Centrale
ste offerte sono destinate a consuma- nel nuovo anno.
Sistema Informativo Integrato – Area
tori, piccole imprese e a una categoria Secondo gli esperti dei Websense
Supporto Sistemistico e Gestionale.
che si pone tra consumatori e coloro Security Labs™ (www.websensesecu
“Per questo per noi è fondamentale
che usano il servizio come imprendi- ritylabs.com), le Olimpiadi di Pechi-
avere un partner affidabile, in grado
tori professionisti (“prosumers”). no rappresenteranno il momento di
di garantirci una soluzione di altissimo
Tuttavia, una limitata interoperabilità massimo attivismo degli hacker, che
livello, che abbini massima sicurezza a
in una frammentata catena di valore si dedicheranno a compromettere i
prestazioni avanzate. Caratteristiche
(value-chain) sta influenzando lo svi- più popolari siti legati ai Giochi. Nuovi
che abbiamo ritrovato in Red Hat.”
luppo nel mercato di questo settore. obiettivi dei cyber criminali saranno
Inoltre, si è verificato un crescente inoltre Mac e iPhone, grazie all’au-
RSA pubblica il rapporto di mento della loro popolarità presso
caso di standardizzazione poiché la
tecnologia si è evoluta ed è andata novembre sulle frodi online gli utenti. Il Web 2.0 favorirà attacchi
oltre la fase iniziale di adozione. mirati a gruppi di navigatori selezio-
Gli sforzi fatti dai vari sostenitori RSA, The Security Division of EMC, ha nati in base a età, potere d’acquisto
(P-IMAP) a questo riguardo devono pubblicato il Rapporto di novembre e abitudini di spesa. Tecniche di web
ancora produrre risultati positivi. sullo stato delle frodi online nel mon- spam e di altro tipo saranno usate in
Singoli partecipanti del mercato do. Da quanto emerge nel rapporto, modo crescente per convogliare traf-
hanno adottato vari mezzi per supe- gli Stati Uniti continuano a essere fico verso siti web infetti..
il paese più colpito da attacchi di I Websense Security Labs possono fare

N. 78 - Novembre/Dicembre 2007 VBJ 45


Prodotti & News

queste affermazioni in quanto la tec- blicità linkata alle pagine web hanno tenzialmente in grado di garantire il
nologia proprietaria da loro utilizzata accresciuto la probabilità di “link maggior ritorno economico.
– la stessa impiegata nei prodotti per deboli”, ovvero siti web/contenuti 7. JavaScript polimorfi per eludere gli
la sicurezza proposti da Websense vulnerabili alla compromissione. Web- antivirus scanner
– effettua la scansione di oltre 600 sense prevede che i cyber criminali Gli hacker sono molto furbi e tra le
milioni di siti web alla settimana alla sfrutteranno sempre più i link deboli loro tecniche anti-intercettazione
ricerca di codice maligno, mentre gli dell’infrastruttura web con l’obiettivo emergono i cosiddetti JavaScript poli-
On Demand Services effettuano lo di indirizzare il maggior numero possi- morfi (Polyscript), che permettono di
stesso tipo di scansione su oltre 350 bile di utenti Internet. I più vulnerabili fornire a ogni diverso visitatore di un
milioni di email la settimana. I Web- a tali attacchi sono i motori di ricerca sito maligno una pagina web con un
sense Security Labs pubblicano una e grosse social network quali MySpace codice diverso. Se il codice si modifica
media di 80 alert di sicurezza al gior- o Facebook. di continuo, le tecnologie di scansio-
no per proteggere gli oltre 42 milioni 4. Il numero di siti compromessi ne basate sulla firma hanno difficoltà
di dipendenti delle aziende clienti di supererà quello dei siti maligni creati a identificare le pagine come maligne
Websense da minacce alla sicurezza ex novo e gli hacker possono così estendere la
interne ed esterne alle organizzazioni. Negli ultimi cinque anni, il Web è stato vita utile dei siti contaminati, prima
Le 10 principali minacce del 2008 usato in maniera crescente come vet- che essi vengano individuati.
secondo Websense: tore di attacchi e oggi i cyber criminali 8. Tecniche di occultamento dei dati
1. Giochi Olimpici nel mirino di frodi e sembrano preferire i siti compromessi sempre più sofisticate
attacchi di phishing come “piattaforma di lancio” delle Websense prevede un uso crescente
I grandi eventi da sempre attirano i cy- loro azioni maligne rispetto alla della cripto-virologia e un affinamen-
ber criminali e le Olimpiadi del 2008, creazione ex novo di siti con lo stesso to nell’occultamento dei dati sottratti
con gli occhi di tutto il mondo puntati scopo. Siti compromessi, in particola- attraverso l’impiego di stenografia,
su Pechino, non faranno eccezione. re se ad alto tasso di visitatori – vedi inclusione dei dati all’interno di pro-
All’accendersi della torcia olimpica il caso dell’attacco al sito del Miami tocolli standard e media file. I toolkit
– prevedono gli esperti di Websense Dolphin Stadium occorso pochi giorni largamente disponibili sul web saran-
- i maggiori rischi consisteranno nella prima del Super Bowl 2007 – offrono no usati per nascondere informazioni
possibilità di attacchi di tipo denial of il vantaggio di traffico di visitatori proprietarie e dati rubati.
service (DoS) su vasta scala mirati a bello e pronto da intercettare, senza 9. Le forze dell’ordine vigilano…e
colpire (rendendoli inaccessibili) i siti nemmeno il fastidio di dover utilizzare qualche gruppo di hacker ha le ore
correlati ai Giochi, nonché vari tenta- email, instant messaging o Web post contate!
tivi di frodi perpetrati via email o web. ingannatori. Nel 2007, molti attacchi Internet su
Websense prevede inoltre tentativi 5. Attacchi web cross-platform: la larga scala non sono sfuggiti alle in-
di compromissione dei più popolari crescente popolarità di Mac e iPhone dagini delle forze dell’ordine di tutto
siti di news sui Giochi o di sport in attira il cyber crimine il mondo. Websense prevede che nel
generale, mediante attacchi mirati a Con il crescente successo di Macintosh 2008 la cooperazione globale porterà
installare codice maligno sui PC di e iPhone, aumenteranno anche i co- a un’imponente azione di repressione
chi li visita con lo scopo di rubare siddetti attacchi web cross-platform, con arresti di membri chiave di alme-
informazioni personali o comunque che individuano il sistema operativo no un gruppo di hacker.
confidenziali. utilizzato dal PC o dispositivo della vit- 10. Vishing e voice spam uniti e in
2. SPAM maligno invaderà blog, mo- tima, attivando di conseguenza codice crescita
tori di ricerca, forum e siti web dedicato specificatamente a quella La popolazione degli utenti di telefoni
Websense prevede che gli hacker piattaforma. Insieme a Windows, Mac cellulari è ormai talmente vasta da es-
useranno sempre di più il web spam OSX e iPhone saranno le nuove prede sere più che appetibile da prendere di
per pubblicare URL di siti maligni al- dei cyber criminali. mira con spamming e “vishing” mirati
l’interno di forum, blog, nelle sezioni 6. Il Web 2.0 favorisce attacchi mirati a realizzare facili guadagni. A oggi, i ri-
“talk-back” dei siti e in siti compro- a gruppi di persone selezionati in base cercatori di Websense hanno osserva-
messi. Questo stratagemma non solo a interessi e profili to un numero crescente di attacchi di
indirizza direttamente traffico verso i Il Web 2.0 ha generato una prolifera- tipo vishing, ma meno di voice spam.
siti infetti, ma fa anche sì che tali siti zione di utenti del web che visitano Per il 2008 Websense prevede che il
scalino posizioni nei risultati sui moto- chat room, siti di social networking e “vishing” – o la pratica di usare social
ri di ricerca, accrescendo così il rischio siti di interesse specifico quali portali engineering e Voice over IP (VoIP)
che gli utenti li visitino. di viaggi, automobili, ecc. Tali siti for- per ottenere informazioni personali e
3. I link deboli delle social network niscono agli hacker vittime potenziali finanziarie – e il voice spam verranno
usati per sferrare nuovi attacchi “segmentate” per età, potere d’acqui- usati congiuntamente e sempre più
Il web è un coacervo non solo di sto, abitudini di spesa. I ricercatori di spesso: gli utenti riceveranno chia-
contenuti ma di link. L’avvento di “og- Websense prevedono che nel 2008 mate vocali automatiche su linee LAN
getti” Web 2.0 quali Google Adsense, tali attacchi mirati si concentreranno con un voice spam che li spingerà
mash-up, widget e social network, in- su specifici siti di social networking a inserire le proprie credenziali via
sieme alla massiccia quantità di pub- o tematici, i cui visitatori sono po- telefono.

46 VBJ N. 78 - Novembre/Dicembre 2007


LINQ

LINQ in pillole:
sintassi delle query

Il secondo di una serie di articoli in “pillole” per introdurre i concetti fon-


damentali di LINQ e capire quando e come usarlo al meglio, nell’attesa che
arrivi insieme a Visual Studio 2008.

di Marco Russo e Paolo Pialorsi (www.devleap.com)

Nel precedente articolo abbiamo visto cosa sia foreach ( string name in query ) {
LINQ e abbiamo introdotto i concetti alla base del Console.WriteLine( name );
suo funzionamento. }
In questo articolo concentreremo la nostra atten-
zione sulla sintassi di base delle query LINQ e sul- Il compilatore C# 3.0 genere-
le novità di C# 3.0 necessarie alla definizione di rà del codice equivalente al se-
una query LINQ. guente:

Sintassi delle Query LINQ IEnumerable<string> query =


Customers
Ripartiamo dalla query vista nell’articolo prece- .Where( c => c.Country ==
dente: “Italy” )
.Select( c => c.CompanyName );
var query =
from c in Customers Il codice precedente sembra in-
where c.Country == “Italy” vocare metodi (Where, Select) del-
select c.CompanyName; l’oggetto Customers, fornendo in
ingresso dei parametri con una
sintassi particolare, ancora da
chiarire.
In realtà questi metodi sono de-
DevLeap è un gruppo di consulenti e autori specializzati nella
formazione e consulenza per lo sviluppo di soluzioni basate gli “extension methods” e rap-
sul Framework .NET di Microsoft. Possono essere contattati presentano una delle novità più
via email: info@devleap.it. I loro blog personali sono dispo- interessanti di C# 3.0.
nibili all’indirizzo http://blogs.devleap.com/
Tramite gli extension methods

VBJ N. 78 - Novembre/Dicembre 2007 47


LINQ

possiamo definire dei metodi che si applica- .Where( delegate (Customer c)


no a dei tipi specifici, estendendone le funzio- {
nalità, senza derivarli esplicitamente. Non ve- return(c.Country == “Italy”);
dremo in questo breve articolo la sintassi per });
definire degli extension methods, consideria-
mo però che LINQ definisce una serie di me- Le Lambda Expression possono essere pre-
todi di questo tipo, validi per gli oggetti che dicati o proiezioni. I predicati sono espressio-
implementano l’interfaccia IEnumerable<T>. ni da valutare, come nel caso dell’argomen-
In pratica esistono dei metodi che sono richia- to di Where, che ricevono un certo insieme
mabili su tutti gli oggetti che implementano di dati in ingresso e restituiscono un valore
questa interfaccia, che consentono di esegui- booleano che ne rappresenta il risultato. Le
re delle operazioni altrimenti non disponibili proiezioni sono espressioni che restituiscono
sugli oggetti stessi. Per esempio, l’extension dei tipi, come nel caso dell’argomento di Se-
method Select estrae dalla collezione a cui è lect, ottenuti a partire dall’oggetto fornito in
applicato ciò che gli viene dato come argo- ingresso.
mento. Analogamente, il metodo Where ap- Ecco che allora la nostra query può essere
plica un filtro sulla collezione a cui è appli- letta come riportato in Tabella 1.
cato sulla base della condizione di filtro che
gli viene data come argomento. I metodi di Select e di Where non sono gli
Per chiarire il concetto è però necessario ca- unici a nostra disposizione. Per esempio, pos-
pire cosa significhino le espressioni fornite siamo scrivere una query come la seguente:
come argomento ai metodi Where e Select.
Si chiamano Lambda Expression e rappre- var query = from c in Customers
sentano in forma sintetica degli anonymous where c.Country == Countries.Italy
delegate. orderby c.Name descending, c.City
Gli anonymous delegate sono una particola- select new { c.Name, c.City }
re sintassi offerta a partire da C# 2.0, per di-
chiarare il codice da eseguire in risposta alla che sarà tradotta dal compilatore in que-
chiamata di un delegate. sto modo:

La sintassi seguente: var query =


Customers
.Where( c => c.Country == “Italy” ) .Where( c => c.Country == Countries.Italy )
.OrderByDescending( c => c.Name )
è una forma sintetica equivalente alla seguente .ThenBy( c => c.City )
sintassi basata su anonymous delegates: .Select( c => new { c.Name, c.City } );

da tutti i clienti Customers from c in Customers


che verificano il predicato .Where( c => c.Country == “Italy” ) where c.Country == “Italy”
Country uguale Italy

seleziona una proiezione .Select( c => c.CompanyName ) select c.CompanyName


che contiene la proprietà
CompanyName

Tabella 1

48 VBJ N. 78 - Novembre/Dicembre 2007


LINQ

In questo secondo esempio gli extension .NET Reflector.


method sono: Where, OrderByDescending,
ThenBy, Select. Ve ne sono poi molti altri Conclusioni
[1], ma non è obiettivo di questo articolo far-
ne la trattazione completa. Le query LINQ si basano pesantemente sul-
La Lambda Expression di proiezione utiliz- le novità sintattiche introdotte dal linguaggio
zata nel metodo Select sfrutta un’ulteriore no- C# 3.0 e dal nuovo compilatore. La vera novi-
vità di C# 3.0 chiamata “anonymous type”. Si tà sono i nuovi costrutti del codice, le query
tratta della possibilità di dichiarare un’istan- non sono altro che keyword del linguaggio
za di un tipo che non esiste tra i tipi da noi che vengono poi convertite dal compilatore in
definiti da codice, ma che verrà generato dal applicazioni concrete di extension methods,
compilatore C# 3.0 all’atto della compilazio- lambda expression, anonymous types, etc.
ne del nostro codice.
In pratica l’istruzione: Bibliografia

.Select( c => new { c.Name, c.City } ) [1] Paolo Pialorsi & Marco Russo – “Introdu-
cing Microsoft LINQ”, Microsoft Press,
costruisce un oggetto di un tipo autogene- 2007
rato che verrà poi utilizzato per rappresenta-
re ogni cliente che corrisponde al criterio di Riferimenti
filtro. Il tipo autogenerato non ha un nome
a noi noto, anche se è possibile interrogarlo [2] http://introducinglinq.com
via Reflection o scoprirlo con strumenti come

VBJ N. 78 - Novembre/Dicembre 2007 49


REPORTAGE

Reportage
TechEd 2007
Barcellona, Novembre 2007: come ogni anno si svolge la più grande manife-
stazione Microsoft a livello EMEA per gli sviluppatori, il TechEd Developer.

di Gian Maria Ricci

Il TechEd Developer è la manifestazione più gran- R: Sicuramente LINQ è l’in-


de a livello EMEA, dove gli sviluppatori possono troduzione più corposa e quella
approfondire le loro conoscenze sulle ultime tec- che maggiormente può influen-
nologie di casa Redmond e conoscere in anteprima zare l’architettura degli applica-
i nuovi tool che usciranno nell’anno a venire. Per tivi, sono poi state introdotte in-
capire come cambierà la vita degli sviluppatori Mi- novazioni anche nello sviluppo
crosoft nel 2008, è interessante sentire direttamente web e non si può dimenticare in-
le opinioni dei responsabili che a Redmond si oc- fine il Team Foundation Server,
cupano dello sviluppo del Visual Studio, Prashant la cui nuova versione offre mag-
Sridharan e Joe Marini; ecco l’ intervista giori funzionalità ed aumenta la
scalabilità per permettere la ge-
D: Quale pensa siano le caratteristiche più im- stione di grandi team di sviluppo.
portanti del Visual Studio 2008? Il TFS è stato calato infatti in am-
bienti di test con circa 6000 svi-
luppatori e più di un milione di
Gian Maria Ricci è laureato in ingegneria elettronica pres-
Work Item, mantenendo perfor-
so la facoltà di Ancona. Si interessa di programmazione
in ambiente Windows ed in particolare alla piattaforma mance decisamente elevate. Gra-
.NET. Collabora attualmente con la ActValue consulting zie a Team Foundation Server è
(www.actvalue.com) con il ruolo di project manager ed possibile gestire il ciclo di vita
è uno dei fondatori dello usergroup INETA DotNetMarche
(www.dotnetmarche.org). degli applicativi in modo molto
dettagliato, ad esempio è possi-

50 VBJ N. 78 - Novembre/Dicembre 2007


REPORTAGE

bile verificare per una singola linea di codi- bili, se compatibili, con i vecchi progetti, per-
ce il Work Item che ha portato alla sua intro- mettendo ad esempio di utilizzare la visione
duzione e in che revisione e quale sviluppa- contemporanea di codice e anteprima per le
tore l’ha scritta. pagine web. In questo modo si può iniziare a
Sempre nel Visual Studio 2008 è stata miglio- familiarizzare con la nuova IDE, senza dove-
rata l’integrazione con Office, introducendo re obbligatoriamente passare alla nuova ver-
i Visual Studio Tools for Office direttamente sione di framework, garantendo una transi-
come prodotto base e non più come tool sepa- zione più tranquilla e graduale.
rato da istallare in un secondo momento.
D: Si può considerare vicino un futuro dove
D: Se dovesse convincere uno sviluppato- persone che non conoscono nulla di program-
re a passare dalla versione attuale di Visual mazione potranno creare applicativi sempli-
Studio alla nuova versione, quali argomen- cemente componendo blocchi preesistenti in
tazioni utilizzerebbe? maniera visuale?
R: Sicuramente il MultiTargeting è la mi- R: Probabilmente si, ad esempio con il pro-
gliore argomentazione, la nuova versione di getto Popfly è possibile comporre in manie-
Visual Studio permette infatti di lavorare con ra completamente visuale piccoli widget Sil-
progetti che come target non hanno solamen- verlight da includere nei propri siti; con il
te il framework 3.5, ma anche il 3.0 ed il 2.0. passare del tempo e con l’evolversi dei tool
In questo modo si evita la necessità di avere questo modo di creare applicazioni divente-
più versioni di VS sulla stessa macchina, dato rà sempre più popolare. Uno degli obiettivi è
che si può aprire e lavorare senza problemi aumentare il più possibile il numero di per-
anche con i progetti del VS2005. Le nuove ca- sone in grado di creare nuovi applicativi, la-
ratteristiche dell’IDE sono comunque disponi- sciando ai programmatori più esperti il com-

N. 78 - Novembre/Dicembre 2007 VBJ 51


REPORTAGE

pito di realizzare blocchi base che potranno R: Questi strumenti possiedono fondamen-
essere poi utilizzati anche da chi è a digiuno talmente le stesse caratteristiche, la differenza
di informatica. più marcata è che gli Expression Tools sono
principalmente rivolti a grafici e creativi, men-
D: Quale è il target di sviluppatori a cui è tre l’editor di Visual Studio è pensato per uno
destinata la versione Professional di Visual sviluppatore. Con entrambi i tool si può acce-
Studio e a chi è invece dedicata la Team dere a tutte le features di WPF, ma natural-
System? mente esistono alcune funzionalità peculiari
R: La versione professional è dedicata agli di un particolare prodotto. Uno degli esempi
sviluppatori individuali; qualsiasi team di svi- più classici è il tool di disegno a mano libe-
luppo, anche piccolo, dovrebbe utilizzare la ra, che non è stato introdotto in Visual Studio
Team System, che fornisce una serie di tool perché è una funzionalità futile per lo svilup-
addizionali per gestire in maniera efficace lo patore, ma indispensabile per un grafico.
sviluppo e la manutenzione degli applicati- L’obiettivo principale degli Expression Tools
vi, tutto naturalmente supervisionato grazie è dare la possibilità ai creativi di lavorare a
al Team Foundation Server. fianco dei programmatori nella maniera più
trasparente possibile. Con questi nuovi stru-
D: Con gli Expression Tools Microsoft ha menti è possibile infatti aprire una solution
introdotto una serie di strumenti per lavora- di Visual Studio e lavorare sugli stessi pro-
re con WPF, ma anche il Visual Studio 2008 getti utilizzati dagli sviluppatori.
contiene un editor per WPF chiamato Cider.
Questi due strumenti hanno le stesse capa-
cità, oppure uno sviluppatore che possiede D: Microsoft ha rilasciato il codice sorgen-
Visual Studio deve comunque utilizzare ad te del Visual Studio ai suoi partner; è pos-
esempio Expression Blend per operare al sibile che in futuro questi sorgenti possano
meglio con WPF? essere disponibili per tutti?

52 VBJ N. 78 - Novembre/Dicembre 2007


REPORTAGE

R: Attualmente non c’è nessun piano in pro- fly, che contiene un tool web con cui si posso-
posito, valutando i feedback che riceveremo no creare piccoli widget Silverlight mediante
dai partner non è escluso che in futuro si de- composizione di blocchi base precostituiti. Per
cida di rendere il codice di Visual Studio di- capire meglio cosa ci si può attendere in fu-
sponibile anche ad un pubblico più ampio. turo è stato intervistato Dan Fernandez, che
si occupa in prima persona di PopFly.
D: Pensa che il rilascio del codice sorgen-
te ai partner possa migliorare anche il Vi- D: Da cosa è nata l’idea di PopFly?
sual Studio e non solo i tool prodotti dai R: Occupandomi in prima persona di Visual
partner stessi? Studio Express mi sono reso conto che è un
R: Penso di si, anche perché stiamo riceven- prodotto con una barriera di ingresso elevata.
do feedback in molti settori differenti. Sicu- Nonostante sia uno strumento gratuito, per
ramente questa sinergia è una collaborazio- utilizzarlo è necessario possedere i rudimenti
ne bidirezionale che a lungo tempo porterà della programmazione dato che si rivolge ad
benefici per entrambe le parti. Lo scopo di un pubblico prevalentemente di sviluppatori.
questa operazione è far si che i partner pos- Questa situazione rende veramente difficile
sano sviluppare tool sempre più performanti aggiungere contenuti Silverlight nei propri
e funzionali da fornire agli sviluppatori. Ave- siti per chi non ha alcuna conoscenza di svi-
re a disposizione il codice interno della IDE luppo software. Tramite Popfly invece chiun-
permette infatti di capire come strutturare al que può aprire un progetto, fare drag and drop
meglio i propri addin, ed inoltre permette di di blocchi base, connetterli tra loro, configu-
avere una assistenza molto più rapida dai no- rarli ed avere cosi la propria applicazione rea-
stri team interni. lizzata in pochi minuti e direttamente dispo-
nibile per essere inclusa nel proprio sito. In
Silverligh e Popfly questo modo la barriera di ingresso è sicura-
mente più bassa e permette ad un pubblico
Silverlight è una delle tecnologie web più in- molto ampio di realizzare contenuti avanzati
teressanti prodotte da Microsoft negli ultimi per le proprie pagine. Dal mio punto di vista
anni. Essenzialmente è costituita da un plugin è una maniera per rendere più democratico
che consente di renderizzare contenuti WPF lo sviluppo web.
lato client sui principali browser oggi in com-
mercio. Con Silverlight il tentativo è aggredi- D: È possibile inserire un widget creato
re la fetta di mercato ora occupata dal Macro- con Popfly nelle proprie pagine web? È ne-
media Flash, dando la possibilità di include- cessario un supporto particolare da parte
re nei propri siti contenuti grafici e multime- dell’hosting?
diali avanzati. Naturalmente per poter utiliz- R: I widget Popfly possono essere introdotti
zare Silverligh è necessario possedere per lo tramite IFrame, un tag standard HTML, per
meno i rudimenti di XAML o in alternativa i cui è facilissimo introdurne uno nel proprio
tool forniti nella suite Expression. Se si vuole sito o nel proprio blog. Questo requisito è sta-
poi fare programmazione lato client per que- to infatti primario perché altrimenti non ci sa-
sta prima versione si deve usare Javascript e rebbe interesse nel creare widget disponibili
nelle future versioni sarà presente un runti- solamente all’interno del sito di Popfly. Per
me .NET che permetterà di usare C#. Tutto semplificare questa procedura è anche sta-
questo fa capire come Silverligh sia un pro- to creato un apposito addin per Visual Stu-
dotto dedicato a chi ha una buona conoscenza dio, chiamato Popfly Explorer, che permette
del Web. Per diffondere maggiormente questa di esaminare la lista dei propri widget diret-
tecnologia Microsoft ha quindi introdotto da tamente dall’IDE ed includerli in una pagina
poco un sito molto particolare, chiamato Pop- web con semplice Drag and Drop.

N. 78 - Novembre/Dicembre 2007 VBJ 53


REPORTAGE

D: Quanti blocchi base sono attualmente re in dettaglio su quelle tecnologie di mag-


disponibili per Popfly? giore interesse.
R: Microsoft ha aperto il sito fornendo qua-
ranta blocchi base, ma chiunque può aggiun- Sviluppo web
gere i propri e renderli disponibili per la com-
munity, qualsiasi utente può infatti scrivere Oltre all’introduzione di Silverlight, che co-
un blocco partendo da zero oppure prendere stituisce senza dubbio la novità più “succosa”,
un componente esistente, copiarlo e modifica- molte sono le novità presenti per gli svilup-
re il codice aggiungendo o modificando fun- patori web. Il nuovo Visual Studio permette
zionalità. Questa filosofia open rende possi- infatti di gestire in maniera più efficiente le
bile a chi è interessato di familiarizzare con pagine web, mostrando una visione doppia
Silverlight attingendo ad un bacino di esem- Codice/Anteprima che semplifica la formatta-
pi molto grande. Modificando i blocchi di al- zione della pagina stessa. Importanti migliora-
tri utenti si possono infatti fare esperimenti menti sono stati introdotti anche nel debugger
per cercare di creare componenti sempre più per Javascript, presente anche nella versione
utili ed efficaci. 2005, ma migliorato nella nuova versione.
Per la tecnologia ASP.NET è stato inoltre in-
D: Popfly è attualmente in beta, Micro- trodotto un nuovo modello di sviluppo che im-
soft prevede di rilasciarlo in maniera uf- plementa il pattern Model View Controller, il
ficiale? cui scopo è disaccoppiare in maniera comple-
R: La dicitura beta ci permette di avere cicli ta la logica applicativa dall’interfaccia. Grazie
di release di nuove funzionalità molto brevi, se a questa tecnica si possono realizzare applica-
il prodotto fosse ad esempio in versione defi- tivi architetturalmente più robusti e si sem-
nitiva ci si aspetterebbe di avere una versione plifica di molto le procedure di unit testing.
2.0 dopo uno o due anni. Quando un prodotto Se da una parte è possibile infatti automa-
è in versione ufficiale è infatti necessario at- tizzare i test delle pagine web tramite brow-
tenersi a delle tempistiche precise e valutare ser, ad esempio con la libreria WatiN, disac-
in maniera molto dettagliata ogni nuova pos- coppiando la logica applicativa si può testare
sibile aggiunta. Popfly invece è un prodotto quest’ultima in maniera indipendente dall’in-
sempre in evoluzione, ci si possono attendere terfaccia e soprattutto è possibile anche simu-
nuove caratteristiche nel giro di alcune set- lare il comportamento delle interfacce stesse
timane e per avere questa libertà il prodotto con i mock object.
deve però essere considerato beta. In sostan-
za non si arriverà mai probabilmente ad una Sicurezza
versione 1.0, ma si continuerà ad aggiungere
nuove funzionalità nel tempo per creare un Che il tema della sicurezza fosse sempre più
prodotto sempre più completo ed in evolu- sentito non era in dubbio ed al TechEd questa
zione continua. sensazione è confermata. Le sessioni sull’ar-
gomento sono molte e spesso tenute diretta-
Le novità principali mente da Michael Howard, autore di impor-
tanti libri sulla sicurezza e responsabile del
Dal punto di vista dello sviluppatore le no- settore di sicurezza in casa Redmond. La no-
vità mostrate nelle varie presentazioni sono vità maggiore presentata è SDL che sta per
sicuramente moltissime, parlare di tutte in Security Developement Lifecycle, un insieme
modo dettagliato è sicuramente proibitivo, per di linee guida e di procedure per gestire la
questa ragione è più interessante focalizzare sicurezza applicativa per tutto il ciclo di svi-
l’attenzione sulle caratteristiche più impor- luppo delle applicazioni. Il concetto più im-
tanti, lasciando al lettore il compito di entra- portante è infatti che la sicurezza applicativa

54 VBJ N. 78 - Novembre/Dicembre 2007


REPORTAGE

non può essere semplicemente “aggiunta” ad mette ad esempio il download del web.config
un prodotto esistente o inserita nelle fasi fi- in cui sono memorizzate in chiaro le creden-
nali dello sviluppo, ma è assolutamente ne- ziali con cui accedere al database.
cessario che sia tenuta in considerazione fin Dati alla mano comunque Howard ha mo-
dalle prime fasi progettuali anche nella rac- strato come l’adozione di SDL all’interno di
colta dei requisiti. Microsoft ha ridotto drasticamente il numero
Importanti sono le innovazioni introdotte di vulnerabilità dei nuovi prodotti, dimostran-
nel compilatore C++, che include una serie done quindi la validità. Il consiglio è compe-
di switch che automaticamente riducono le rare il libro di Howard e tentare di applicare
vulnerabilità derivanti da buffer overflow, sen- SDL al prossimo prodotto o alla prossima re-
za dover modificare il codice scritto. Oltre a lease di un prodotto esistente.
questo sono stati introdotti dei meta attributi,
per permettere al programmatore di specifi- SOA Service Oriented Architecture
care in maniera esplicita alcune caratteristi-
che dei buffer passati alle funzioni, in questo Oramai di SOA si parla ovunque ed il dubbio
modo il compilatore può introdurre una serie è se essa costituisca veramente il futuro o se
di controlli accurati al fine di prevenire pos- sia solamente una moda passeggera, ma ve-
sibili exploit tramite buffer overflow. dendo gli investimenti dei più grandi colossi
Un’altra differenza radicale riguarda il informatici si propenderebbe maggiormente
Thread Modeling, ovvero il processo con cui per la prima ipotesi. Al TechEd si è infatti par-
vengono modellati i rischi applicativi, al fine lato di “Oslo”, il nuovo nome in codice che in
di individuare i punti critici a cui dedicare casa Redmond individua la visione che sia ha
maggiore attenzione. Tale modello infatti sto- del futuro delle applicazioni a servizi.
ricamente modella il sistema dal punto di vi- Molte sessioni sono state dedicate a WCF, in-
sta dell’attaccante, mentre in futuro si pensa trodotto con il Framework 3.0 e che costituisce
di effettuare una modellazione dal punto di l’ossatura base delle future applicazioni SOA
vista del difensore, ovvero di chi il sistema lo in ambiente Microsoft. Grazie a WCF è possi-
gestisce. In questo modo si spera di rendere bile infatti realizzare servizi in maniera indi-
più pratico il processo in modo da appronta- pendente dal trasporto e dal protocollo usato
re possibili contromisure in maniera sempre per la comunicazione, è infatti sufficiente de-
più efficace e rapida. finire il formato dei dati trasmessi e i metodi
In un intervista molto interessante con Ma- esposti dal servizio e lasciare i dettagli relativi
rio Fontana, Microsoft Evangelist ed esperto alla trasmissione ai file di configurazione. In
di sicurezza, è emerso infatti come purtroppo questo modo si può realizzare un servizio che
a data odierna la sicurezza applicativa viene risponde su protocollo http con WS* e SOAP
spesso sottovalutata. In molti ambienti infat- all’esterno, ma usa contemporaneamente un
ti quando si parla di sicurezza si pensa infatti binding TCP più performante per le applica-
solamente a firewall, configurazioni di siste- zioni intranet. Al TechEd nelle varie sessio-
mi ed in generale alla sicurezza perimetra- ni si è parlato degli argomenti più disparati
le. Questo approccio è sicuramente obsoleto, riguardanti WCF, integrazione con Workflow
dato che lo scopo finale è proteggere i propri Foundation, performance, sicurezza, etc.
dati e questo fa si che il punto più critico non Molta attenzione viene posta alla gestione
possono che essere le applicazioni che lavo- dei dati, che sempre più vengono individuati
rano sui dati stessi. L’eccessiva fiducia sul- anche nella loro dimensione “temporale”. In
la sicurezza perimetrale porta infatti a gravi una sessione Pat Helland ha infatti mostrato
dimenticanze, è inutile ad esempio avere un di come, in un modo gestito con servizi, è im-
perimetro virtualmente inviolabile quando un portante che i dati scambiati possiedano un
applicativo web realizzato in ASP .NET per- attributo “temporale”, che permette al servi-

N. 78 - Novembre/Dicembre 2007 VBJ 55


REPORTAGE

zio stesso di elaborarli in maniera corretta. Il });


paragone con la vita reale è quello dei catalo- coll.Add(new Entity() { intV = 2, strV = “Some
ghi di vendita delle ditte per corrispondenza, Test” });
solitamente infatti un catalogo ha una vali- coll.Add(new Entity() { intV = 3, strV =
dità di un certo numero di mesi, ma natural- “ATestS” });
mente l’azienda accetta ordini anche basati
su cataloghi vecchi, ad esempio se al cliente Se si volesse ad esempio selezionare tutte
non è ancora arrivato il catalogo più recente. le entità che hanno il valore della proprie-
In questa situazione è fondamentale per chi tà IntV minore di 2, si potrebbe fare in que-
gestisce l’ordine capire su che catalogo è sta- sto modo:
to basato, in modo da fornire al cliente il ser-
vizio richiesto. IEnumerable<Entity> result = from entity in coll
Queste problematiche non sono presenti where (entity.intV < 2) select entity;
nelle normali architetture client server, dove foreach (Entity ent in result) {
il client richiede dati al server, li elabora in Console.WriteLine(“Selected IntV={0}
maniera praticamente sincrona e presenta al StrV={1}”, ent.intV, ent.strV);
server i dati modificati. In queste strutture le }
problematiche maggiori sono quelle di con- Come si può vedere, la sintassi è veramen-
correnza, ma solitamente si tende ad ignora- te simile a quella di una normale interroga-
re l’aspetto temporale. In un servizio invece zione SQL; la query LINQ è
il chiamante richiede dei dati, ma l’eventuale
invio dei dati elaborati potrebbe essere fatta from entity in coll where (entity.intV < 2)
al server anche giorni dopo. select entity

LINQ La reale potenza di questa estensione risie-


de nella sua integrazione nel linguaggio stes-
Senza dubbio l’introduzione più interes- so ed inoltre permette di interrogare qualsia-
sante dal punto di vista dei linguaggi è stata si tipo di dato, a patto che esista l’apposito
quella di LINQ, Language Integrated Query, provider per LINQ. Ad oggi Microsoft ha in-
un’estensione, presente sia per C# che per Vi- fatti creato altri provider oltre a quello per le
sual Basic, che permette l’interrogazione di in- collection, tra cui la più interessante è senza
siemi di dati con una sintassi SQL-like orien- dubbio LINQ to SQL che permette di inter-
tata agli oggetti. LINQ permette ad esempio rogare una base dati SQL Server e che costi-
di fare query su collezioni di oggetti come in tuisce una sorta di ORM o Object Relactional
questo esempio. Se si ha questa semplicissi- Mapper. Naturalmente non poteva mancare
ma classe anche LINQ to XML che permette di interro-
gare basi di dati in formato XML, sempre che
class Entity { non si preferisca comunque il buon vecchio
public Int32 intV; XQuery e XPath, sui quali però LINQ ha l’in-
public String strV; dubbio vantaggio dell’integrazione con il lin-
} guaggio stesso. In rete si trovano comunque
alcuni esempi, sebbene piuttosto scarni, su
e si crea una nuova collezione di oggetti, uti- come creare il proprio provider, tra gli esem-
lizzando la nuova sintassi del C# 3.0 pi non si può dimenticare un abbozzo primi-
tivo di porting verso Nhibernate con LINQ to
List<Entity> coll = new List<Entity>(); Nhibernate, che permette di usare la sintassi
coll.Add(new Entity() { intV=0, strV=”Test”}); LINQ su una session Nhibernate utilizzando-
coll.Add(new Entity() { intV = 1, strV = “ATest” ne quindi il suo mapping.

56 VBJ N. 78 - Novembre/Dicembre 2007


REPORTAGE

La speranza è che queste nuove tecnologie applicazioni ed il rischio maggiore è quello di


rendano sempre più facile creare architettu- spendere troppo tempo e dovere rifare tutto
re solide per le applicazioni di livello Enter- da capo per una nuova applicazione.
prise che maggiormente possono beneficia- Il Sync Framework permette invece, alme-
re di una visione dei dati sempre più Object no nella sua presentazione, di gestire la sin-
Oriented. cronia in maniera indipendente dal protocollo
di comunicazione usato, ma soprattutto sen-
Sync Framework za legarsi a specifiche basi di dati o formati
di memorizzazione. Grazie ad esso sarà pos-
Come ultima novità al TechEd è stato pre- sibile quindi sincronizzare tra di loro anche
sentato in CTP il Sync Framework, dedicato basi di dati tradizionalmente molto differen-
alla gestione delle problematiche riguardanti ti come Oracle e Sql Server.
la sincronia dei dati. In un mondo dove le pe- Il vantaggio principale è comunque l’unifor-
riferiche divengono più piccole e sempre più mazione delle tecniche di sincronia. Mentre
portatili, è normale elaborare i propri dati su attualmente ogni prodotto adotta le proprie
macchine differenti e diventa cruciale man- soluzioni, grazie al Sync Framework rendere
tenerne la sincronia. Quando si parla di dati compatibile la sincronia tra due prodotti dif-
inoltre non si deve considerare solamente il ferenti dovrebbe essere un procedimento più
classico database relazionale, ma si deve tene- fattibile, dato che entrambi si appoggerebbe-
re anche in considerazione il file system dove ro allo stesso framework di sincronia.
gli utenti memorizzano file video, audio, etc. Purtroppo questa tecnologia è ancora in una
In un panorama così variopinto è difficile per fase piuttosto embrionale dato che è appena
lo sviluppatore creare soluzioni flessibili per in CTP, ma vale comunque la pena iniziare a
mantenere sincronizzati i dati delle proprie valutarne le capacità per progetti futuri.

N. 78 - Novembre/Dicembre 2007 VBJ 57


OFFERTE ABBONAMENTI
2007/2008
RIVISTE CARTACEE OFF
prezzo standard 1 anno 2 anni
€ 128.00 �
ERT
COMPUTER PROGRAMMING
DEV
€ 75.00
€ 75.00
€ 69.00
€ 69.00

� € 128.00 � A
VISUAL BASIC JOURNAL € 52.50 € 49.00 � € 90.00 �
Prez
LOGIN € 52.50 € 49.00 � € 90.00 �
zi v
JAVA JOURNAL € 52.50 € 49.00 � € 90.00 �
alid
7/1 i
/20 fino al
CP+DEV+VBJ+LOGIN+JJ € 312.00 € 250.00 � € 495.00 �

RIVISTE WEB 08
1 anno 2 anni
CP web + archivio € 50.00 € 45.00 � € 70.00 �
DEV web + archivio € 50.00 € 45.00 � € 70.00 �
VBJ web + archivio € 40.00 € 35.00 � € 60.00 �
LOGIN web + archivio € 40.00 € 35.00 � € 60.00 �
JJ web + archivio € 40.00 € 35.00 � € 60.00 �

2 web a scelta + archivio € 80.00 € 60.00 � € 100.00 �


3 web a scelta + archivio € 120.00 € 85.00 � € 140.00 �
4 web a scelta + archivio € 170.00 € 115.00 � € 180.00 �
5 web + archivio € 220.00 € 140.00 � € 200.00 �

INDIRIZZO DI SPEDIZIONE INDIRIZZO DI FATTURAZIONE


(solo per riviste web)
Nome/Società __________________________________________________________ Nome e Cognome _______________________________________________________

Codice Fiscale (obbligatorio) ________________________________________________ Ditta __________________________________________________________________

Indirizzo _______________________________________________________________ Indirizzo _______________________________________________________________

CAP _____________ Città ___________________________________ Prov. ______ CAP ____________ Città _________________________________ Prov. _________

Telefono ____________________________ Fax ______________________________ P.IVA _________________________________________________________________

E-Mail ________________________________@_______________________________ E-Mail per invio fattura _________________________ @ ________________________

Codice Cliente __________________________________________________________

• I prezzi degli abbonamenti Web sono conprensivi dell’ IVA al 20% MODALITA’ DI PAGAMENTO
• I prezzi degli abbonamenti per l’estero sono maggiorati di spese di spedizione. � Allego fotocopia del Bonifico Bancario effettuato sul C/C 000000014804
CAB 25200 ABI 01030 Cin “A” - Monte dei Paschi di Siena - Agenzia di Perignano
• Gli abbonamenti decorrono dal primo numero raggiungibile. IBAN IT84A0103025200000000014804
Per attivazioni retroattive contattaci al numero 0587/736460 o invia una e-mail
all’indirizzo: abbonamenti@gruppoinfomedia.it � Allego fotocopia della ricevuta del versamento sul C/C Postale N.14291561 intestato
a: “Gruppo Editoriale Infomedia S.r.l. - Ponsacco” IBAN IT84X0760114000000014291561

PRIVACY � Allego assegno bancario intestato a: “Gruppo Editoriale Infomedia S.r.l.”


NON TRASFERIBILE
Con la presente si autorizza al trattamento dei dati personali ai sensi delle
vigenti norme sulla privacy � Contrassegno (+ € 11.00 contributo spese postali)
� Autorizzo l’addebito dell’importo di € _____________________ sulla mia CARTASI’/VISA
FIRMA________________________________________________ N. _________________________________________________________________

Scad. ______ / ______ (mm/aa) Codice di sicurezza “CV2” ______________


SI, mi voglio iscrivere gratuitamente alla newsletter Infomedia
che mi tiene aggiornato sui prossimi argomenti delle mie riviste di Nome del Titolare ____________________________________________________
programmazione e mi informa delle offerte, le nuove uscite e le prossime
pubblicazioni. Questo è il mio indirizzo di posta elettronica: Data di nascita ____________________________________________________
______________________________@____________________________ Firma del Titolare ____________________________________________________
Posso annullare la mia iscrizione in qualsiasi momento alla pagina: � Collegati al sito www.shopinfomedia.it dove potrai effettuare il pagamento con
www.infomedia.it/newsletter.htm carta di credito in modalità sicura (banca SELLA)

Garanzia di riservatezza - Gruppo Editoriale Infomedia garantisce la massima riservatezza dei dati da lei forniti e la possibilità di richiederne gratuitamente la rettifica
o la cancellazione scrivendo a: Responsabile Dati - Gruppo Editoriale Infomedia Srl - Via Valdera P. 116 - 56038 Ponsacco (PI). Le informazioni custodite nel nostro
archivio elettronico verranno trattate in conformità alla legge 196/03 sulla tutela dati personali.
L’IVA sul prezzo dell’abbonamento cartaceo è assolta dall’Editore e non sussiste l’obbligo di emissione della fattura, ai sensi del D.M. 9 aprile 1993, art.1, comma 5;
pertanto, ai fini contabili, farà fede la sola ricevuta di pagamento; perciò la fattura verrà emessa solo se esplicitamente richiesta al momento dell’ordine.
Lei può dedurre il costo dell’abbonamento dal reddito d’impresa e dai redditi derivanti dall’esercizio di arti e professioni (artt. 54 e 56 del TUIR)

GRUPPO EDITORIALE INFOMEDIA S.R.L.


Via Valdera P. 116 - 56038 Ponsacco (PI) - Tel. 0587 736460 - Fax 0587 732232
www.infomedia.it - abbonamenti@gruppoinfomedia.it
“Si fa presto a dire sito web”
di Paolo Frattini
Anno 2007
54 pagine a colori, formato A4
ISBN 9788881500222

solo
12,90
Eu ro

Fai il make-up al tuo sito web


con l’ultimo libro di Paolo Frattini

t r u c c h i e c o n s i g li
Scopri regole,
c o m u n i c a r e v i a I nternet
per

“Si fa presto a dire sito web”


Ordinalo su

www.shopinfomedia.com

Potrebbero piacerti anche