5. WINDOWS DNA (Distributed interNet Application)
Windows DNA è una metodologia proposta da Microsoft allo scopo di costruire e sviluppare, nel modo più semplice e completo possibile, applicazioni distribuite su rete di comunicazione, Internet in particolare.
Windows DNA è un modello di sviluppo per la realizzazione di applicazioni distribuite su rete Internet, in architettura client-server n-tier per la piattaforma Windows.
Esso non rappresenta una evoluzione nella tecnologia Microsoft, ma un modo per integrare e meglio utilizzare le tecnologie viste fino ad ora.
Negli ultimi anni, Microsoft ha sfornato una serie di tecnologie basate su un modello stratificato, dove ogni livello è la base per la costruzione del livello superiore. Alcune di esse, più o meno si compensano, coprendosi a vicenda eventuali lacune, ed introducendo funzionalità che le rendono sempre più potenti, dal punto di vista dello sviluppatore. Ora, Microsoft, con Windows DNA, vuole dare una visione d'insieme alle proprie tecnologie, conducendo lo sviluppatore di sistemi distribuiti ad un utilizzo ottimale delle risorse che i sistemi Microsoft possono mettere a disposizione.
Microsoft propone una convergenza tra il modello di computazione client-server e le tecnologie Web. Nella parte introduttiva del trattato, con il paradigma di applicazioni OCSI (Object-Oriented, Client-Server, Internet-Based), sono indicati tutti i vantaggi che ne possono derivare.
La visione Microsoft di questo paradigma è chiamata digital nervous system, il quale consente di integrare le esistenti infrastrutture tecnologiche di una azienda in modo da realizzare un sistema digitale che consente una miglior gestione ed utilizzo delle risorse informative aziendali.
Il paradigma Windows DNA è stato studiato per permettere di realizzare un digital nervous system sulla base di sistemi aziendali già esistenti ed operanti.
I benefici che Windows DNA può offrire sono di seguito esposti.
- Integra ed estende i sistemi esistenti. Permette di realizzare una interoperabilità con le esistenti applicazioni e sistemi legacy, consentendo quindi di proteggere gli investimenti aziendali. Ovviamente dispone di tools per lo sviluppo di nuovi sistemi per estendere ed ottimizzare i già esistenti sistemi aziendali.
- Dispone di tools per lo sviluppo di sistemi distribuiti. Windows DNA fornisce un ampio set di servizi ed infrastrutture per la realizzazione di applicazioni distribuite. Tale insieme di servizi sono messi a disposizione dalle tecnologie su cui si basano le piattaforme Windows. Servizi Web, sicurezza, directory, gestione delle transazioni, gestione delle comunicazioni asincrone (code di messaggi) e management di sistema, per elencarne alcuni.
- Fornisce un'elevata flessibilità. L'utilizzo dell'infrastruttura COM, alla base di tutta la tecnologia Microsoft, consente la realizzazione di componenti indipendentemente dalla locazione in cui verranno posti, al momento della esecuzione della applicazione. Inoltre, tale indipendenza, consente di lasciare sempre una porta aperta verso nuove funzionalità da inserire nel sistema, oppure verso modifiche di funzionalità esistenti. Infine, COM permette il riuso dei componenti, tramite tecniche analizzate nel capitolo precedente.

