mercoledì, ottobre 21, 2009

aKite Retail Web Services

In questi ultimi mesi tutti noi di BEDIN Shop Systems siamo stati impegnati nella migrazione dei nostri Retail Web Services alla piattaforma Azure di Microsoft.

La nostra soluzione è stato rinominata per riflettere questo grande cambiamento: aKite Retail Web Services
Spero che il nome piaccia al “pubblico” tanto quanto piace a noi.

logo_aKite
Maggiori informazioni sono disponibili nel sito del prodotto: www.akite.net

La migrazione si è completata con soddisfazione in questi giorni, ad un mese dall’annuncio della disponibilità della piattaforma che verrà fatto a PDC09 a Los Angeles, dal 17 al 19 Novembre 2009.

PDC09Bling_General_WhatsNext_240[1]

Anche questo anno saremo a PDC09, in questa occasione tra le primissime aziende al mondo che hanno realizzato un gestionale completo su Windows Azure e SQL Azure.

mercoledì, luglio 15, 2009

Pricing di Windows Azure

Alla Worldwide Partner Conference 2009 di New Orleans sono stati finalmente annunciati i dettagli del pricing di Windows Azure. Il post dettagliato lo trovate qui.

In sostanza, si pagano 0.12 $ all’ora per tenere attiva un’istanza di Azure e per avere un buon SLA si deve pensare ad averne al minimo due. 
Se si usa lo storage di Azure, tabelle e code, si parla di 0.15 $ per GB al mese e 0.1 $ per 10mila transazioni su questi dati. 
Poi c’è un tot per il traffico in entrata (0.1 $ per GB) ed in uscita (0.15 $ per GB).
SQL Azure costa 9.99 $ per un database da 1 GB, oppure 99.99 $ per per un database da 10 GB, sempre al mese; non sono disponibili dimensioni di db maggiori, fattore importante da tenere a mente.

Ipotizziamo uno scenario con un paio di istanze che rimangono attive sempre, come deve necessariamente essere per dei servizi web a supporto di smart client. Quindi abbiamo 2 istanze * 24 ore * 365 giorni * 0.12 $ = 2104 $.
Aggiungiamo il traffico, ipotizzo la saturazione totale e continuativa di 2 Mbps in uscita ed il traffico in entrata al 60%. Secondo i miei calcoli ottengo 923 $ (per 6159 GB in uscita all’anno a 0,15 $) e 369 $ (per 3695 GB in entrata all’anno a 0,1 $).
Consideriamo anche lo storage di Azure, per uno scenario come questo ipotizzo l’uso delle code e del “disco” di 100 GB mediamente al mese, con 10 mila transazioni all’ora. Ottengo 180 $ all’anno.
SQL Azure è più difficile da considerare; per questo scenario ipotizzo 10 database da 10 GB, uno per ogni cliente (penso a delle catene di negozi).  Ottengo quindi circa 12000 $ all’anno.
In totale, senza considerare SQL Azure, ottengo un costo annuno pari a poco più di 3500 $. Se aggiungo SQL Azure secondo la mia ipotesi salgo a più di 15 mila $ all’anno.

Si dovrebbero analizzare meglio diversi aspetti di questo scenario per renderlo più realistico: calcolare meglio il traffico, che però non incide molto, considerare con maggiore attenzione le transazioni sullo storage. Aggiustamenti che non cambiano l’impressione che mi sono fatto confrontando il tutto con i costi di licenze software, hardware e hosting che si affrontano per mettere dei server in un datacenter, cioè che Azure sia molto competitivo nei confronti delle offerte tradizionali ed interessante, ovviamente, per chi realizza applicazioni SaaS.

Di SQL Azure trovo strano e poco coerente il pricing. 
Per una soluzione SaaS considero importante garantire ai clienti l’isolamento massimo dei propri dati da quelli degli altri clienti. Un modo per avvicinarsi all’obiettivo credo sia isolare fisicamente i dati del cliente, creando un database per ogni cliente. In questo modo anche le operazioni di backup e restore si semplificano. Quindi, per me, 100 clienti significano 100 diversi database.
Di questi 100 clienti, nella mia realtà, alcuni possono avere meno di 10 postazioni su cui operano gli smart client che interagiscono con i servizi web, altri clienti avranno centinaia di postazioni che producono dati, oltre ad interrogarli. Quindi avrò alcuni database da “solo” 200 MB dopo un paio di anni di attività ed altri da 10 GB già al primo anno di esercizio. 
Avrei trovato più “giusto” ed affine al pricing degli altri servizi se SQL Azure fosse fatto pagare a tot centesimi per GB occupato al mese, con tetto masso di 10 GB per database se necessario e senza distinzioni di numero di database.
Magari un esperto di SQL Server mi darà del pazzo per l’idea di isolare i dati dei clienti separando i database, magari sa che SQL Server è allergico ad un numero elevato di database. Io questo non lo so ma sono abbastanza convinto della mia osservazione: SQL Azure dovrebbe essere fatto pagare per lo spazio occupato indipendentemente dal numero di database.

Segnalo un interessante white paper in cui David Chappell descrive gli scenari che Azure apre agli ISV.
Inoltre, ecco una interessante spiegazione di cosa è Windows Azure, by Steve Marx.

giovedì, febbraio 12, 2009

Azure Needs A Real RoadMap

Per la serie “è meglio aspettare che sia un’autorità ad esprimere per prima questo pensiero”, Scott Watermasysk scrive che Microsoft Azure necessita di una vera, chiara ed attendibile roadmap, altrimenti è veramente difficile affrontare seriamente lo sviluppo sulla piattaforma.

Azure Needs A Real RoadMap

Non passa una settimana che Amazon Web Services faccia un nuovo annuncio, che si tratti di un nuovo servizio o dell’abbassamento delle tariffe.

Azure, se ci sei, batti un colpo!

PS: ricordo che è stato Scott a dirlo!

mercoledì, novembre 12, 2008

Windows Azure Storage <> SQL Data Services

Sto iniziando a capire e provare le tecnologie del mondo Azure e mi sono reso conto di avere frainteso alcune cose relative all'uso del database in the cloud.

servicesPlatform

SQL Data Services o SDS, prima conosciuto come SQL Server Data Services, è l'unico servizio presente al momento nei SQL Services. In un prossimo futuro si aggiungeranno Reporting ed Analysis Services.
SDS si basa sul concetto di Authority, Container ed Entity. L'accesso è via SOAP e REST ed al momento non mi sembra ci sia un provider LINQ per accedervi.

Windows Azure Storage è parte di Azure ed è quindi sempre disponibile per ogni applicazione ospitata nella cloud Azure. Comprende le funzionalità di gestione tabelle, blob e code.
L'accesso a table storage service (TSS) di Azure può essere effettuato con un provided LINQ.

Secondo la documentazione, la differenza tra i due è questa:

Windows Azure Storage Service is designed to be the lowest cost, most efficient solution for large scale data storage and retrieval in the cloud. It can store blobs, queues, and simple tables (non-relational). SQL Services is designed to bring the power of relational databases into the cloud and will provide rich querying over tables.

SDS è un servizio aggiuntivo, probabilmente basato ed integrato con Azure, mentre TSS è incluso in ogni applicazione Azure.

giovedì, ottobre 30, 2008

PDC2008 is over

L'edizione 2008  di PDC è volata via, anche troppo velocemente forse.

Il simposio sui cloud service di Gianpaolo Carraro ed Eugenio Pace di oggi ha aggiunto nuova chiarezza alla visione del cloud computing annunciata da Microsoft. Tutto è molto più chiaro ora, se solo fosse stato Carraro a tenere una keynote ...

Ora mi metto in viaggio per l'aereoporto, dove continuerò il mio viaggio americano.

mercoledì, ottobre 29, 2008

Ok, Azure è meraviglioso

Ci sono voluti due giorni per capire qualcosa di più dalle keynote meno intense della mia personale storia di PDC (2000, 2003 e 2005).
Nelle sessioni del pomeriggio del secondo giorno credo di avere finalmente compreso la maginificenza e complessità di Windows Azure, il sistema su cui vorrei iniziare subito a portare le mie applicazioni.

image

Non provo nemmeno a descrivere cosa è Azure, ci sono be altri blog che hanno ben commentato la scommessa sul futuro di Microsoft.

