Il blog di Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/Default.aspx Aspirante apprendista stregone.... it-IT Alessandro Damiani Subtext Version 2.6.0.0 Il blog di Alessandro Damiani http://blogs.ugidotnet.org/images/RSS2Image.gif http://blogs.ugidotnet.org/vanpelt/Default.aspx 77 60 Forse non tutti sanno che... http://blogs.ugidotnet.org/vanpelt/archive/2008/10/04/forse-non-tutti-sanno-che.aspx <p>E' sicuramente una cosa banale ma  mi sono accorto che in molti fanno giri strani per fare partire in debug diverse istanze di progetti all'interno della medesima soluzione (talvolta anche aprire 2 volte la stessa soluzione e fare attach strani per poter andare in debug .. )</p> <p> </p> <p>Per quelli che non lo sanno butto lì un suggerimento, il visual studio ci viene incontro semplificandociparecchio  la vita :  facendo click con il bottone destro del mouse sul progetto che volete far partire in debug o di cui volete una nuova istanza (per esempio per simulare diversi client ) basta selezionare la voce  "debug\avvia nuova istanza" (debug\start new instance nella versione inglese, se volete simulare diverse istanze aperte basta ripetere il procedimento.</p> <p> </p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/Forsenontuttisannoche_1B9D/image_2.png"></a></p><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/94244.aspx" width="1" height="1" /> Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/archive/2008/10/04/forse-non-tutti-sanno-che.aspx Sat, 04 Oct 2008 03:11:21 GMT http://blogs.ugidotnet.org/vanpelt/archive/2008/10/04/forse-non-tutti-sanno-che.aspx#feedback http://blogs.ugidotnet.org/vanpelt/comments/commentRss/94244.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/94244.aspx [OT}Secondo voi come si fa ad arrivare in un posto cos&igrave; ? http://blogs.ugidotnet.org/vanpelt/archive/2008/09/21/otsecondo-voi-come-si-fa-ad-arrivare-in-un-posto.aspx <p>Il passo della predaia, un panorama da togliere il fiato e il silenzio assoluto  (dopo avere spento la moto)</p> <p> </p> <p align="center"><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/OTSecondovoicomesifaadarrivareinunpostoc_11C77/Percorsi_d_Anaunia_Predaia__x_Email_640x480_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="Percorsi_d_Anaunia_Predaia__x_Email_640x480" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/OTSecondovoicomesifaadarrivareinunpostoc_11C77/Percorsi_d_Anaunia_Predaia__x_Email_640x480_thumb.jpg" width="244" border="0" /></a>                                                                                                                                       </p> <p align="center"> </p> <p align="center">Naturalmente con una naked... la mia!!!!  :D. Basta fermarsi prima della pista bianca a quel punto diventa veramente un pò complicato...   </p> <p align="center">          <a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/OTSecondovoicomesifaadarrivareinunpostoc_11C77/img086_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="img086" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/OTSecondovoicomesifaadarrivareinunpostoc_11C77/img086_thumb.jpg" width="244" border="0" /></a>                                                                                                                                           </p> <p align="justify"> </p> <p align="justify">Ho visto che ci sono tanti motociclisti in Ugi, perché non creare un ugidotnet motor club ?  ;)</p> <p align="justify">ps</p> <p align="justify">La seconda foto è fatta con il telefonino e terribilmente controluce vista  l'ora , la prima ,dato che la mia non rendeva l'ho tirata giù da internet , non so se si nota la differenza... :D</p> <p align="justify">Ale</p> <p align="justify"></p><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/94102.aspx" width="1" height="1" /> Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/archive/2008/09/21/otsecondo-voi-come-si-fa-ad-arrivare-in-un-posto.aspx Sun, 21 Sep 2008 21:34:06 GMT http://blogs.ugidotnet.org/vanpelt/archive/2008/09/21/otsecondo-voi-come-si-fa-ad-arrivare-in-un-posto.aspx#feedback 4 http://blogs.ugidotnet.org/vanpelt/comments/commentRss/94102.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/94102.aspx WCF vs WS-* SOA WCF WS-Security http://blogs.ugidotnet.org/vanpelt/archive/2008/09/20/wcf-vs-ws.aspx <p> </p> <p>In questi giorni mi trovo a litigare con header soap e standard WS -* vari.  Uno dei problemi era di capire cosa wcf mette a disposizione.. beh  ... un mare di roba!! <img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif" /></p> <p>Molti standard sono implementati out of the box  , esempio : ws addressing, ws reliable messaging, ws atomic transaction, ws security ...e non li ho citati tutti (per una visione di insieme sui vari standard  : <a href="http://www.infoq.com/articles/ws-standards-wcf-bustamante;jsessionid=D79C2A9428FE6AE4BFC0C937E97B70E2">Making Sense of all these Crazy Web Service Standards</a>)</p> <p>Per avere dei riferimenti sul mapping wcf /ws* potete leggere questo <a href="http://www.topxml.com/rbnews/WSCF/WCF/re-64748_Beyond-the-Obvious--New-Features-and-Fixes-for-WCF-in--NET-3-5---Expanded-WS--specs-support.aspx">articolo</a> davvero utile su topxml. </p> <p>Non solo vi parla del mapping binding ma dà anche qualche dritta sugli switch di configurazione che permettono di configurare il wcf in modo che l'header soap esca nel formato desiderato. </p> <p>Facciamo un esempio  pratico, supponiamo di volere realizzare un'autenticazione consumer - service tramite scambio di certificati , senza entrare nel merito della configurazione (mi riprometto di scrivere qualcosa di completo su questo fra qualche giorno)  </p> <p>Nel codice del contratto mettiamo pure quello che vogliamo nell'ambito della decenza informatica :)  basta non inserire codice per bypassare la configurazione. </p> <p>Utilizzando in modo "normale" gli attributi (tipo l'esempio generato dal visual studio nella creazione di un servizio WCF ) usare servizi non protetti in basic http, piuttosto che protetti con token di vario genere e natura diventa solo un problema di configurazione totalmente trasparente a chi sviluppa il codice.</p> <p>Mettiamo su la nostra infrastruttura di sicurezza :</p> <p>Nel behaviour specifichiamo le credenziali con le quali il servizio si presenterà al client  e il modo in cui il servizio autenticherà il client:</p> <p><font color="#000080">&lt;serviceBehaviors&gt;<br />     &lt;behavior name="CertBehavior"&gt;<br />      &lt;serviceMetadata httpGetEnabled="true" /&gt;<br />      &lt;serviceCredentials&gt;<br />       &lt;clientCertificate&gt;<br />        &lt;authentication certificateValidationMode="ChainTrust" revocationMode="NoCheck" /&gt;<br />       &lt;/clientCertificate&gt;<br />       &lt;serviceCertificate findValue="CN=DEVCER" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName" /&gt;<br />      &lt;/serviceCredentials&gt;<br />     &lt;/behavior&gt;<br />    &lt;/serviceBehaviors&gt;</font> </p> <p>  </p> <p>Utilizziamo per il nostro endpoint il seguente Binding : </p> <p> <font color="#000080">&lt;wsHttpBinding&gt;<br />     &lt;binding name="SecuredByCertificate"&gt;<br />      &lt;reliableSession enabled="false" /&gt;<br />      &lt;security&gt;<br />       &lt;transport clientCredentialType="None" /&gt;<br />       &lt;message clientCredentialType="Certificate" <font color="#ff0000">negotiateServiceCredential="false" establishSecurityContext="false"</font> /&gt;<br />      &lt;/security&gt;<br />     &lt;/binding&gt;<br />    &lt;/wsHttpBinding&gt;<br /> </font></p> <p>Occhio alla parte in rosso ci servirà più avanti.. <img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/wink_smile.gif" /></p> <p>Il servizio sarà configurato cosi :</p> <p><font color="#000080">   &lt;service behaviorConfiguration="CertBehavior" name="WcfService1.Service1"&gt;<br />     &lt;endpoint address="" behaviorConfiguration="CustomBehav" binding="wsHttpBinding"      bindingConfiguration="SecuredByCertificate" contract="WcfService1.IService1"&gt;<br />      &lt;identity&gt;<br />       &lt;dns value="DEVCER" /&gt;<br />      &lt;/identity&gt;<br />     &lt;/endpoint&gt;<br />    &lt;/service&gt;</font></p> <p><font color="#000080"></font><font color="#000080">Questo è un estratto della policy di sicurezza nel wsdl ottenuto dal  binding con i nostri switch impostati a false , ingrandendo l'immagine si nota  che si utilizza un X509Token</font></p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/WCFvsWS_13C25/clip_image001_2.png"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="138" alt="clip_image001" width="244" border="0" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/WCFvsWS_13C25/clip_image001_thumb.png" /></a> </p> <p>  </p> <p>Adesso invece reimpostiamo a true i nostri famosi flag di configurazione  : <font color="#ff0000">"negotiateServiceCredential="true" establishSecurityContext="true"</font> </p> <p>Quello che otteniamo è un policy di sicurezza abbastanza diversa basata su  SCT (security context token) ovvero stiamo applicando la policy di WS-SecureConversation</p> <p><a target="_blank" href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/WCFvsWS_13C25/image_2.png"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="142" alt="image" width="244" border="0" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/vanpelt/WindowsLiveWriter/WCFvsWS_13C25/image_thumb.png" /></a> </p> <p><font color="#000080"></font> </p> <p>Sottolineo che  se non avessimo spulciato il wsdl  ( o l'header soap che evito di allegare perché un tantinello ingombrante ) e avessimo utilizzato un consumer .Net che abbiamo tranquillamente agganciato al servizio utilizzando l'add service reference di VS 2008, non ci saremmo minimamente accorti che il meccanismo di autenticazione  utilizzato è sostanzialmente diverso(salvo sentire le imprecazioni del collega java che si aspettava un'altra policy di sicurezza )  : nel caso dell'X509 token fondamentalmente viene utilizzato un meccanismo di cifratura a chiave asimmetrica, mentre nel caso dell'sct si utilizza un meccanismo di cifratura a chiave simmetrica (più efficiente computazionalmente) ma che comporta una serie di chiamate in più per lo scambio in sicurezza della chiave simmetrica.</p> <p>Grazie ai sopravvissuti arrivati fin qui nella lettura  <img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/shades_smile.gif" /> </p> <p>                   Ale</p><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/94093.aspx" width="1" height="1" /> Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/archive/2008/09/20/wcf-vs-ws.aspx Sat, 20 Sep 2008 04:17:33 GMT http://blogs.ugidotnet.org/vanpelt/archive/2008/09/20/wcf-vs-ws.aspx#feedback http://blogs.ugidotnet.org/vanpelt/comments/commentRss/94093.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/94093.aspx Il mito del progettista geniale... http://blogs.ugidotnet.org/vanpelt/archive/2008/02/20/il-mito-del-progettista-geniale.aspx <p>Questi articoli sulla usabilità sono interessanti e scritti con un pò di sano umorismo che non guasta mai..   ;)</p> <p><a title="http://www.useit.com/alertbox/genius-designers.html" href="http://www.useit.com/alertbox/genius-designers.html">The Myth of the Genius Designer</a></p> <p><a href="http://www.useit.com/alertbox/application-mistakes.html">Top-10 Application-Design Mistakes</a></p> <p> </p> <p>Buona lettura :D</p><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/91259.aspx" width="1" height="1" /> Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/archive/2008/02/20/il-mito-del-progettista-geniale.aspx Wed, 20 Feb 2008 12:08:36 GMT http://blogs.ugidotnet.org/vanpelt/archive/2008/02/20/il-mito-del-progettista-geniale.aspx#feedback 3 http://blogs.ugidotnet.org/vanpelt/comments/commentRss/91259.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/91259.aspx IIS 5 rivive.. http://blogs.ugidotnet.org/vanpelt/archive/2008/01/23/iis-5-rivive.aspx <p>Dopo aver installato i reporting services di sqlserver 2005 per cominciare a fare le mie "sporcherie  autodidattiche"  vado tutto contento a testare l'app web e BOOOM!!!</p> <p>Eccezione e disperazione : "<strong>System.Web.Hosting.HostingEnvironmentException: Failed to access IIS metabase. The process account used to run ASP.NET must have read access to the IIS metabase</strong> ". </p> <p>Dopo un attimo di disperazione  (l'ultima volta che ho avuto problemi con al metabase di IIS 5 non sono più neache riuscito a far partire la console di amministrazione di IIS e collegarla al localhost.. ) ho seguito la via che indicava l'eccezione, portandomi al provvidenziale <a href="http://support.microsoft.com/kb/267904/en-us" target="_blank">articolo sulla KB di microsoft</a>. </p> <p>Utilizzando asp.net 2 è possibile recuperare i diritti di accesso alla metabase per l'utente aspnet lanciando il comando : </p> <blockquote> <p><strong>aspnet_regiis -ga aspnet</strong></p> </blockquote> <p>E miracolosomente la mia applicazione è tornata a vivere..  (meno male)</p> <p>Per IIS 6 sostituite aspnet con l'utente con cui gira l'app pool dell'applicazione (anche se su IIS 6 non ho mai avuto questo tipo di problemi fino ad ora.. ) </p> <p>Attenzione che il metabase è un oggettino con cui scherzare poco, l'avviso sull'articolo citato è poco incoraggiante ma esplicativo :<strong>"Edit the metabase at your own risk."</strong> ;)</p><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/90830.aspx" width="1" height="1" /> Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/archive/2008/01/23/iis-5-rivive.aspx Wed, 23 Jan 2008 19:06:35 GMT http://blogs.ugidotnet.org/vanpelt/archive/2008/01/23/iis-5-rivive.aspx#feedback 6 http://blogs.ugidotnet.org/vanpelt/comments/commentRss/90830.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/90830.aspx X509? Ma non era un modello della piaggio? http://blogs.ugidotnet.org/vanpelt/archive/2007/12/11/x509-ma-non-era-un-modello-della-piaggio.aspx <p>Lunghe ore di lotta con la creazioni di certificati e la configurazione del server per fare parlare un token issuer e dei servizi WCF. Un piccolo riassunto per i malcapitati che si trovassero in situazioni simili</p> <ol> <li>Creazione dei certificati </li> </ol> <p>Un certificato è ottenibile o facendo richiesta a una certification authority <strong>(CA)</strong>o creandolo con  il tool make cert. Il certificato fai da te è vivamente sconsigliato per applicazioni da portare in produzione ma va bene per i propri esperimenti di sviluppo. Per creare dei certificati per lo scambio di informazione solitamente si utilizza il formato pkcs#12 che si "manifesta" in un file con estensione .pfx.</p> <p>Sia con il makecert che con la cert. auth. di windows 2003 non si riesce ad ottenere un file di certificato in quel formato (se qualcuno sa indicarmi la via gli sarò grato per avermi fatto rispamiare un passaggio :) ) Quello che si ottiene è un file di certificato .cer e una chiave privata memorizzata su un file (di solito con estensione .pvk)</p> <p>Per ottenere un certificato da una CA basta fare una richiesta di certificato nell'apposito form web che i server CA mettono a disposizione e aspettare che qualcuno approvi la richiesta e vi fornisca il file di certificato approvato. </p> <p>Per generare un certificato in proprio utilizzando il make cert possiamo fare come segue e volendo fare le cose per bene ci generiamo anche una CA casereccia che garantisca il certificato : </p> <p><font color="#0000ff">makecert -pe -n "CN=TempCA" -r -a sha1 -sky signature -sv TempCA.pvk TempCA.cer</font></p> <p>Il risultato dell'operazione saranno i due file .cer e .pvk </p> <p>Ok, a questo punto generiamo il nostro certificato per il servizio WCF firmato dalla prestigiosissima TempCA appena creata :)</p> <p><font color="#0000ff">Makecert -pe -ic TempCA.cer -iv TempCA.pvk -iky signature -sky exchange     -eku 1.3.6.1.5.5.7.3.1 -sp "Microsoft RSA SChannel Cryptographic Provider" -n </font><font color="#0000ff">"CN=SVCWCFCER" -sy 12 -sv svc_cert.pvk svc_cert.cer</font></p> <p><font color="#0000ff"><font color="#000000">i parametri -ic e -iv si riferiscono ai file della CA che abbiamo ottenuto nel primo passo, particolarmente importante è il parametro -sky exchange che sottolinea l'uso della chiave per effettuare encryption.</font></font></p> <p><font color="#0000ff"><font color="#000000">Adesso per potere sfruttare il nostro certificato ci serve il famoso file .pfx, rilanciamoci a riga di comando per ottenerlo </font></font></p> <p><font color="#0000ff">pvk2pfx -pvk svc_cert.pvk -spc svc_cert.cer -pfx svc_cert.pfx</font></p> <p>Abbiamo cosi ottenuto il nostro svc_cert.pfx pronto per l'uso. Il tool pvk2pfx lo potete trovare anche nell'sdk di vista..</p> <p>2. Importazione nello store della localMachine</p> <p>Adesso non resta che configurare la macchina che andrà ad utilizzare il certificato, per fare questo:</p> <ol> <li>aprite la mmc di windows e aggiungete lo sna p in certificati relativi al local computer (ovvero lo store di sistema "localMachine" ) </li> <li>per prima cosa importate il certificato della CA(il nostro file  tempCA.cer) nello store delle Trusted Certification Authorities  </li> <li>Nella cartella local computer\Personal (che corrisponde allo store localMachine\my) importate il certificato svc_cert.pfx </li> </ol> <p>Se l'operazione al secondo punto fallisce dandovi l'errore :  "<font color="#ff0000">An internal error occurred. This can be either the user profile is not accessible or the private key that you are importing might require a cryptographic service provider that is not installed on your system</font>"</p> <p>In questo caso probabilmente avete qualcosa che non va nella configurazione dell'accesso alla cartella <strong>"....\Documents and settings\All Users\Application Data\Microsoft\Crypto\RSA</strong>" in questo caso date un'occhiata a questo <a target="_blank" href="http://support.microsoft.com/kb/278381/">articolo</a> che vi spiega come rimediare.</p> <p>Un consiglio non installate il certificato dal wizard che viene fuori dal doppio click sul file .pfx perchè solitamente vi installa il certificato nello store dell'utente corrente e anche se poi lo spostate tramite console nello store della localmachine la chiave privata fa giri strani e poi ci si incasina con le autorizzazioni di accesso sulla chiave.. </p> <p>A questo punto per concludere il tutto (in base all'utilizzo di cui avete bisogno )basta specificare il certificato nel webconfig (o appconfig) e fornire all'utente con cui gira l'host del servizio che utilizzerà il certificato le autorizzazioni di accesso alla chiave privata del nostro "CN=SVCWCFCER" , la maniera più semplice  e consigliata per farlo è utilizzare il tool di WSE 3, altrimenti andate nella famosa cartella <strong>"\Documents and settings\All Users\Application Data\Microsoft\Crypto\RSA</strong>" e cercate di capire qual'è la chiave che vi interessa (probabilmente la più recente della cartella ;) )  </p> <p>PS </p> <blockquote> <p>Per chi non volesse crearsi una CA per il certificato può in alternativa creare un certificato self signed e importarlo sia nella localmachine\my che nella trusted root CAs. Il comando per generare il certificato in questione è questo :</p> <p> <font color="#0000ff">Makecert -pe -r -sky exchange     -eku 1.3.6.1.5.5.7.3.1 -sp "Microsoft RSA SChannel Cryptographic Provider" -n </font><font color="#0000ff">"CN=SVCWCFCER" -sy 12 -sv svc_cert.pvk svc_cert.cer</font></p> <p><font color="#0000ff"></font></p> </blockquote> <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0a48fb71-4d27-4503-8ed0-24aca44cf1c0" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">Technorati Tag: <a rel="tag" href="http://technorati.com/tags/Certificati">Certificati</a>,<a rel="tag" href="http://technorati.com/tags/Sicurezza">Sicurezza</a>,<a rel="tag" href="http://technorati.com/tags/X509">X509</a></div><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/90207.aspx" width="1" height="1" /> Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/archive/2007/12/11/x509-ma-non-era-un-modello-della-piaggio.aspx Tue, 11 Dec 2007 03:14:04 GMT http://blogs.ugidotnet.org/vanpelt/archive/2007/12/11/x509-ma-non-era-un-modello-della-piaggio.aspx#feedback 4 http://blogs.ugidotnet.org/vanpelt/comments/commentRss/90207.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/90207.aspx Antipattern SOA e l'altra metà del cielo (IBM) SOA Patterns http://blogs.ugidotnet.org/vanpelt/archive/2007/12/01/antipattern-soa.aspx <p> </p> <p>Questo articolo su <a href="http://www.ibm.com/developerworks/webservices/library/ws-antipatterns/">SOA antipatterns</a> scritto da IBM è divertente , per spiegare i sintomi del verificarsi degli abusi comuni del termine  SOA o della nube di fraintendimento che ruota intorno ad esso, si lancia in analisi di tipo psicologico che neanche la definizione delle cause delle sindrome da stress post traumatico :-)</p> <p>Chi si è trovato in una conversazione su SOA sicuramente si sarà trovato davanti a casi conclamati di <strong>"Technology Bandwagon"</strong> o "<strong>bigbang</strong>" (se volete scoprire cosa sono leggete l'articolo  <img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/wink_smile.gif" />) alzi la mano chi non ha mai sentito almeno una volta casi come quelli descritti...</p> <p>La versione Microsoft  non usa la psicologia per descrivere le cause dell'adozione di antipattern ma porta altri elementi di riflessione chi volesse può trovarla qui : <font face="Arial" /></p> <p><font face="Arial"><a href="http://msdn2.microsoft.com/en-us/library/ms954638.aspx">msdn2.microsoft.com/en-us/library/ms954638.aspx</a> </font></p> <p>C'è anche il famoso antipattern Crudy citato da Janky in un suo <a href="http://blogs.ugidotnet.org/janky/archive/2007/11/27/linq-to-sql-scenari-multi-tier-e-soa.aspx">post</a> su wcf e Linq </p><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/90038.aspx" width="1" height="1" /> Alessandro Damiani http://blogs.ugidotnet.org/vanpelt/archive/2007/12/01/antipattern-soa.aspx Sat, 01 Dec 2007 00:36:31 GMT http://blogs.ugidotnet.org/vanpelt/archive/2007/12/01/antipattern-soa.aspx#feedback 2 http://blogs.ugidotnet.org/vanpelt/comments/commentRss/90038.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/90038.aspx Si parte http://blogs.ugidotnet.org/vanpelt/archive/2007/11/28/si-parte.aspx <p> Primo di una  lunga serie o cosi si spera :-) </p> <p>Ok comincia l'avventura del blog su ugidotnet. </p> <p>In questi tempi di innnovazione in cui microsoft sta tirando fuori roba a una rapidità  che neanche ai tempi della rivoluzione industriale mi sono reso conto che i blog sono l'unica maniera per capire qualcosa di quello che sta succedendo. </p> <p>Spero di dare il mio contributo per sconfiggere il lato oscuro del male "www. nonvaunafava.com" <img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif" /></p> <p>                   see yaaaaaaaa</p><img src="http://blogs.ugidotnet.org/vanpelt/aggbug/89985.aspx" width="1" height="1" /> Blog Author http://blogs.ugidotnet.org/vanpelt/archive/2007/11/28/si-parte.aspx Wed, 28 Nov 2007 11:16:31 GMT http://blogs.ugidotnet.org/vanpelt/archive/2007/11/28/si-parte.aspx#feedback 3 http://blogs.ugidotnet.org/vanpelt/comments/commentRss/89985.aspx http://blogs.ugidotnet.org/vanpelt/services/trackbacks/89985.aspx