5.1 ARCHITETTURE 3-TIERS
Il primo passo di Microsoft è quello di adattare il paradigma client-server al Web.
Il modello client-server è un approccio che consente di suddividere i compiti di una applicazione distribuita in modo da fornire la massima efficienza di esecuzione.
Se si dispone di macchine client molto potenti, è più sensato procedere ad una preelaborazione delle richieste client, direttamente sul client.
Se invece si dispone di semplici terminali, l'unico posto su cui è possibile una elaborazione è il server.
In realtà, i processi di una applicazione distribuita possono essere suddivisi in differenti compiti: presentazione, elaborazione delle richieste, accesso ai dati, come abbiamo già visto nella Introduzione.
Nel primo caso (fat client), sul client sono raggruppate le componenti che implementano la logica applicativa e di presentazione. I limiti di tale modello sono facilmente individuabili: applicazioni client sono monolitiche, difficili da scalare e da gestire, difficili da riutilizzare perché fortemente legate alla sorgente dei dati, e offrono infine basse prestazioni di rete.
Nel secondo caso (thin client), sul client è presente la sola parte di presentazione della applicazione. Quindi, le elaborazioni avvengono sul server, migliorano così la sicurezza e la scalabilità, e aumenta la possibilità di condivisione del codice. I limiti di questo approccio riguardano forte dipendenza del sistema dalla velocità di accesso ai dati. Se questa fosse lenta, allora ne risentirebbe l'intero sistema.
"thin client" "fat client"
Si introduce il modello 3-tiers (o n-tiers in generale) per poter separare logicamente le parti di presentazione, elaborazione ed accesso ai dati.
In tal modo si separa la logica di una applicazione, dalla sua presentazione e dall'accesso ai suoi dati.
I benefici sono sia riguardo le prestazioni di un tal sistema, sia riguardo gli sviluppatori del sistema, i quali potranno progettare separatamente le varie parti dell'applicazione per poi unirle nel modo più performante solo in un secondo momento.
Questo modello consente infatti un miglior bilanciamento del carico di lavoro, un accesso più efficiente ai dati, un miglioramento della sicurezza del sistema e la possibilità di poter accedere anche a risorse esterne.
Il generico sistema distribuito che Microsoft propone di realizzare con Windows DNA è un sistema che utilizza un insieme standardizzato di servizi Windows che gestiscono l'interfaccia utente, i processi business (la logica applicativa) e l'accesso ai dati.
Nella figura precedente si nota che la tecnologia utilizzata è la stessa analizzata nel precedente capitolo.
Per la parte di presentazione è possibile utilizzare il canale DCOM, oppure un qualsiasi Web browser, tramite i controlli ActiveX. E' da notare come l'utilizzo di Web browser come tramite di presentazione di una applicazione distribuita, la rende assolutamente in grado di operare (almeno per la presentazione) su qualsiasi tipo di macchina. Ovviamente, l'integrazione con i controlli ActiveX richiede la presenza di una infrastruttura COM.
La parte business, o logica dell'applicazione, è realizzata da componenti COM, i quali hanno il compito di elaborare le richieste dei client e le risposte dei sistemi dati, oltre che contenere la logica delle operazioni. Tali componenti COM, possono eventualmente essere coordinati da sistemi MTS e MSMQ. Abbiamo già visto che l'infrastruttura COM+ supporta in modo trasparente entrambe le possibilità.
Infine, la parte dati può essere rappresentata da qualsiasi database a cui è consentito l'accesso tramite lo standard SQL.
Analizzeremo di seguito, più in dettaglio questa architettura.

5.2 ARCHITETTURA DI Windows DNA
Il modello Microsoft per lo sviluppo di applicazioni enterprise è composto da 3 strati (tier) - Presentation, Business Logic e Data ai quali si aggiungono strumenti e servizi di sistema.
Il partizionamento di una applicazione in più strati che cooperano tra loro implica un aumento della scalabilità e rende il sistema più facile da gestire, da modificare e da estendere.
Questi tre strati applicativi introducono una suddivisione dei compiti all'interno di una applicazione. Essi sono logicamente scorrelati, nel senso che sono indipendenti tra loro, e fisicamente distribuiti all'interno di una rete di comunicazione. Nulla vieta di distribuirli su n-server, da cui deriva il nome n-tier.
Come ogni applicativo Windows, anche il cuore di Windows DNA è l'architettura COM. L'unica eccezione, come ho già accennato, riguarda il presentation tier tramite Web browser.
Windows DNA offre una serie di servizi di sistema e tools di sviluppo per consentire agli sviluppatori di realizzare applicazioni distribuite su Web.

