Blog Stats
  • Posts - 75
  • Articles - 0
  • Comments - 132
  • Trackbacks - 85

 

mercoledì 23 luglio 2008

Routing a livello applicativo in IIS7

Il 14 Luglio avevo scritto l'articolo Accesso a TFS da Internet attraverso un reverse proxy in cui raccontavo come usare un Apache server in veste di reverse proxy per accedere da Internet ad un Team Foundation Server. In quell'articolo raccontavo che avevo scelto Apache per la facilita' con cui realizzare un proxy server rispetto ad utilizzare un ISA Server, il quale in questo caso sarebbe stato il classico cannone per uccidere al mosca.

Oggi invece mi devo ravvedere soprattutto alla luce dell'uscita di un nuovo modulo per IIS 7 : Application Request Routing attualmente in versione CTP1. Si tratta di un modulo proxy con capacita' anche di load balancing che pero' fa routing a livello 7 anziche livello 4. Basta specificare delle semplici regole per realizzare un routing a livello HTTP. Era quello che mancava ad IIS e che aggiunge quelle funzioni che erano tipiche dei moduli modproxy, modloadbalance, modproxyhttp di Apache.

Rimando ad un articolo di Scott Hanselman per approfondimenti : New Modules for IIS7: Application Request Routing - Proxy and Load Balancing Module

Mentre per il download diretto : Application Request Routing CTP1 - X86 o X64

giovedì 17 luglio 2008

Seagate difettosi

Oggi porto un hard disk rotto presso una ditta di recupero dati sperando che possano farlo resuscitare. L'addetto guarda il disco e mi dice: questa serie di dischi nei tagli da 200, 250 e 500 GB sono difettose e si disallinea facilmente la testina per cui il recupero è possibile solo in camera bianca, il che richiede una spesa molto elevata.

Se avete dei Seagate Barracuda 7200 nei tagli sopra citati fate subito un backup.

lunedì 14 luglio 2008

Accesso a TFS da Internet attraverso un reverse proxy

Esperienze di configurazione di un reverse proxy per accedere da Internet ad un server TFS.

Problema: Si vuole permettere l’accesso da Internet ad un server TFS situato in una rete locale in modo da consentire la continuità delle attività anche in un contesto extranet.

Vantaggi: lo sviluppatore può lavorare in totale mobilità localizzandosi dove meglio preferisce purchè connesso ad Internet; accesso ai dati di progetti al di fuori della rete locale; non dover usare la modalità di lavoro offline di Visual Studio

Svantaggi: si lavora troppo (ma come? Dopo l'abolizione della scala mobile la nuova moda lanciata dai sindacati  è quella di aumentare la produttività per riportare i salari italiani allo stesso livello di quelli europei. Quindi muti e lavorate ! ... anche di notte)

Analisi: Il problema dell’accesso extranet a risorse aziendale è ben noto e risolto elegantemente ricorrendo a RAS e VPN. Ma volevo trovare una soluzione più semplice e mirata solo al server TFS + TSWA (TSWA e’ un’applicazione che espone i contenuti di TFS attraverso un portale web).

Soluzione: Ho pensato di utilizzare un meccanismo di reverse proxy. La prima soluzione tentata si basava su ISA server, ma ho desistito quasi subito: troppo complicato da configurare e troppo esagerata come soluzione; a me serve solo un reverse proxy mentre ISA è molto di più. Ripiego allora su Apache che mi risolve egregiamente il problema con poco sforzo e poche risorse impiegate. Infatti posso utilizzare un vecchio pc anche poco performante con solo Windows XP.
Ecco la procedura per configurare un server Apache come reverse proxy per un server TFS.

Un server TFS ha bisogno di 3 cose per essere utilizzato dal client explorer di Visual Studi o altri tool basati su esso (es: Sidekicks) :

1) l’accesso ai web services,

2) l’accesso al portale Sharepoint dei contenuti,

3) l’accesso al portale di configurazione di Sharepoint. In più se c’è anche TSWA allora ci vuole anche un accesso a questo portale.

Il reverse proxy deve permettere l’accesso a tutte queste risorse discriminando in base al numero di porta. I web services usano la porta 8080, il portale Sharepoint la porta 80 mentre quello di configurazione usa una porta che veniva scelta in fase di installazione del server TFS e che bisognava aversi salvato ed era un numero abbastanza strano tipo 31932.

Procediamo. Per prima cosa bisogna installare Apache, io ho utilizzato la 2.2.6. Poi bisogna modificare il file httpd.conf nel seguente modo:

# Listen: Allows you to bind Apache to specific IP addresses and/or ports
Listen <REVPROXY_SERVER_IP>:8080
Listen <REVPROXY_SERVER_IP>:80
Listen <REVPROXY_SERVER_IP>:31932 
 
# LoadModule: Allows you to use the functionalities of an external module
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so 
 
# 'Main' server configuration
NameVirtualHost *:8080
NameVirtualHost *:80
NameVirtualHost *:31932 
 