martedì, ottobre 28, 2008

Don Box to the rescue?

Secondo giorno di PDC.

Dopo l'annuncio di Windows Azure e lo spostamento di Microsoft verso il cloud, messaggio tanto importante quanto sommesso ed inadatto è stato il tono, la seconda giornata inizia con la presentazione di Windows 7 e di una serie di interessanti features, a patto che siate utenti home o ISV che hanno nel consumer il loro principale mercato.

Ora Don Box è l'unica speranza per ottenere chiarezza su Azure ed il futuro? Boh.

giovedì, ottobre 23, 2008

Domani si parte

Domani parto per Los Angeles per partecipare a PDC 2008 che inizia domenica i partecipanti alla PreConference. Io seguirò la PreCon su WPF.

Il rapido volo da Venezia - Francoforte - Los Angeles complessivamente durerà dalle 7:10 alle 24:00 circa. A Los Angeles saranno le 15 ma poco importa ...

giovedì, settembre 25, 2008

UserInstances after SQL Express 2008?

Non avevo colto questo dettaglio nella documentazione di SQL Express 2008 fino a quando un collega me lo ha fatto notare.

La versione 2008 di SQL Server Express Edition (SSEE) 2008 è l'ultima a supportare le UserInstances, funzionalità che consente l'uso di database locali in una instanza privata di SQL Server.
Il beneficio principale è di non richiedere privilegi amministrativi all'utente per creare e manipolare un database, privilegi altrimenti necessari per accedere alla instanza di default di SQL Express.

La funzionalità UserInstances è nota anche come Run As Normal User (RANU) e fa il paio con la tecnologia distributiva ClickOnce, che permette la distribuzione di applicazioni che vengono installate per l'utente corrente senza richiedere privilegi amministrativi. 
Nello sviluppo di uno smart client ClickOnce e SSEE 2008 via RANU affrontano coerentemente l'esigenza di un basso costo/complessità di deployment.

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Così recita la documentazione. Se si vuole usare un database engine più vicino possibile ad un comportamento "embedded", garantito fino ad ora dalla funzione RANU, bisogna iniziare a cercare un'alternativa. Di certo SQL Compact Edition non ci arriva nemmeno vicino.

La funzionalità verrà semplicemente rimossa eliminando degli scenari possibili e finora supportati o verrà sostituita con qualcos'altro?

Se ne parla in questo post nel MSDN forum di SQL Server Express.

martedì, settembre 09, 2008

Deployment di SSEE 2008 in Visual Studio 2008 SP1

Visual Studio 2008 SP1, tra le tante funzionalità, ha introdotto il supporto a SQL Server 2008, compresa la versione Express (SSEE). SSEE 2008 richiede la presenza di Windows Installer 4.5.

Ogni applicazione che vuole utilizzare SQL Express può includere SSEE 2008 e Windows Installer 4.5 in un programma di setup dei prerequisiti. Nel mio caso, un'applicazione distribuita via ClickOnce , ci si aspetterebbe di trovare i bootstrapper che ne consentono la distribuzione elencati tra i Prerequisites. Invece non ci sono, lo sviluppatore deve creare il package per il prerequisito autonomamente, con il Bootstrapper Manifest Generator, come discusso in questo thread su MSDN.

Il SP1 di Visual Studio 2008 è uscito (non a caso) in concomitanza con SQL Server 2008 e tendo a pensare che sia comune l'esigenza di utilizzare e distribuire SSEE 2008 con la propria applicazione. Quindi quanto sforzo doveva impiegare Microsoft per fornire nel SP1 il supporto alla distribuzione di questo servizio, invece di lasciare l'onere agli sviluppatori?

Il problema non si presenta agli utenti di Visual Studio 2008 Express che trovano il elenco i nuovi prerequisite packages in elenco con l'applicazione del SP1, tutte le altre versioni di Visual Studio 2008 invece ne sono sprovvisti.

Inoltre ci sono delle potenziali difficoltà nell'utilizzo del Prerequisites package di .Net Framework 3.5 SP1. Ma come? nella SP1 non hanno testato a fondo la distribuzione della SP1?

Questo ed altri elementi mi fanno pensare che Microsoft dedica scarsa attenzione alle esigenze di deployment, soprattutto nel mondo degli smart client.

Ho sottomesso una richiesta su Connect per chiedere una refresh di Visual Studio 2008 SP1 (non succederà mai) o almeno la distribuzione dei nuovi prerequistes per le tecnologie introdotte, una volta per tutti gli sviluppatori.
Se questo problema vi sembra rilevante, aumentate l'importanza della mia segnalazione, ecco il link:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=366818

UPDATE: Sul SQL Express WebLog è pubblicata una "soluzione" al problema che prevede di installare VS 2008 sP1 Express sulla propria macchina di sviluppo. La versione Express infatti aggiunge il bootstrapper per SSEE 2008. Sarò incontentabile, ma questo episodio proprio non mi è piaciuto.

venerdì, luglio 11, 2008

I'm going to PDC 2008

Blog Bling BrainAvrò la fortuna di partecipare al prossimo PDC 2008 e proprio oggi mi sono registrato.

Dopo i molti dubbi ed un insolito scetticismo mi sono convinto che l'utilità dell'evento sarà di gran lunga superiore al costo (non indifferente nonostante il cambio favorevole) sommato al rischio di partecipare ad un evento riparatore (PDC 2007).

Sapere che Don Box è coinvolto nella scelta di circa un quarto delle sessioni di questo PDC sicuramente mi ha convinto che la rilevanza di questa edizione, tanto attesa quanto travagliata, sarà eccezionale. Speriamo bene.

PDC parla al cervello dei partecipanti ma anche al cuore ed alla pancia (e non parlo del meraviglioso catering).  La componente emotiva ed irrazionale è presente e la grandiosità dell'evento la alimenta.
La keynote con Ray Ozzie sarà un grande cambiamento, già avvenuto nella realtà con la recente uscita di Bill Gates ma non ancora "ufficializzato" nella storia del più importante evento Microsoft rivolto agli sviluppatori .

mercoledì, maggio 28, 2008

PDC 2008, prime informazioni

Sono stati annunciati i primi dettagli riguardo alla Professional Developer Conference 2008, che si terrà a Los Angeles dal 26 al 30 Ottobre 2008.

Su http://www.microsoftpdc.com si può già vedere una lista preliminare delle sessioni previste per l'edizione 2008 della più importante conferenza per sviluppatori in ambiente Microsoft.

Gli argomenti sono invitanti, si parlerà di Windows 7 e dei servizi Live.
Però il mio crescente scetticismo (a mia discolpa faccio notare che sono tra chi si è appassionato a WinFS, ObjectSpaces, MBF, tutte vittime da PDC) mi porta a valutarne i contenuti soppesando la (remota) possibilità che si tratti di una PDC riparatrice per la rocambolesca cancellazione dell'edizione 2007 oppure che sia pensata con un intento più politico che un intrinseco contenuto tecnico. Aspetto di sentire qualche parere informato da parte degli MVP italiani.

Sarà anche la prima PDC di Microsoft 2.0 senza Bill Gates.

venerdì, aprile 18, 2008

Hosted Exchange E-Mail and Services

Questo episodio mi ha fatto riconsiderare il costo di gestione del mio server Exchange che serve meno di 10 utenti. Come Partner ne abbiamo la licenza come privilegio annuale ma consideriamo questi elementi:

Migrazione.
La migrazione all'ultima versione 2007 di Exchange è inesorabilmente all'orizzonte. Disponibile solo a 64bit e con discreti requisiti di memoria, obbliga a cambiare server nonostante l'impegno rimanga lo stesso.

Manutenzione.
L'applicazione di Service Pack ed hotfix richiede più o meno lo stesso tempo per un server che supporta una realtà piccola o grande. Lo stesso vale per il Windows Server su cui è operativo Exchange.

Impegno server.
Gestione di un server praticamente dedicato ad Exchange per minimizzare i side effect di hotfix e service pack che si possono verificare in presenza di altro software.

Spam e virus.
Il costo in termini di traffico di rete, occupazione CPU e canoni annuali di software antispam ed antivirus per il server (noi usiamo GFI). Considerando che circa il 98% del traffico di posta è costituito da SPAM questi sistemi sono necessari.