5.3 SERVIZI DEL PRESENTATION TIER
Il livello di presentazione si occupa di raccogliere l'informazione dagli utenti del sistema, spedirla al livello di elaborazione, ricevere i risultati e presentarli all'utente finale.
I servizi di presentazione che le piattaforme Windows offrono ai propri utenti sono molteplici. Si può quindi scegliere il tipo di presentazione più consona ai mezzi che si hanno a disposizione:
- HTML
- Scripting
- Dynamic HTML (DHTML)
- Componenti
- Win32 API
HTML
Strumento standard potentissimo in termini di sistemi eterogenei, dato che ormai qualsiasi sistema commerciale supporta l'utilizzo di Web browser.
Scripting e DHTML
I linguaggi script consentono di eseguire semplici operazioni all'interno di Web browser, solitamente riguardanti il solo aspetto di presentazione dei dati.
DHTML permette di scrivere codice HTML e di modificarlo dinamicamente. In pratica una pagina HTML viene vista come un oggetto, i cui attributi sono modificabili e consentono di ottenere diverse viste della stessa pagina.
Il risultato sono delle pagine Web che cambiano dinamicamente, senza la necessità di operazioni di refresh da parte del server Web.
Queste tecnologie permettono agli sviluppatori di realizzare, a livello presentazione, semplici azioni basate su Web browser, ad esempio per l'inserimento dei dati o per la loro rappresentazione. Il tutto senza utilizzare appositi controlli (es. ActiveX) o applet.
Componenti
Quando le operazioni possibili con scripting e DHTML non sono sufficienti si richiede l'utilizzo di unità in grado realizzare operazioni più complesse.
Un modo per ottenere questo è tramite i componenti COM. Questo consente agli sviluppatori di realizzare la parte di presentazione della loro applicazione un po' più sofisticata, in grado ad esempio di effettuare delle preelaborazioni sulle richieste, delle valutazioni sui risultati o addirittura altre richieste client-server remote.
Win32 API
Win32 API è l'interfaccia per la programmazione di applicazioni che dà accesso alle risorse del sistema operativo Windows.
Utilizzando le funzionalità di libreria Win32 API, si possono ottenere comportamenti simili ai componenti. Rispetto al caso precedente, la differenza è che il raggio d'azione, utilizzando questa libreria, è limitato alla piattaforma che supporta tali API. Con i componenti, invece si poteva usufruire in modo esteso della tecnologia Internet.
Non tocca a me dare un giudizio sulle funzionalità di sistema operativo messe a disposizione dalla Microsoft, ma non è la prima volta che qualche produttore di software si lamenta della ristrettezza e limitatezza di tali funzionalità. (Questo è anche uno dei motivi del successo che sta avendo LINUX).

5.4 SERVIZI DEL BUSINESS LOGIC TIER
Il livello di logica della applicazione è il cuore del sistema distribuito.
Esso si occupa di ricevere le informazioni dal livello di presentazione, interagire con i servizi dati in modo da realizzare le operazioni richieste ed infine restituire i risultati al livello presentazione.
Tramite la tecnologia COM+, essi si suddividono in
- Servizi Web
- Servizi COM e MTS (COM+)
- Servizi di messaggistica (per le comunicazioni asincrone)
Servizi Web
Abbiamo già visto come Internet Information Server (IIS) rappresenta un gateway per la tecnologia DCOM sul Web, mentre ASP permette di realizzare applicazioni server dinamiche ed interattive, mediante l'utilizzo combinato di DHTML, scripting e componenti.
Servizi COM e MTS (COM+)
La tecnologia COM+ ha consentito di unificare sotto un'unica infrastruttura il concetto di componente COM e di transazione. Questo consente di effettuare operazioni transazionali complesse, garantendo le proprietà ACID.
Servizi di messaggistica
Quando si ha la necessità di operare in modo asincrono, COM+ mette a disposizione un servizio di comunicazione basato sulle code di messaggi, offerto da MSMQ.