# VirtualHost
<VirtualHost *:8080>
ServerName <REVPROXY_SERVER_IP>
RewriteEngine On
ProxyVia Block
ProxyPreserveHost On
RewriteRule ^/(.*)$ http://<TFS_SERVER_IP>:8080/$1 [P,L]
</VirtualHost> 
 
<VirtualHost *:80>
ServerName <REVPROXY_SERVER_IP>
RewriteEngine On
ProxyVia Block
ProxyPreserveHost On
RewriteRule ^/(.*)$ http:// <TFS_SERVER_IP>/$1 [P,L]
</VirtualHost> 
 
<VirtualHost *:31932>
ServerName <REVPROXY_SERVER_IP>
RewriteEngine On
ProxyVia Block
ProxyPreserveHost On
RewriteRule ^/(.*)$ http:// <TFS_SERVER_IP>:31932/$1 [P,L]
</VirtualHost> 
 
# ServerName gives the name and port that the server uses to identify itself.
ServerName <REVPROXY_SERVER_IP>:8080

Il resto del file httpd.conf non deve essere modificato.

E TSWA ? Dipende come si installa. Io l’ho installato sulla stessa porta dei web services riutilizzando in tal modo la porta 8080 ma si potrebbe dedicarci una porta ad hoc nel qual caso bisogna aggiungere una voce in più a quelle presentate sopra.

Lato Team Foundation Server bisogna intervenire su tutte le virtual directory in IIS per aggiungere l’autenticazione Basic. Questa è una forte semplificazione che ho fatto che lascia aperta qualche problema di sicurezza, ma non lavoro per i militari quindi un certo rilassamento e’ tollerato. Per una soluzione piu’ sicura bisognerebbe pensare almeno a delle connessioni SSL.
Dunque, dicevamo che in una installazione sigle server di TFS ci saranno 3 web sites: Share Point Central Administration, Default Web Site e Team Foundation Server. Il secondo contiene 2 virtual directories: Reports e ReportServer mentre il terzo contiene 5 virtual directories : Build, Services, VersionControl, Warehouse, WorkItemTracking. In piu’ come detto ho scelto di installare la virtual directory tswa.
Nelle 7 virtual directories sopra citate piu’ nel Share Point Central Administration web sites bisogna aggiungere la Basic Authentication mentre in tswa bisogna abilitare solo l’anonymous access essendo un generico portale web.

A questo punto il reverse proxy si comporta come se fosse il server TFS vero, quindi tutti i riferimenti nei progetti devono puntare al server TFS. Tuttavia mi piacerebbe lasciarmi la possibilità di poter accedere a TFS anche senza proxy. La soluzione e’ quella di aggiungere, su tutti i client che vogliono usare il nostro proxy, un nome simbolico, per esempio TFSERVER, al file hosts associandolo all’indirizzo del reverse proxy server. Quando creo un nuovo progetto o ci faccio riferimento dovro’ sempre usare come nome del server TFSERVER. Il file hosts si trova di solito sotto c:\windows\system32\drivers\etc ma potete trovarlo velocemente con il Search di Windows.

Fonti: Per comprendere il reverse proxy mi è stata utile questa lettura : https://www2.sans.org/reading_room/whitepapers/webservers/302.php

lunedì 16 giugno 2008

SideShow for Windows Mobile

SideShow era una di quelle killer technologies apparse insieme a Vista che promettevano di far girare delle mini applicazioni (gadgets) su un pc o portatile spento per accedere ad esempio alla posta, alla musica, agli appuntamenti, ecc.

Ci voleva ovviamente un nuovo tipo di PC o portatile con "appiccicato" un pezzo di HW nuovo con un piccolo display LCD da usare per leggere i dati estratti dal PC. Di questo genere di nuovi PC non se ne sono visti molti. Peccato perchè l'idea era buona. A mitigare un po' questa mancanza arriva questa applicazione per Windows Mobile 5 e 6 che trasforma il cellulare in un dispositivo SideShow che può comunicare in Bluetooth con il computer su cui sono installati i gadgets SideShow. Se avete installato Office 2007 su Vista e andate a guardare il programma "Windows SideShow" avrete una finestra tipo questa :

VistaSideShow

in cui trovate 3 programmi installati di default che permettono di accedere alla email, al calendario ed al Media Player mentre Countdown e PowerPoint Remote sono stati scaricati dalla SideShow Gadget Gallery. Il cellulare si comporta come un telecomando per comandare la musica da ascoltare sul PC o per cambiare la slide di una presentazione Powerpoint.

Questo è un altro elemento di distinzione di Windows Mobile rispetto al resto dei cellulari più o meno ifonici. Personalmente spero che anche Zune diventi un dispositivo SideShow e magari anche compatibile con LiveMesh fingerscrossed

Ecco il link per scaricare SideShow for Windows Mobile Developers Preview

Technorati Tags: ,

mercoledì 28 maggio 2008

penetrazione .NET

Mi sono deciso a scrivera questa considerazione dopo aver letto l'articolo di Simone Chiaretta Cercasi tuttologo che riguarda però i giovani in cerca di prima occupazione. Stavo valutando dei curriculum per cercare uno stagista. Ho esaminato 64 candidature di ragazzi da tutta Italia (due dall'India) appena laureati o con pochissima esperienza. Le lauree spaziavano da informatica a vari tipi di ingegneria prese in varie università italiane. Premetto che i candidati avevano tutti ottime votazioni. Tuttavia mi sono meravigliato della totale assenza di conoscenza del Framework .NET. Solo 1 su 64 ha scritto di conoscerlo !