La soluzione a questi problemi potrebbe essere Exchange Hosted E-Mail e Exchange Hosted Services.
Alcuni Partner Microsoft sono in grado di offrire Exchange come servizio, per il quale si paga un canone proporzionale al numero di utenti ed al volume di posta gestita. 
Microsoft offre direttamente una serie di servizi agguntivi  tra cui il filtraggio (antispam, antivirus, filtro per contenuti), archiviazione e continuità del servizio, servizi utilizzabili con qualsiasi server di posta, sia in modalità hosted o gestito direttamente.

Credo che anche nel mio caso, in cui non ci sono i costi di licenza di Exchange da considerare, un servizio hosted potrebbe essere economicamente conveniente.

Notifiche da Sharepoint 2007 via Exchange 2003

Dopo avere vissuto diversi problemi nella migrazione da una installazione basilare di Sharepoint Portal 2003 a Sharepoint 2007, ho lasciato passare alcuni mesi ed ho ritentato la migrazione graduale (volendo cambiare server e database), che questa volta ha avuto successo ed è andata come previsto, più o meno.

Con l'uso di Sharepoint 2007 mi sono accorto che non sono in grado di aprire in Outlook 2007 i messaggi di notifica del server.

In un primo momento ho pensato si trattasse di un problema locale, infatti altri utenti non hanno riscontrato lo stesso problema. La prima ricerca su Google trova alcuni articoli che affrontano il problema.

KB 930807: You cannot open a SharePoint Server 2007 notification message in Outlook 2007 when your mailbox is on an Exchange 2003 server

Si tratta di una incompatibilità tra Sharepoint 2007 ed Exchange 2003 che ne rende illeggibili i messaggi quando il client Outlook 2007 opera in modalità cached, salvando in locale i messaggi. La soluzione è applicare una hotfix ad Exchange 2003, dopo avere aggiornato il server a SP2.

Chi usa un portatile tende ad utilizzare la modalità cached, oltre ad essere l'impostazione di default nell'installazione di Outlook 2007, e quindi non sembra uno scenario così raro da non essere contemplato.

Che dire, Sharepoint 2007 continua ad essere fonte di inaspettate sorprese ;-)

venerdì, marzo 14, 2008

Vincitori premio STAGE.IT di Confindustria Padova

Ieri, 13 Marzo 2008, la BEDIN Shop Systems srl e lo studente Eric Miotto sono stati premiati dall'ICT Lab di Confindustria Padova per lo stage a maggiore contenuto di innovazione realizzato nell'anno 2007, nel corso della 3a edizione del premio regionale STAGE.IT.

Ecco il link al comunicato stampa riportato sul sito di Confindustria Padova e su PadovaNews.

Il progetto di stage sviluppato da Eric Miotto in BEDIN Shop Systems srl ha riguardato l'integrazione del web service Amazon.com Simple Queue Service (SQS) in uno smart client basato su piattaforma Microsoft .Net, mediante l'utilizzo di Microsoft .Net Windows Communcation Foundation (WCF).
Oltre ad offrire una soluzione pratica per l'invio di dati in asincrono tramite web services ha avuto anche il pregio di dimostrare il valore aggiunto portato dall'aggregazione di diversi servizi web, basati su piattaforme eterogenee, accomunati dalla condivisione dei meccanismi di interoperazione.

Al completamento del corso di studi di specializzazione Eric Miotto entrerà a fare parte del team di sviluppo della BEDIN Shop Systems.

mercoledì, febbraio 13, 2008

Transaction Isolation

Riporto alcuni link ad articoli che spiegano in dettaglio i livelli di isolamento delle transazioni in SQL Server 2005 e li mettono a confronto:

Altri link utili su System.Transactions e l'interazione con il livello di isolamento:

venerdì, dicembre 07, 2007

PDC 2008

Dopo la cancellazione improvvisa di PDC 2007, Microsoft annuncia le date della prossima Professional Developer Conference 2008, a fine ottobre 2008 sempre a Los Angeles (non potevano cambiare, tipo San Francisco o New Orleans?).

Maggiori informazioni qui e qui. Quali tecnologie saranno al centro di questo PDC?

martedì, dicembre 04, 2007

Sharepoint 2007 ... a support nightmare

Usiamo Sharepoint internamente da sempre. La scorsa primavera decido che era ora di passare alla versione 2007, anche solo per la migliore integrazione con Office 2007.

La migrazione in-place non era un'opzione, era necessario passare ad un server diverso per esigenze hardware e l'idea di lanciare un setup complesso sul server che contiene tutti i dati dei progetti, offerte etc..  non mi rendeva sufficientemente tranquillo. Quindi opto per la database migration, dove qualcosa però va storto. Quindi apro una richiesta di supporto a Microsoft sull'argomento, meglio rivolgersi agli specialisti piuttosto che rischiare di sprecare ore preziose senza la certezze del risultato.

Il caso di supporto è stato aperto il 30 aprile 2007 ed è stato chiuso il 4 dicembre 2007... Già, sono passati 7 mesi.

Senza scendere in dettaglio, sicuramente è stata la più disastrosa esperienza di supporto che abbia vissuto in questi primi 11 anni di collaborazione con Microsoft ed ha inevitabilmente incrinato la mia fiducia nella piattaforma Sharepoint 2007, in quanto il supporto ne fa parte e non è un aspetto da sottovalutare.

giovedì, novembre 22, 2007

ONE-Day by XeDotNet.org

Il prossimo 17 gennaio XeDotNet.org organizza ONE-Day Web Development, un evento di una giornata intera dedicato alle tecnologie web.

Sono aperte le iscrizioni, invito tutti ad iscriversi al più presto.

ONE-Day Web Development (17 Gennaio 2008)

Technorati tags: , , ,

mercoledì, novembre 21, 2007

Multitargeting di Visual Studio 2008 in progetti VB.Net

Il multitargeting di Visual Studio 2008 permette di utilizzare un unico ambiente di sviluppo per realizzare progetti che utlizzano il Framework 2.0, 3.0 o 3.5. In questo modo si possono continuare a sviluppare progetti indirizzati a .Net 2.0 o 3.0 senza il rischio o la nessità di utilizzare nuove librerie ed istruzioni ma beneficiando comunque del nuovo ambiente di sviluppo.

Se, come il sottoscritto, avere perso diversi minuti a capire dove impostare la versione del Framework da puntare nelle proprietà di un progetto VB.Net troverete molto utile questo post di Stefano DeMiliani. In progetti C# questa opzione compare nella prima pagina delle proprietà di progetto, mentre in VB.Net è molto meno visibile, tra le Advanced Compile Options della pagina Compile.

Un interessante post di Corrado Cavalli mette in evidenza un possibile limite alla compatibilità tra l'ambiente di sviluppo Visual Studio 2008 e le diverse versioni del Framework .Net, che vengono corrette con la SP1 sia per 2.0 e 3.0. Da tenere a mente.

martedì, ottobre 02, 2007

SQL 2005: OUTPUT

Sapevate che SQL 2005 ci ha regalato una nuova clausola: OUTPUT.
OUTPUT ha accesso a tabelle con eventi di inserted e deleted (virtual tables) come i triggers.



giovedì, settembre 20, 2007

Cercare il testo all'interno di una Storeprocedure

Può tornare comodo:
DECLARE @StringToSearch varchar(100)
SET @StringToSearch = '%testo da cercare%'

SELECT Distinct SO.Name
FROM sysobjects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
AND SO.Type = 'P'
AND SC.Text LIKE @stringtosearch
ORDER BY SO.Name



Oppure:
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%testo da cercare%'
AND ROUTINE_TYPE='PROCEDURE'

lunedì, settembre 10, 2007

Singleton Forms

Un altro modo per gestire il Singleton Pattern usando i generics:

martedì, agosto 21, 2007

Windows Forms Security

Un pò di info sulla Sicurezza in Windows Form:

Abstract Vs. Interface

Quali sono le differenze tra classi astratte e Interfacce?
Quando usare le prime o le seconde?

Forse questo ci aiuterà:

lunedì, giugno 18, 2007

Learning VB.Net