5.5 SERVIZI DEL DATA TIER
Il livello dei dati si occupa della memorizzazione , del recupero, della manutenzione e della integrità dei dati del sistema distribuito.
L'accesso ai dati universale è una strategia Microsoft (e non solo) per poter fornire l'accesso alla informazione aziendale, indipendentemente dalla sorgente informativa, compresi dati relazionali e non.
Microsoft propone due metodi di accesso universale, uno proprietario ed uno standard:
- ActiveX Data Objects (ADO)
- Extensible Markup Language (XML)
ADO
Tramite il meccanismo dei controlli ActiveX, si può realizzare dei meccanismi di accesso indipendenti dal prodotto a cui ci si riferisce.
Tale tecnologia, necessita però dell'infrastruttura di COM.
XML
E' uno standard ormai ampiamente esteso per la rappresentazione dei dati su Web.
Diviene quindi un ottimo formato per il trasferimento dei dati strutturati e non, per comunicazioni sia tra entità di tipo proprietario che di tipo eterogenee.

5.6 TOOLS DI SVILUPPO
Microsoft associa a Windows DNA dei tools che consentono ai progettisti un ambiente CASE per lo sviluppo di applicazioni distribuite.
L'ultimo nato, Visual Studio, fornisce un insieme di funzionalità che permettono di coprire tutti gli aspetti dello sviluppo di applicazioni Windows DNA.
Si spazia dal progetto di applicazioni multi-tiers alla realizzazione di interfacce utente, dallo sviluppo e assemblaggio di componenti al progetto di database, e dal supporto per lo sviluppo di team all'analisi delle prestazioni.
Insomma, Microsoft propone dei completi tools di sviluppo per applicazioni che seguono il paradigma di Windows DNA.

5.7 ANALISI DI WINDOWS DNA
Windows DNA è stato progettato (parola di Microsoft) per ottimizzare le seguenti caratteristiche in una applicazione distribuita sul Web:
- Autonomia
- Affidabilità
- Disponibilità
- Scalabilità
- Performance
- Interoperabilità
- Sicurezza
- Management
Analizziamo più in dettaglio se i risultati raggiunti sono quelli voluti.

5.7.1 Autonomia
Autonomia è la capacità di una applicazione distribuita di governare e controllare le sue risorse critiche, ovvero quelle risorse necessarie al funzionamento affidabile ed indipendente dell'applicazione (connessioni a database, transazioni, connessione a mainframe, ecc.).
Le applicazioni non autonome hanno un controllo minimo o nullo sulle proprie risorse critiche, ovvero i client hanno l'accesso diretto sulle risorse. l risultati sono comportamenti inaspettati ed indesiderati, come l'aggiornamento parziale di dati condivisi o l'esaurimento delle risorse, e quindi una compromissione della stabilità della applicazione.
Windows DNA, tramite il modello 3-tier, offre un controllo totale sulle risorse critiche, quindi i client non accedono mai direttamente alle risorse, ma effettuano richieste di ben precisi servizi business che richiedono a loro volta l'accesso a risorse critiche.
Autonomia è quindi conseguenza del modello 3-tier, al quale si deve la stabilità delle applicazioni.

5.7.2 Affidabilità
L'affidabilità è la capacità di una applicazione di restituire risultati accurati. In un ambiente distribuito e multiutente, garantire l'affidabilità delle operazioni non è di poco conto. Microsoft, con COM+ (che ingloba la tecnologia COM e MTS) fornisce uno strumento per rendere affidabili le transazioni, e in altre parole, per garantire le proprietà ACID delle transazioni. Quindi, affidabilità in Windows DNA è sinonimo di MTS.