Considerando le promozioni per gli studenti tipo MSDN AA (che offre gratis tutti i tool di sviluppo e sistemi operativi) e le strategie Microsoft in favore delle Università evidentemente c'è ancora qualcosa che non va.

A riprova dei miei dubbi proprio oggi sono stato ad un workshop Microsoft al Politecnico di Torino sui sistemi embedded ed alla domanda quanti conoscono .NET si sono alzate una decina di mani su un centinaio di presenti, i quali erano per la quasi totalità studenti.

domenica 25 maggio 2008

ReqSheet un tool per creare requisiti per TFS

La definizione dei requisiti è il primo passo di ogni progetto. Se si vuol seguire la metodologia MSF del Team Foundation Server si devono compilare alcuni documenti e creare diversi work item: Vision, Persona, Scenario, Work Item, QoS. Per aiutare la scritture di tali elementi sono nati nel tempo vari tools; il primo dovrebbere essere stato Borland Caliber poi ne sono venuti tanti altri. Uno che mi era piaciuto era stato Personify Design TeamSpec che permette di creare dei documenti Word in cui i requisiti sono collegati e sincronizzati con il server TFS.

L'ultimo apparso, anzi che sta per apparire poichè è ancora in alpha è stpsoft ReqSheet for Visual Studio Team System. Permette di creare tutti gli elementi dei requisiti lavorando su un documento off-line da condividire con gli altri membri del team per una revisione condivisa e poi da publicare sul server TFS per la creazione dei corrispondenti work Items.

Ecco un esempio di Vision del progetto:

image

Definizione delle Personas:

image

Definizione degli Scenari:

image

Esiste un altro tool della stpSoft chiamato Storyboarding for Visual Studio Team System che presi gli scenari definiti sopra permette di visualizzarli graficamente in Visio tramite la creazione di diagrammi di screen flow. Vedi figura :

image

Il software si trova qui http://www.stpsoft.co.uk/vsts

sabato 24 maggio 2008

Documentazione per Visual Studio 2008 SP1

Non è compresa nell'aggiornamento però si può trovare online qui :

http://vs2008sp1docs.msdn.microsoft.com/en-us/default.aspx

Technorati Tags:

Copiare schede SD con robocopy

Mi sono ritrovato a dover cambiare sul cellulare la scheda SD per passare ad una di capacità superiore. Una semplice copia del contenuto da una all'altra non copia tutti i file. Si potrebbero cercare appositi tools per fare il backup di schede SD ma c'e' una via piu' semplice. Su Vista esiste il tool robocopy per fare copie automatiche anche molto complesse. Ecco allora i parametri da utilizzare per fare un mirror completo del contenuto della scheda su una directory di appoggio e salvare un report su un file. Quest'ultimo è utile poichè potrebbe capitare che qualche file è corrotto e non viene copiato.

robocopy <sorgente> <destinazione> /COPYALL /dcopy:t /E /R:2 /W:2 /LOG:<file_di_log> /TEE

lunedì 19 maggio 2008

Per chi non sa cosa fare tra un Teched e l'altro

Per chi si è lasciato affascinare dalla convenienza del Teched USA e non sa cosa fare nel week end tra il Developers e IT Professionals segnalo l'evento Inbetween organizzato dal Florida User Group Communities. Il 7 e 8 Giugno hanno prenotato alcune sale al Orange County Convention Center (lo stesso del Teched) per organizzare un .NET CodeCamp + SQL Saturday e un ITPro Camp. Sono sessioni su SQL, Office Communication Server, .NET Framework 3.5, Biztalk, Sharepoint, Visual Studio Team System, DotNetNuke ed altro. E' un'occasione per conoscere la community locale. Se interessati iscrivetevi al link :

http://www.devfish.net/articles/inbetween/ 

Technorati Tags: ,

martedì 6 maggio 2008

ASP.NET membership authentication ed authorization in Silverlight

La membership introdotta con ASP.NET 2.0 e' un meccanismo di autenticazione ed autrizzazione basato su ruoli adatto "as is" per semplici progetti ma facilmente estensibile per esigenze piu' complesse e serie.

Con la versione 3.5 del Framework e' possibile usarla anche in Ajax e client .NET mediante una web exposure creata al caso. Rimaneva fuori Silverlight od almeno per me non era chiaro come utilizzarla in un client full Silverlight. Avevo trovato esempi di autenticazione fatta prima in una pagina ASP.NET e poi passata all'applicazione Silverlight.
Ora finalmente Brad Abrams mostra un bell'esempio di come usare l'autenticazione ASP.NET in Silverlight, come salvare le personalizzazioni, e come cambiare la skin della pagina di login in base al ruolo. Il tutto lo trovate nel blog Accessing the ASP.NET Authentication, Profile and Role Service in Silverlight

 

 

Copyright © Moreno Borsalino