Raccolgo in questo post alcune risorse online utili per chi desidera iniziare il processo di apprendimento di Visual Basic .Net

Beginner Developer Learning Center, una guida introduttiva a .Net su MSDN
Introduction to VB.NET Object-Oriented Features
Learn VB.Net, interessante raccolta di lezioni su Vb.Net
VB.Net School

Per ora queste possono bastare.

Technorati tags: , ,

mercoledì, giugno 06, 2007

Port Sharing su WCF

In WCF è possibile condividere l'uso di una determinata porta TCP tra più servizi diversi, grazie al Port Sharing.

Questo servizio, denominato Net.Tcp Port Sharing Service è installato con il framework 3.0 ma di default l'avvio è manuale e l'account utente predefinito è LocalSystem. Dopo averlo avviato ed impostato l'avvio in automatico, si può procedere a configurare il resto.

Visto che il servizio Windows (o application pool di IIS) che ospita il nostro/vostro servizio WCF utilizza un account utente che non ha privilegi amministrativi, è necessario abilitare questo account all'accesso tramite Port Sharing.
Per questo è necessario ottenere il SID dell'account utente (ho usato il tool user2sid.exe) ed aggiungerlo alla configurazione del servizio Net.Tcp Port Sharing Service, il file SmSvcHost.exe.config che si trova nella cartella di sistema di WCF, qualcosa come  C:\windows\Microsoft.Net\v3.0\Windows Communication Foundation.
Attenzione!!! Se, come nel mio caso, il sistema operativo è a 64 bit e, di conseguenza, anche .Net 3.0 è a 64 bit, esiste un'altra cartella, del tipo C:\WINDOWS\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation, dove si trova il servizio ed il file di configurazione che entrano in gioco.
Qui trovate le istruzioni per configurare il servizio Net.Tcp Port Sharing Service. Da tenere a mente che le configurazioni relative al canale Tcp presenti in questo file di configurazione hanno il sopravvento su quanto specificato nel file di configurazione del nostro servizio.

Una volta attivato il Net.Tcp Port Sharing Service e consentito l'accesso al nostro account, si può configurare il nostro servizio WCF perchè utilizzi la condivisione della porta. Per fare questo è sufficiente abilitare l'attributo portSharingEnabled della binding configuration:

<netTcpBinding>
<binding name="aTcpBindingName" portSharingEnabled="true">
</binding>
</netTcpBinding>

A questo punto tutto è a posto.

martedì, maggio 15, 2007

Pat Helland is back

Pat Helland è una delle personalità più influenti nel campo della gestione delle transazioni e dei database in Microsoft. Credo di avere letto per la prima volta qualcosa di suo ai tempi di MTS 1.0, molti anni fa.

Dopo avere lasciato Microsoft per due anni passando ad Amazon.com è tornato in Microsoft. Sicuramente una bella notizia in un periodo in cui sono frequenti le notizie della dipartita di personalità di rilievo da Microsoft.

martedì, aprile 10, 2007

WCF Post Action Report

Lo scorso venerdì 6 aprile ho avuto l'occasione di presentare Windows Communication Foundation all'interno del ciclo di meeting di XeDotNet.org sul framework .Net 3.0.

Una esperienza interessante anche se sono molto più felice ora che è passata. Grazie a tutti per l'incoraggiamento e sono soddisfatto di avere riscontrato l'apprezzamento dei presenti (almeno fino a quando non vedrò i risultati dei feedback).

Forse ripeterò l'esperienza in futuro, per ora sono contento di avere dato il mio piccolo contributo al gruppo XeDotNet.org che continua a crescere. Il ciclo di meeting su .Net 3.0 è molto interessante e vi consiglio di partecipare alle prossime riunioni.

venerdì, aprile 06, 2007

Una visita guidata a WPF

Windows Presentation Foundation con XAML (eXtensible Application Markup Language)  per la gestione delle nuove esperienze UI in WIndows:

WMI: Who am I?

Se non lo conoscete eccovi un paio di dritte per introdurvelo:

Reflection: esempi per capire

Ecco un paio di esempi di come usare le reflection nell'analizzare oggetti .NET:

Come usare i Property Grid

Articoletto veloce veloce per capire come utilizzare ed estendere i PropertyGrid (da CodeProject ).

martedì, marzo 20, 2007

Windows Communication Foundation a XeDotNet

Durante il prossimo meeting di XeDotNet.org del 6 aprile terrò una sessione su Windows Communication Foundation.

Se siete interessati ad una introduzione e qualche approfondimento su WCF, iscrivetevi.

L'evento si tiene a Mestre, nella sede ACLI di via Girolamo Ulloa. Se arrivate in treno, la sede si trova all'uscita del sottopassaggio della stazione che porta anche ai binari. 
Per la mappa per giungere al luogo dell'incontro cliccare qui.

L'iscrizione all'evento è gestita direttamente da Microsoft. Questo è il collegamento alla pagina di registrazione.

venerdì, febbraio 16, 2007

Global knoledge resources

Un link con un sacco di info a proposito di un sacco di cose (sempre IT, ovviamente)

SQL: @@IDENTITY, forse abusata

Sapevate che @@IDENTITY ha delle sorelle meno conosciute, ma a volte più utili della stessa?
Ebbene si: esistono SCOPE_IDENTITY() e IDENT_CURRENT('table_name').

Valutate bene quando usarle...

Alcuni link in proposito:

Grazie Maxmost

mercoledì, febbraio 14, 2007

SQL: Table variables vs. Temporary table

Table Variables.... io non le avevo mai usate, ma adesso, nei giusti casi... le userò di certo:

T-SQL: Cursori in output

Mi sono trovato a dover scrivere sta robba e ne è venuta fuori un utile procedura per l'esecuzione di comandi SQL dinamici (supporta anche parametrizzazione).
Può essere un punto di partenza per cosine più complesse.

CREATE PROCEDURE dbo.GenericCursor
@genericCursor CURSOR VARYING OUTPUT
, @CMD Nvarchar(1024)
AS
BEGIN
DECLARE @CMDx Nvarchar(1024);
SET @CMDx = 'SET @genericCursor = CURSOR FORWARD_ONLY STATIC FOR ' + @CMD + '; OPEN @genericCursor;'
exec sp_executesql @CMDx,
N'@genericCursor cursor output',
@genericCursor out
END



CREATE PROCEDURE testGenericCursor
AS
BEGIN
DECLARE @MyCursor CURSOR;
DECLARE @name as varchar(100);
DECLARE @CMDx Nvarchar(1024);
SET @CMDx = 'SELECT TOP 50 name FROM dbo.sysobjects;'
EXEC dbo.GenericCursor @MyCursor OUTPUT, @CMDx;
FETCH NEXT FROM @MyCursor INTO @name;
WHILE (@@FETCH_STATUS = 0)
BEGIN;
FETCH NEXT FROM @MyCursor INTO @name;
SELECT @name
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
END


EXEC dbo.testGenericCursor

martedì, febbraio 13, 2007

Expresso: Regular Expression

Un buon tool per l'uso e abuso delle RegExp è secondo me Expresso:

In generale sulle Regular Expressions:

Percorsi formativi in .NET

Una serie di utili links a guide sul percorso formativo in ambito .NET

L'architetto del software

Una nostra vecchia conoscenza del corso MCSD spiga in questo racconto chi è l'architetto nel mondo del software.
Simpatico.

NHibernate: Hibernate per .NET

NHibernate è un porting del nucleo di Hibernate per Java sul framework di .NET.
Gestisce la persistenza degli oggetti in .NET su una base di dati relazionale.
Data una descrizione XML delle entità e relazioni, NHibernate genera automaticamente il codice SQL per caricamento e memorizzazione degli oggetti.
Facoltativamente, si può descrivere i meta dati di tracciato con gli attributi nel codice sorgente.

lunedì, febbraio 12, 2007

C# ereditarietà multipla

Per aggirare la single inheritance (ereditarietà da una sola classe base, ma da n interfacce) sono possibili alcune vie in C# 2.0, più o meno semplici... vediamo come:

giovedì, gennaio 25, 2007

Lezioni di .Net 3.0

Ripropongo da questo blog Microsoft il link ad una serie di lezioni pratiche su .Net 3.0, in pratica diversi post che affrontano con dei tutorial le diverse tecnologie WPF, WCF (la mia preferita) e WWF (o WF). 