5.7.3 Disponibilità
La disponibilità si riferisce all'intervallo di tempo durante il quale una applicazione può far fronte in modo affidabile alle richieste dei client. E' una proprietà molto importante, perché una applicazione è utile solo quando è disponibile alle richieste dei client.
La disponibilità di una applicazione dipende da molti fattori: hardware, software o network.
Per aumentare la disponibilità hardware e software è necessario implementare sistemi ridondanti, fault-toilerant per quanto riguarda i sistemi fisici e in grado di reindirizzare le richieste in caso di errore software.
Microsoft mette a disposizione il sistema MSC (Microsoft Cluster Server), il quale si crea una mappa delle risorse logiche e fisiche del sistema, in modo che se una qualsiasi di esse genera un malfunzionamento, allora automaticamente provvede a rendere il servizio disponibile in un altro nodo del sistema (preventivamente duplicato).
Per quanto riguarda la disponibilità di rete, un modo proposto da Microsoft per simulare una maggior disponibilità è di utilizzare il servizio MSMQ. Tramite il servizio di code di messaggi offerto da MSMQ, è infatti possibile disaccoppiare il momento della invocazione di un servizio da parte di un client dal momento in cui tale servizio sarà effettivamente inviato sulla rete. In tal modo il client può non accorgersi di una momentanea caduta della rete. Inoltre, MSMQ dispone di un meccanismo di reindirizzamento dinamico che gli permette di far fronte alle richieste utilizzando reti alternative.

5.7.4 Scalabilità
La scalabilità di un sistema rappresenta la ricerca di un aumento lineare delle prestazioni corrispondente ad un pari aumento delle risorse a disposizione.
Essa consente di adattare un sistema ad un numero variabile n di utenti semplicemente aumentando o diminuendo le risorse del sistema, ovvero scalandolo.
Il termine ormai internazionale "throughput" indica la quantità di lavoro misurata in transazioni, generate da un client, alle quali una applicazione può rispondere in un certo periodo di tempo. Viene tipicamente espresso in termini di transizioni per secondo (tps).
La scalabilità è quindi la misura della variazione del throughput di un sistema, risultante ad un incremento o decremento delle sue risorse. Gli sviluppatori di applicazioni devono perciò concentrare i loro sforzi nel massimizzare il throughput in modo da aumentare la scalabilità. Un modo per aumentare la scalabilità di un sistema può essere ridurre l'acquisizione delle risorse ed il loro tempo di utilizzo.
Per ottenere questo è necessario evitare l'interazione dell'utente e della rete in una transazione, condividere le risorse acquisendole il più tardi possibile e rilasciandole il più presto possibile ed utilizzare tecniche di pooling per risorse scarsamente numerose o costose.
Microsoft propone anche di utilizzare il sistema MSMQ per aumentare la scalabilità.
In tal modo un numero non precisato di server possono essere aggiunti per elaborare le richieste accodate e diminuire i tempi di risposta. Inoltre, tale soluzione implica anche un bilanciamento dinamico del carico del sistema.

5.7.5 Performance
Uno studio sulle performance di un sistema basato sul paradigma Windows DNA è stato fatto dal National Software Testing Laboratories Inc. (NSTL).
Tale studio si è fondato sulla determinazione delle caratteristiche di scalabilità di un sistema, avendo come variabile il numero degli accessi simultanei effettuati da utenti Web, verso l'applicazione.
Il sistema sotto test è una normale applicazione distribuita su Web, secondo il paradigma di Windows DNA. Elenchiamo di seguito il sistema di sviluppo e le tecnologie utilizzate:
- Microsoft® Visual Studio® development system per il presentation tier
- Visual Basic® development system 6.0
- Visual InterDev™ Web development system 6.0
- ActiveX® Data Objects (ADO) 2.1
- Microsoft Windows NT® Server 4.0 Enterprise Edition per il business tier
- Internet Information Server 4.0 and Active Server Pages
- Microsoft Transaction Server
- Windows NT Load Balancing Service
- Microsoft SQL Server™ 7.0 Standard Edition per il data tier
Le seguenti figure rappresentano il tempo medio di risposta per pagina Web, a diversi livelli di carico del sistema.
Questa figura rappresenta quante pagine al secondo (interazioni Web) sono processate utilizzando quattro server applicativi, come parte front-end.
Questa figura mostra come l'andamento tra il carico di lavoro e l'utilizzo di più server applicativi per far fronte alle richieste sia più che lineare. In particolare, mostra come deve avvenire l'utilizzo di server per ottenere una risposta media di non più di 1 secondo per pagina.
In sostanza, il meccanismo proposto da Microsoft per ottenere la scalabilità di un sistema distribuito è l'utilizzo di front-end server replicati con un meccanismo di distribuzione delle richieste, ad esempio tramite opportune configurazioni del DNS (Domain Name Server) che consentano di accedere ai servizi della applicazione in modo bilanciato, utilizzando tutte le repliche disponibili dei front-end system.
Un altro modo proposto da Microsoft è quello di utilizzare la replicazione sia dei front-end che dei back-end system, in modo da ottenere un bilanciamento del carico esteso a tutte le parti della applicazione.
Inoltre, Microsoft propone anche dei meccanismo per accedere anche ad informazioni contenute nella rete interna aziendale, e quindi al massimo livello di sicurezza. Tali meccanismi, supportati da una ovvia infrastruttura di security, possono essere sincroni o asincroni, tramite l'utilizzo di MSMQ.
In conclusione, l'architettura 3-tiers o in generale n-tiers, consente al progettista di un sistema distribuito ampio margine di scelte progettuali, a seconda dei punti di forza che vuole conferire alla sua applicazione. Per capirci meglio, un applicazione distribuita che consente l'accesso a migliaia di utenti giornalmente, con la possibilità di raggiungere informazioni contenute al livello della rete aziendale più interna, che utilizza meccanismi di replicazione e bilanciamento del carico, sarà sicuramente performante, ma non avrà sicuramente la sicurezza come punto di forza.
Come al solito, sarà compito del progettista quello di cercare un compromesso tra le qualità che vorrà conferire alla applicazione che vuole realizzare.

5.7.6 Interoperabilità
L'interoperabilità è la capacità di un sistema di essere adattabile a qualsiasi piattaforma commerciale in modo da poter essere realizzato indipendentemente dalla piattaforma che poi lo ospiterà.
Anche se sono disponibili versioni della infrastruttura COM anche su sistemi non-Windows, rimane indubbiamente il punto debole della tecnologia Microsoft.
COM è alla base di qualsiasi meccanismo di Windows DNA e offre un potente ambiente di sviluppo per applicazioni distribuite. Ma COM è di origine fortemente proprietaria.
Non si può affermare che i sistemi Microsoft siano interoperabili e piattaforma-indipendenti.