lunedì, gennaio 08, 2007

Il deployment di un servizio WCF senza usare IIS

Spesso si ospitano dei servizi Windows Communication Foundation (WCF) in IIS ma non è l'unico modo per esporli ai client. Un qualsiasi applicativo di tipo console o anche una semplice applicazione Windows Forms possono ospitare dei servizi e ci sono alcuni casi in cui questa opzione non è poi così assurda come potrebbe sembrare.

Una alternativa host per WCF propriamente confrontabile con IIS è un servizio di Windows, capace di partire in modo automatico/unattended all'avvio del sistema e pensato per operare 24x7.

In questo post racconto la mia esperienza di deployment di un servizio Windows. Questi sono i passi che ho seguito:

  • Registrare il certificato se, come me, avete scelto di implementare un servizio che usa:
    • sicurezza a livello di messagio
    • credenziali di sicurezza UserName
    • un validatore custom per le credenziali
  • Registrazione namespace
  • MSMQ, privilegi di accesso e registrazione certificati

Certificato
Il certificato, pubblicamente verificabile ed emesso da una Certification Authority (CA), può essere registrato nel server usando l'add-in Certificate in una console MMC. Lanciare mmc.exe, menu File, voce Add/Remove Snap-in, aggiungere Certificate, selezionare quale certificate store gestire.
Nel mio caso ho scelto di registrare il certificato a livello di computer account, tra i Trusted Publishers. Questa impostazione deve coincidere con quanto riportato nella configurazione del servizio WCF.

Il certificato viene utilizzato dal servizio WCF per gestire la crittografia delle comunicazioni client-server e quindi l'account con cui viene eseguito il servizio Windows deve avere accesso alla chiave privata.
Il servizio Windows può utilizzare un qualsiasi account predefinito, come LocalSystem, o del dominio. Nel mio caso ho deciso di creare un account di dominio specifico per il servizio WCF, al fine di controllare facilmente i privilegi di accesso alle diverse risorse del dominio.
WinHttpCertCfg.exe (MSDN e Support) è uno strumento da linea di comando per verificare e concedere l'accesso al certificato.

Nel mio scenario ho eseguito questo comando per verificare gli account che hanno già accesso alla chiave:

winhttpcertcfg -l -c LOCAL_MACHINE\TrustedPublisher -s <nome certificato>

Questo comando invece per assegnarlo all'utente desiderato :

winhttpcertcfg -g -c LOCAL_MACHINE\TrustedPublisher -s <nome certificato> -a <dominio>\<utente>

Namespace
Probabilmente il servizio WCF da esporre ha degli endpoint con binding http e se il sistema server è Windows 2003 Server SP1, Windows Vista o Windows XP SP2 è necessario avere a che fare con HTTP.SYS. Rimando a questo articolo per i dettagli su HTTP.SYS.
Per quanto ci interessa ai fini di WCF, solo gli amministratori hanno il diritto di registrare un namespace arbitrario, senza previa autorizzazione, mentre l'account che si usa per il servizio Windows non ha privilegi così elevati.

Per registrare il namespace si utilizza lo strumento da linea di comando HttpCfg.exe (MSDN), già presente in XP SP2, installabile con i support tools in Windows Server 2003.

Il problema di HttpCfg.exe, per chi è allergico agli strumenti da riga di comando, è la complessità dei parametri. Dominick Baier ha realizzato HttpSysCfg.exe, un utilissimo strumento che semplifica le operazioni.

Nel mio caso ho selezionato l'account per il servizio Windows ed ho aggiunto l'URI del servizio, nella forma:

http://+:<porta>/<TuaApplicazione>

L'URI è diverso da un caso all'altro. Lo strumento ha bisogno di HttpCfg.exe per funzionare. Per i dettagli si vedano questo post e anche questo.

Su Vista non è presente il tool HttpCfg.exe e si utilizza il comando netsh.exe per configurare HTTP. Si può anche installare HttpCfg.exe ma per la registrazione del namespace netsh.exe è altrettanto "semplice". Con netsh.exe il comando avrà una sintassi di questo tipo:

netsh http add urlacl http://+:<porta>/<TuaApplicazione> user=<utente>

MSMQ
Nel mio scenario ci sono anche degli enpoint con binding msmq (molto interessante). Si deve verificare che all'account del servizio Windows siano concessi i privilegi necessari per accedere propriamente alla coda.

Uilizzando MSMQ ho anche incontrato un errore inatteso. Quando il servizio WCF tentava l'accesso alla coda per inserire un messaggio, riceveva una eccezione del tipo: "No internal Message Queuing certificate exists for the user".

Per risolvere il problema e non perdere troppo tempo ho preferito usare le maniere forti. Ho lanciato MMC utilizzando (RunAs) l'account per il servizio Windows, ho apero lo strumento di amministrazione di MSMQ (Computer Management) ed ho registrato lo user certificate (Technet). Immagino ci siano altri modi per affrontare il problema.

Conclusione
Avendo iniziato ad usare WCF nel 2003, mi lascia abbastanza perplesso la mancanza di strumenti amministrativi visuali in grado di coprire queste semplici esigenze. I tool di integrazione di WCF in Visual Studio 2005 non sono ancora giunti alla versione definitiva e potrebbe spuntare qualcosa di nuovo nelle prossime settimane (o mesi).
Immagino che tutto quanto ho descritto si possa realizzare con delle custom actions nel setup del servizio Windows ma nel mio scenario sarebbe stato un overkill.

Ovviamente ho raccontato la mia personale esperienza, ho tralasciato molti dettagli e sottinteso alcuni concetti di WCF. Per maggiori informazioni su WCF questo è un ottimo punto di partenza.

giovedì, dicembre 21, 2006

ClickOnce

Dopo aver provato le laboriose proposte delle varie Enterprise Library, ecco finalmente la vera panacea (o quasi...): ClickOnce - da incrociarsi con la nuova gestione dei Settings di .NET 2.0!

  • FAQ: Tutte le domande che vi vengono in mente (con le risposte :-))
  • MSDN1 e MSDN2: come si fa a deployare con ClickOnce
  • CodeProject: e come si fa senza VS2005
  • CodeProject e MSDN: come usare i Settings
  • MSDN: usare Mage.exe per generare i deploy a manina
  • MSDN: deploy a manina di applicazioni clickoncenabled
  • MSDN: Tutto su ClickOnce
  • MSDN: Riassunto
  • MSDN: Trusted Publisher

    !!! Se avete problemi col deploy Clickonce via Internet ecco la soluzione: da Codeproject !!!

Namespaces in C# 2.0

Può esservi capitato di andare in confusione con lo scope di qualche Type Name a causa di come erano gestiti i Namespaces in .NET 1.1, ma adesso C# 2.0 ha apportato qualche utile novità: leggete questo semplice articolo tratto da CodeProject.

mercoledì, dicembre 13, 2006

PDC 2007!!!

Da un post di Brad Adams leggo l'annuncio della data e location della prossima Professional Developer Conference, prevista per l'Ottobre 2007 a Los Angeles.
Manca ancora un po' di tempo ma è bene pensarci su, avendo partecipato alla edizione 2000, 2003 e 2005 posso confermare per esperienza personale che sono eventi che valgono ogni singolo centesimo.

lunedì, dicembre 11, 2006

Smart Pos.Net featured on showcase.netfx3.com

Il nostro prodotto "Smart Pos.Net", realizzato da BEDIN Shop Systems utilizzando Windows Communication Foundation di .Net 3.0 è da oggi segnalato su http://showcase.netfx3.com.
Abbiamo anche realizzato un video che presenta il prodotto e mostra la modalità d'uso e gli scenari di implementazione, probabilmente verrà messo online sul sito http://showcase.netfx3.com prossimamente.

"Smart Pos.Net" è parte di una suite di smart client e servizi web per il commercio al dettaglio. Per ora non è disponibile una versione demo, appena sarà offerto in modalità di prova segnalerò il link.

Smart Pos.Net
BEDIN Shop Systems

Spedire Mail con .NET 2.0

Ecco una FAQ completa sul namespace System.Net.Mail; ecco inoltre alcuni esempi anche con System.Web.Mail da Codeproject.

martedì, dicembre 05, 2006

Validazione Controlli in Windows Forms

Ecco degli articoli che spiegano come automatizzare i controlli di validazione nelle Form del Framework:

Transazioni e Error Handling in SQL Server

Ecco alcuni articoli su come gestire transazioni in SQL Server e come gestire gli errori.

Inoltre ecco due interessanti e dettagliati articoli di Erland Sommarskog:

lunedì, novembre 27, 2006

Transazioni Distribuite

Ecco un interessante articolo per capire in maniera più approfondita come gestire transazioni distribuite: DataPoints da MSDN


E per rimanere in ambito SSIS:

sabato, novembre 18, 2006

Connection Pooling

Simpaticamente il nuovo ADO.NET oltre ad altre cose molto carine che ci permettono di astrarre dal .NET provider in uso, ci offre nuove vie per gestire i pool di connessioni (ClearAllPools e ClearPool ad esempio per pulire il connection pools per un dato provider, oppure il connection pool associato ad una specifica connection)
http://msdn2.microsoft.com/en-us/library/8xx3tyca.aspx

Interessante articolo di Codeproject.

How to quick Start: GotDotNet How To...

giovedì, settembre 14, 2006

Web Service Enhancements

Ecco una serie di link interessanti sui webservices e sulle alternative disponibili sul .NET Framework 1.1

P.S: se mai servisse un tool per lavorare con ste cose: MS WebDeveloper Express

C#: lavorare con le immagini

Ecco una serie di links che messi assieme possono aiutare a costruire un tool per gestire immagini e per elaborarle accedendo anche ai Tag EXIF.

giovedì, settembre 07, 2006

Una volta c'era NDoc, ma ora...

c'è SandCastle per costruire documentazione in ambiente .NET 2005:

venerdì, luglio 21, 2006

Guidance Explorer

Proprio stasera mi sono concesso un pò di tempo per dare un'occhiata al Guidance Explorer: dovrebbe essere una panacea contenente le linee guida (secondo standards Microsoft Patterns & Practices) per lo sviluppo architetturale delle proprie applicazioni.
Beh, francamente sono un pò deluso... in un progetto reale non lo vedo di facile uso... è vero che è innovativo rispetto a FxCop i cui suggerimenti sono a posteriori, ma non ne riesco a vedere la comodità.
Appena aperto, però, mi sono messo a leggere alcune guidance molto interessanti ed ho cominciato poi a perdermi nei meandri della documentazione rinfrescandomi le nozioni e imparando un paio di concetti nuovi. Ecco perchè secondo me è un ottimo learning tool ma l'obbiettivo di guidare la progettazione o lo sviluppo mi sembra ancora lontano. Il fatto di poter invece scrivere le proprie guidance direi che è molto importante e potrebbe eleggere questo tool ad essere usato all'interno di un ristretto Team per le proprie linee guida da seguire.
Voi che dite?

martedì, luglio 18, 2006

Disponibile la July CTP di WCF

Da poco è disponibile la CTP di luglio di .Net 3.0, che comprende WCF. In questo post Tom Archer spiega cosa è contenuto in questa CTP: se volete/dovete svilupparci sopra gli strumenti di integrazione per Visual Studio "Orcas" mancano da questa CTP. Quindi continuo a lavorare sulla June CTP, che per me era già abbastanza nuova e libera da bug bloccanti.

Stiamo lavorando a pieno regime su WCF (vorrei continuare a chiamarlo "Indigo" ma ci si deve abituare) ed i giorni di laboratorio con Clemens Vasters si stanno dimostrando sempre più utili. Rimane solo da sperare che Vista non ritardi troppo, tirandosi dietro .Net 3.0 a cui è legato.

giovedì, luglio 06, 2006

Mutex vs. GetProcessesByName

Vi siete mai accorti che se volete fare un'applicazione single-instance e decidete di usare GetProcessesByName potete imbattervi in qualche problemuccio (leggi: l'applicativo nun parte chiù)?!?
No?!? Bhè ve lo assicuro! Dato che se vi trovate qualche chiave "DisablePerformanceCounter" settata a 1 in giro per il vostro registry, oppure avete dei limiti sui diritti dell'utente e ACL varie...

Io preferisco i mutex e qui c'è un esempio che vi può essere utile:

Caricare Assembly a RunTime

Ho avuto modo di smazzularmi un pò con Assembly.Load e Assembly.LoadFrom...
...bhè ho avuto qualche problemino, ma alcuni interessanti links mi hanno aiutato a venirne fuori...
Ve li propongo, non si sa mai!

e ricordatevi di quell'area sconosciuta della CAG che si chiama Assembly Downlad Cache, molto utile in questo genere di RunTime Loading, che potete miracolosamente esplorare con "gacutil.exe /ldl" e ripulire con "gacutil.exe /cdl".

lunedì, giugno 26, 2006

WCF a Manchester con Clemens Vasters

Sto passando questi due giorni a Manchester, UK, per l'evento chiamato "WCF Deep Dive", in pratica si tratta di due giorni chiuso in un ufficio a discutere su come implementare Indigo (WCF) all'interno della tua applicazione con un membro del team di Indigo .
Questa mattina quando Craig McMurtry mi ha comunicato il nome della persona che mi avrebbe seguito ero sicuro di avere capito male. Quando il team member di Indigo è entrato in ufficio e si è presentato mi sono detto che probabilmente ci sono altre persone di origine tedesca con nome simile che lavorano nel team. Alla fine mi sono arreso e gli ho chiesto se era proprio il Clemens Vasters noto a tutti.
Ottenere dei consigli da una persona che fa parte del team di Indigo di così alto livello è qualcosa di unico che solo Microsoft sa fornire.
E poi oggi Clemens ha scritto in VB.Net visto che io lo preferisco...

martedì, aprile 04, 2006

Perchè si tende a procrastinare

Interessante spiegazione del comune comportamento per cui si tende a posticipare o rimandare un task...ad esempio: "Longhorn sarà basato su WinFS" poi "Longhorn, privo di WinFS, sarà rilasciato entro il primo quarto del 2006" ed infine "Windows Vista ha subito un lieve ritardo e sarà rilasciato i primi del 2007"...chissà quale sarà la prossima.

read more digg story


Powered by Qumana

giovedì, marzo 09, 2006

Origami unveiled

Oggi si inizia a parlare seriamente di Origami, il nuovo PC ultra mobile di Microsoft, annunciato ufficialmente oggi al CeBit di Hanover. Basato su Windows XP Tablet (quante volte avrei voluto comprarlo) ha moltissime funzionalità interessanti.
Ha connettività bluetooth e lettore di CF, combinandoli ti permette di fare delle foto (non con Origami, ovviamente), salvarle subito su pc on the road e geotaggarle con il gps...magnifico, lo comprerò solo per questo.
Con il wifi può diventare un telefono con Skype. Connesso alla rete casalinga puoi vedere le foto immagazzinate sul server di casa o su Flickr, puoi accedere al web dal divano (per chi non ha Media center) senza girare con un pesante e scomodo portatile.
Questi sono solo alcuni degli argomenti per cui Origami sarà il mio prossimo acquisto importante.

Il sito di presentazione di Origami
Il sito ufficiale di Origami, foto e descrizioni dettagliate.

Riporto queste notizie, ovviamente tramite Scooble.
Origami Revealed - First Take Analysis
Origami su Channel9

Non ho ancora capito quando sarà disponibile per il pubblico.

martedì, febbraio 28, 2006

Serializzazione e deserializzazione

Utile poter serializzare un oggetto e poterlo deserializzare in modo pseudo gratuito grazie al Framework.

Link sull'argomento:

lunedì, febbraio 13, 2006

How-To-Select an Object-Relational Mapping Tool for .NET

Tramite un post di Lorenzo Barbieri, voglio segnalare questa guida agli strumenti Object Relational Mapping per .Net.