5.7.7 Sicurezza
La sicurezza di un sistema provvede a fornire una adeguata protezione verso la confidenzialità, la privatezza, l'integrità e la disponibilità dell'informazione.
La tecnologia Microsoft di sicurezza utilizza domini di sicurezza multipli, in cui i sistemi sono posti a seconda delle loro necessità di sicurezza. Ogni dominio viene protetto poi da un meccanismo in grado di filtrare le informazioni che provengono dalla rete, i firewall.
I tre principali domini, ognuno separato da un firewall, sono:
- La rete pubblica (Internet) in cui sono posti gli utenti finali dei servizi (Web client)
- Una zona chiamata, dalla terminologia militare, DMZ (zona demilitarizzata) in cui sono posti i server che costituiscono il cuore dei servizi Web del sistema (front-end system), e i server che mantengono i dati delle applicazioni o rendono possibili connessioni con altri sistemi di dati (back-end system).
- Una rete sicura aziendale dove i dati dati vengono creati, immagazinati, gestiti ed infine resi disponibili ai sistemi back-end.
La situazione è ben rappresentata dalla seguente figura.
Rispetto ai sistemi tradizionali, operanti su Intranet aziendali o su reti LAN, le applicazioni Web hanno una porta sul mondo aperta in ogni momento del loro funzionamento: la rete Internet. Sono necessari quindi meccanismi di certificazione e autenticazione di chi accede ai servizi dell'applicazione, servizi di protezione della consistenza e dell'integrità dei dati che viaggiano da e verso l'applicazione, e servizi di garanzia di provenienza del codice che viene caricato ed eseguito sull'applicazione, a livello di front-end system (pensare ai controlli ActiveX).
Un modo per facilitare questi obiettivi è utilizzare una partizione del sistema in domini di sicurezza, ovvero regioni in cui la sicurezza è garantita ad un certo livello.
Sistemi complessi possono scegliere una suddivisione multipla, assegnando svariati livelli di sicurezza ad ogni parte del sistema. Suddivisioni più ragionevoli ed utilizzate per normali sistemi Web si fondano sulla proposta raffigurata sopra, e cioè tre regioni di sicurezza.
I domini hanno la possibilità di essere mutuamente esclusivi oppure sovrapposti. Il secondo caso è molto utile in situazioni in cui ho dati di sicurezza elevata mantenuti da sistemi di sicurezza blanda. Necessito di controlli addizionali come ad esempio tecniche di crittografia.
I firewall sono meccanismi per controllare il flusso dei dati tra due parti di una rete poste a differenti livelli di sicurezza. Possono operare su singoli pacchetti IP, consentendo quindi a specifici indirizzi IP di comunicarsi, oppure possono focalizzarsi a livello applicativo, analizzando l'informazione giunta e decidendo di conseguenza se è accettabile o no.
La sicurezza di un sistema è un obiettivo difficile da raggiungere pienamente. La suddivisione in domini di sicurezza e l'utilizzo dei firewall è solo un meccanismo proposto per ottenere un certo livello di sicurezza, ma non è sicuramente sufficiente ad assicurarsi una completa protezione da intrusi ed accessi pericolosi al sistema.
Il problema della sicurezza riguardo al controllo sugli accessi e alla privatezza delle comunicazioni può essere comunque risolto con una certa infrastruttura costruita sulla base della applicazione distribuita, tramite meccanismi di dominio, firewall, crittografia, e gli stessi meccanismi di basso livello messi a disposizione da DCOM.
Il problema sostanziale relativo alla sicurezza Microsoft, riguarda l'ultima generazione delle sue tecnologie: i controlli ActiveX.
Dal punto di vista della potenza computazionale e della facilità di utilizzo sono una utilissima ed efficace tecnologia per realizzare applicazioni distribuite. Dal punto di vista della sicurezza e del controllo che può avere su di loro un sistema che li esegua tramite un semplicissimo Web browser, sono pessimi. Microsoft, a tal proposito, non si è posta neanche l'obiettivo di rimediare al problema. L'unico sforzo è stato realizzare dei meccanismi che riescano a garantire la provenienza del codice, ma che assolutamente non si preoccupano del vero problema, e cioè di cosa fa e come controllare il codice ActiveX.
Tutto questo rende fondamentale la parte progettuale dei sistemi di sicurezza di un sistema basato sul paradigma Windows DNA.
Il risultato è sicuramente un aumento dei tempi di progetto di un sistema distribuito, che Microsoft definisce minimali, e potrebbe anche essere una riduzione delle prestazioni del sistema, dovute al sovraccarico della infrastruttura di sicurezza realizzata sulla base della applicazione distribuita.

5.7.8 Management
Tutte le incertezze relative alle reali prestazioni di un sistema in esecuzione, alle sue disponibilità di risorse ed altre ancora, rendono necessarie molto spesso ulteriori infrastrutture da associare alla applicazione di partenza: il management del sistema. Il suo compito primario è mantenere un certo grado di disponibilità del sistema, rispetto alle richieste dei client, facendo attenzione anche alle performance delle risposte ai servizi. Esso, in pratica, deve monitorare il sistema in modo da migliorarne l'infrastruttura (disposizione dei fornitori dei servizi in rete) e identificarne i problemi prima che accadano, in modo da prevenirli (o al massimo risolverli una volta accaduti).
Il management è essenziale soprattutto in grandi applicazioni Web, fortemente distribuite sulla rete e quindi poco controllabili se non si utilizza un sistema apposito a questo scopo.
Il paradigma di management utilizzato in rete è quello MAMO (Manager / Agent / Managed Object), che consente una gestione senza troppo intasare il sistema di comunicazione già utilizzato dalla applicazione per effettuare i suoi servizi.