Questi strumenti mi hanno sempre interessato e ciclicamente ne ho provati alcuni e mi sono interrogato sull'opportunità di utilizzarli nei miei prodotti.
Alcune volte mi ha bloccato il fatto che lo strumento "ideale" non supportava .Net 2.0 (ora supportato da molti di questi strumenti) o mancava di un editor visuale per comporre le query, come permette il designer dei dataset e typed tableadapters in ADO.Net.
La produttività è altrettanto importante, per me anche più importante, dell'astrarsi dall'uso diretto di una tecnologia di accesso ai dati.
Uno degli ultimi fattori che mi ha bloccato dal passare dalla valutazione all'uso reale è stato il supporto (o meglio l'assenza di supporto) alle transazioni distribuite, oggi facilmente utilizzabili con System.Transactions. Non so quali strumenti mancano di questa capacità.

venerdì, gennaio 20, 2006

Analisi comparativa di LINQ

A PDC si è parlato molto di LINQ, una tecnologia di accesso ai dati rivoluzionaria se riuscirà a vedere la luce, sorte che non è toccata ad altre tecnologie come ObjectSpaces da cui ha tratto, in parte, ispirazione.

In questo articolo su MSDN viene analizzata l'architettura di LINQ, confrontandola con le alternative presenti oggi, da ADO.Net a strumenti di generazione codice, ORM etc..

Bisognerebbe aggiungere che le alternative a LINQ sono già presenti da tempo, testate e maturate. Il mio parere, forse un po' superficiale, è che LINQ è superiore a qualsiasi alternativa esistente, anche se per favorire la produttività talvota scende a compromessi.

Fonte TheServerSide.Net

PS: Vorrei fare notare che questo è il 100mo post di questo blog!

giovedì, gennaio 19, 2006

Transazioni su Windows

Questa pagina raccoglie tutte le informazioni disponibili sui sistemi di gestione delle transazioni disponibili su piattaforma Windows, da COM+ a System.Transactions.
A più di un anno fa risale questo mio vecchio post su System.Transactions, una delle parti di .Net 2.0 che apprezzo di più.

fonte Mike Taulty

Disponibile la Beta 2 di WCF e WWF

Su MSDN è disponibile la CTP di Gennatio di WinFX che include WCF (noto come "Indigo") e WWF.
Di questi due componenti è disponibile la licenza GoLive, che quindi fa ben sperare nell'approssimarsi della versione definitiva (ovviamente tra diversi mesi).
Forse gli darò un'occhiata per vedere se posso iniziare ad usarli nei nostri Retail Web Services.

lunedì, gennaio 16, 2006

User group Veneto

Andrea Boschin ha ufficialmente annunciato la creazione di uno User group sul framework .Net per il Veneto.

Si tratta di una iniziativa molto importante ed utile per tutti coloro che operano sul territorio veneto e sono interessati alla diffusione del framework .Net. Sarà possibile adattare le attività del gruppo alle necessità e difficoltà della realtà veneta, sotto molti aspetti diversa da quella che gravita attorno a centri più importanti come Milano o Roma.

Io sono un attivo sostenitore di questa iniziativa e vi invito a partecipare alle attività dello User group.

giovedì, gennaio 12, 2006

ISO 8601, standard per le date

Per chi ha mai avuto o avrà l'esigenza di gestire le settimane dell'anno (da 1 a 52 o 53) e determinare l'appartenenza di una data X alla N settimana dell'anno, ecco alcune informazioni utili.

Lo standard ISO 8601 definisce le regole di rappresentazione delle date. Riguardo alle settimane, lo standard stabilisce che la prima settimana dell'anno (W01) è la settimana che contiene il primo giovedì dell'anno (4 giorni su 7, la maggioranza della settimana).

Questa istruzione in .Net restituisce il numero di settimana seguendo lo standard ISO 8601
System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(x, Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)

Come sempre Wikipedia è la fonte.

lunedì, dicembre 19, 2005

SOA e Indigo

Questo è un interessante articolo da FTPOnline introduttivo su Windows Communication Foundation's service orientation (SO) e Indigo, interessante.

venerdì, dicembre 16, 2005

Refactoring

Per tutti i non ReSharper addicted, vi giro un post di G. Cannalire:
"Come è noto, con Visual Studio 2005, i soli programmatori C# disporranno di funzionalità di refactoring integrate nell'IDE.Qualcuno deve aver pensato bene che anche ai programmatori VB potesse far comodo uno strumento del genere ed ecco che, da qualche giorno, Microsoft annuncia la disponibilità di un tool esterno e gratuito, denominato Refactor! for Visual Basic 2005 (...is a free plug-in from Developer Express Inc., in partnership with Microsoft...).
Ma perchè aspettare VB 2005?Essendo in possesso della "
.NET Subscription" di DevExpress, ho subito scaricato Refactor! PRO for Visual Studio .NET 2003 (disponibile da pochi giorni)Risultato:...quanto è bello il refactoring con strumenti di questo genere!!!Pensando a quanto codice VB6 dovrò ancora manutenere, mi chiedo se esista qualcosa del genere anche per Visual Studio 6.0.Quasi quasi, faccio una ricerca sulla Rete :)"

mercoledì, novembre 30, 2005

Going solo

Questo interessante post descrive come può essere la vita di un consulente indipendente. Per chi pensa di iniziare un percorso lavorativo in solitario...

venerdì, novembre 18, 2005

Sempre su Windows Forms

Non avevo mai notato, fino al precedente post di Davide, questi utili link su Windows Forms e sul DataGrid Control.
Sono sicuramente un ottimo punto di partenza, un must read!

Articoli correlati:

Per informazioni di background:

giovedì, novembre 17, 2005

FAQ Windows Forms 2.0

Sono state pubblicate delle interessanti FAQ sui controlli di base di Windows Forms in .net 2.0.
Quella sul controllo DataGridView è particolarmente dettagliata.

Le trovate qui, sul sito WindowsForms.Net.

La DataGridView è molto potente, forse ha più potenzialità delle griglie di terze parti come ComponentOne (che uso) e Infragistics (che non conosco). Ho seguito una sessione su questo controllo a PDC 2005 e mi ha colpito.
Per ora non siamo riusciti ad usarla perchè, nonostante sia possibile creare controlli personalizzati da inserire nelle celle con semplicità e grande controllo, questi controlli non sono visibili se non quando si entra in modalità edit nella cella (quando ci si entra). Di conseguenza, se con il controllo personalizzato si voleva gestire in forma + elaborata la visualizzazione delle informazioni, oltre a gestirne la modifica, si manca l'obiettivo.
Guarderò meglio la FAQ ma temo di non trovare novità in questo senso.

mercoledì, novembre 09, 2005

AJAX: è un mondo asincrono

AJAX.NET Professional
Vi ricordate Remote scripting? Quella era porcheria...
AJAX mi sembra molto più ben studiato e strutturato.
Devo ancora iniziare ad usarlo ma penso che inizierò a studiarlo a breve.
Che ne pensate?

Ancora sui Delegates

Interessanti articoli in proposito:

martedì, novembre 08, 2005

DataGrid & Combos Master and Detail

In questo blog si spiega come ottenere semplicemente una serie di controlli legati in maodo master-detail. Semplice, ma efficace.
Inoltre in questo articolo da MSDN trovate utili informazioni su come utilizzare e personalizzare i DataGrid

CommandBuilder si o no?

In questo interessante articolo si aiuta a capire meglio come funzionano i CommandBuilder e quando sia il caso di usarli o meno. Buona lettura!

Tools per Visual Studio

In questo sito SharpToolbox trovate tutti gli strumenti free e non che possono aiutarvi ad aumentare la vostra produttività con l'IDE di Visual Studio. Take a look!

Logging in .NET

Se avete bisogno di una library di logging concettualmente simile a log4net, progettata con semplicità e flessibilità, ecco da sourceforge.net NLog. Provatela e andate sul sicuro!

giovedì, ottobre 27, 2005

CodeXchange per VS2003

In breve , CodeXchange è un add-in per Visual Studio.NET e un'applicazione standalone che fornisce accesso integrato e istantaneo ad un repository online di codice .NET proto da usare.
Gratuito e utile... codeXchange

VS2003 Start Page

Ecco come personalizzare la StartPage di VS2003 da MSDN

lunedì, agosto 08, 2005

MONO

Il progetto mono sviluppato da Novel è un framework open source alternativo a quello .net di microsoft, esso è ancora in via di sviluppo ma già ad un buon livello.

venerdì, giugno 17, 2005

martedì, giugno 14, 2005

Le stringhe in .Net 2.0

In questo interessante articolo su MSDN sono descritte le best practices per l'uso delle stringhe in .Net 2.0 che, sotto certi aspetti, sono cambiate rispetto a .Net 1.x
Viene affrontato il "problema Turco": non si tratta degli sforzi diplomatici degli Alleati per coinvolgere la Turchia nella seconda guerra mondiale o di quelli dell'Asse per mantenerla neutrale.
Si tratta di una mancanza presente nella 1.x che viene esemplificato con l'uso della Culture "tr-TR".

venerdì, giugno 10, 2005

Davide goes to PDC 2005

Parteciperò con gioia alla prossima Professional Developer Conference 2005, che si terrà a Los Angeles dal 13 al 16 Settembre 2005.

Nel mio blog ho creato una categoria apposita in cui vi terrà aggiornati sull'evento.

giovedì, maggio 26, 2005

Indigo workshop

In questi giorni ho partecipato ad un workshop sulla tecnologia Indigo presso la sede Microsoft di Monaco, riservato alle aziende che fanno parte di un programma di adozione anticipata di questa tecnologia.

Difficile dire in poche parole cosa Indigo è (come direbbe Yoda): è un programming model che riunisce ed amplia le tecnologie di comunicazione tra processi esistenti in ambiente Windows. Coordina e sfrutta al meglio quanto oggi è esistente con grande attenzione alla interoperabilità con ambienti diversi.

Detto così non sembrerebbe una grande cosa, invece si tratta dell'iniziativa più innovativa e di maggiore valore assoluto portata avanti da Microsoft negli ultimi anni.

Oggi esistono DCOM, COM+, MSMQ, .Net Remoting, ASMX, WSE, etc.... In base allo scenario che si affronta le scelte tecnologiche e di conseguenza l'object model da usare cambia. Ci siamo abituati ma è pur sempre una limitazione.
Indigo propone un object model unificato, molto ricco ma estremamente semplice, che distingue tra i compiti dello sviluppatore e le possibilità dell'amministratore, che permette di affrontare ogni scenario e ne abilita di nuovi.

Indigo può comunicare tramite code, può inviare comunicazioni fire and forget, può stabilire comunicazioni bidirezionali tra client e server anche tramite http: apre due canali distinti e riceve le comunicazioni server to client in modo trasparente...semplice ed efficace. Può usare diversi protocolli di comunicazione. Può fare molto altro...

Questo post su MSDN spiega sicuramente meglio cosa è Indigo. Indigo è uno dei pilastri di Longhorn ed il suo futuro è legato a quello di Indigo. Indigo, come Avalon, sarà disponibile anche per XP e 2003.

Nel prossimo futuro immagino ci saranno molte più applicazioni "rich-client" di quante ce ne siano in giro oggi.

Il framework .Net, dalla prima versione alla prossima 2.0, facilita enormemente la produzione di "rich-client", rendendone agevole anche la distribuzione (con ClickOnce per esempio). Molte applicazioni che oggi vengono realizzate in ASP.Net facendo salti mortali per aumentarne l'usabilità (senza grandi speranze) potrebbero essere realizzate in Windows forms. Ma questo non basta per invertire la tendenza, per spostare l'attenzione dal browser al desktop.

Longhorn non esisterebbe se la volontà non fosse quella di realizzare, almeno per Windows, un mondo di applicazioni ricche non basate su browser o sistemi che interoperano tra di loro, anche attraverso Internet, in modo sicuro ed affidabile, grazie ad Indigo.

Questo scenario mi piace e trovo uno spirito genuinamente innovativo in tecnologie come Indigo, ciò che spero è che (Microsoft) non si faccia troppo male per raggiungere questo obiettivo.

Solo il tempo dirà inoltre se con Indigo Microsoft manterrà la volontà di garantire l'interoperabilità verso gli standard (come WS-*) e le altre piattaforme o cercherà di fuggire in avanti offrendo nuove ed attraenti funzionalità a cui lo sviluppatore non saprà dire di no.

lunedì, maggio 16, 2005

Licenze Open Source

Avete poco chiara l'idea di licenza Open Source?
Questo link potrebbe aiutarvi a capire qualcosa:
http://www.dotnethell.it/articles/LicenzeOpenSource.aspx

martedì, maggio 10, 2005

Microsoft Coding4fun

Microsoft ha rilasciato un interessante sito per chi programma per divertimento e per hobby: ma ci sono robine davvero interessamti: Coding4fun !

mercoledì, marzo 02, 2005

.NET Conditio sine qua non

Direi che da ora in poi non si dovrebbe sviluppare nulla in ambiente .NET se non partendo dall'Enterprise Library, un insieme di cosiddetti Application Blocks che faciliteranno la comprensione e la realizzazione di Applicativi a livello Enterprise segiuendo le famigerate "best practices for .NET applications".

venerdì, febbraio 18, 2005

C# Boxing/Unboxing: non è uno sport!

Conversioni implicite di tipi valore in tipi object e viceversa: ecco come capire il meccanismo di boxing-unboxing:

C# Classi e Strutture: conosciamo davvero le differenze?

La situazione è cambiata da C++ a C#, basti pensare che in C# le structs sono value types, mentre le classi sono reference types... vediamo come capire e gestire questi tipi in questo interessante articolo.

.NET String.Format()

Se vi capiterà di dover formattare delle stringhe in .NET, qui trovate un simpatico ripostiglio di informazioni ed esempi pratici e non: String Formatting in C#

venerdì, gennaio 21, 2005

Embedding e utilizzo di Risorse in C#

Qui trovate due utili link che spiegano come "embeddare" risorse in un assembly e come utilizzarle da C#. Il tutto è semplicissimo grazie alle Reflection:

venerdì, gennaio 14, 2005

L'invidia del Mac

Questa sarà l'offerta dell'AppleStore fra qualche anno?
Mi sono sempre divertito a deridere i Mac ma in fondo (molto in fondo) mi piacerebbe avere un bel iMac in salotto che fa 4 cose e non sbaglia mai.....o forse ciò che mi attrae è la visione semplicistica del mondo visto con lenti Apple?
Se il mondo ti sembra troppo complesso, troppo veloce, con tecnologie che cambiano in continuazione, con una feroce competizione su una piattaforma più o meno aperta, è bello pensare che esiste un'alternativa: un ambiente costituito da meno di 10 prodotti hw (tiro a indovinare) e un s.o., prodotti che durano anni e non fanno niente di eccezionale...ma che però sono bellissimi!
Poi smetto di sognare e continuo a vivere nel mondo reale. Credo che Matrix farebbe usare Mac agli umani schiavizzati, altri ambienti forse dimostrano che Matrix non esiste. Oppure che è sadica.
Ho preso il link da questo post.

lunedì, gennaio 10, 2005

Personalizzare il file App.exe.config

Se avete bisogno di attaccarvi ad un file di configurazione diverso dal solito app.exe.config per esempio quando si crea un plugins per un applicazione host di terze parti o quando si fa il deploying dell'applicativo su com+ si potrebbe preferire l'utilizzo di un config file diverso da quello di default, ossia da: appname.exe.config. (dllhost.exe.config)
E' semplice fare un redirect dell'AppSettingsReader a un config file diverso scrivendo:
AppDomain.CurrentDomain.SetData(“APP_CONFIG_FILE”,”c:\\pippo.config”);
Tutte le chiamate al System.ConfigurationSettings.AppSettings ora useranno il nuovo binding…
Nota: Si può fare il bind aun file di configurazione una sola volta nell'istanza dell'app domain, ossia il cambio di binding DEVE essere fatto una sola volta PRIMA di usare l'app.config per la prima volta.

DA LEGGERE:
  1. Unraveling the Mysteries of .NET 2.0 Configuration
  2. Decoding the Mysteries of .NET 2.0 Configuration
  3. Cracking the Mysteries of .NET 2.0 Configuration

AGGIORNAMENTO:

.NET in Samples: free e-Book

.NET in Samples presenta molte tecnologie sulla piattaforma .NET come: security, cryptography, WMI, networking, IO e altro. Ancora in versione 'draft', ma molto completo: a tra poco la versione definitiva che verterà anche sulle features di Whidbey (pdf o doc).