Paolo Pialorsi

SOA, Workflow Foundation (WF), Windows Communication Foundation (WCF) e le Architetture Distribuite

settembre 2003 - Posts

Fantozzi :-) vola a Roma ...

NB: questo è un "post ludico" ... non leggere se devi lavorare che non voglio avere sulla coscienza la tua produttività! :-)


Questa settimana sono a Roma per un corso.
Ieri sera ho sfidato, mio malgrado, il blackout :-) e sono dovuto volare fin qui a Roma appunto.
Bilancio della situazione:

  • A4 tratta Brescia -> Milano Est: 2 ore! Avrò sicuramente perso il mio volo!
  • Arrivo in areoporto e il mio volo è in ritardo di quasi 1 ora! Che fortuna ... così riesco a prenderlo :-) !
  • No! Perchè non mi sono presentato in orario (io! e loro?!! anche loro non sono in orario!!) e il mio posto è stato dato ad un altro :-( !
  • Allora mi spostano la prenotazione su un altro volo che partiva 20 minuti dopo ... "corra a fare il biglietto integrativo senno perde anche questo..."
  • Corro (con i bagagli) e sborso un'integrazione di 205€ (però!) su 189€ dell'intero volo A/R ...
  • Torno trafelato al check-in e mi comunicano che il mio nuovo volo non è sicuro che parta (io intanto ho già pagato i 205€!) e che comunque se anche dovesse partire ... sarà in ritardo di circa un'oretta :-( !
  • Aspetto ... aspetto ... aspetto ... il volo parte in ritardo di 50 minuti, ma parte
  • Ore 23.00 atterro a Roma
  • Ore 23.30 recupero la valigia e mi metto in coda per il taxi
  • Ore 00.15 (sì dopo 45 minuti!) prendo il taxi
  • Ore 00.52 arrivo in hotel

Fantozzi non è nulla a confronto. Ovviamente il caos del blackout in Italia si è fatto sentire ... lungi da me il lamentarmi. Capisco benissimo la situazione e non ho capito per nulla altri passeggeri imbufaliti per il ritardo ....

In compenso sul mio volo c'erano 7 giovani ragazze di Roma che di lavoro facevano ... le fotomodelle :-D !!!

Don Box: consigli per tenere un buona sessione in conferenza

Non si può certo dire che Don Box abbia torto ... visti i risultati!

http://www.gotdotnet.com/team/dbox/default.aspx?key=2003-09-27T09:48:07Z

 

Le mie sessioni a WPC2003

Ormai dovrebbe essere ufficiale quindi posso comunicarvi le mie sessioni, complete di descrizione, che terrò alla WPC 2003.
Spero che vi piacciano e che abbiate voglia di venire a sentirmi :-) !

[DEV237] InfoPath…mai piu' XML ? :-)

Sono ormai diversi anni che mi occupo di XML e da sempre mi trovo a discutere con colleghi ed amici a proposito del fatto che XML è una tecnologia assolutamente interessante, dalle enormi potenzialità ma: a volte lenta e sicuramente di difficile apprendimento per l’utente finale. Tutte le volte che dobbiamo sviluppare applicazioni che generino contenuti XML, dobbiamo fornire all’utente finale un’interfaccia che non sia direttamente l’XML. Ve lo immaginate un operatore di terminale che scrive tag e attributi con XML Notepad ?! Il problema è che dobbiamo dedicare intere giornate allo sviluppo di interfacce di caricamento e visualizzazione di dati, che per noi sono XML ma che all’utente dobbiamo presentare in modo “user friendly”. Risultato? Spesso XML non viene utilizzato perchè complica le cose e richiede tempi di lavoro maggiori. Con InfoPath non sarà più così. L’utente finale avrà un’interfaccia costruita e disegnata in modo dinamico che consentirà a lui di vedere le informazioni in una forma leggibile e a noi di averle già pronte, dietro le quinte, in formato XML per spedirle a dei Web Service o anche solo per salvarle su disco. Scopriamo insieme come ciò sia possibile!

[DEV331] XML Web Services Platform Interoperability

I Web Service sono nati per consentire l’integrazione tra differenti piattaforme software. Tutte le volte che si devono sviluppare dei Web Service si corre però il rischio di realizzare delle soluzioni assolutamente chiuse, in grado di comunicare solo con se stesse o con i propri simili (come piattaforma), se non si presta attenzione ad alcune minime regole di “civile convivenza” con gli altri. Troppo spesso mi capita di vedere implementazioni di Web Service in grado di dialogare da .NET a .NET, da Java a Java, da VB6 a VB6, ecc. ma che non sono in grado di mettere in comunicazione tra loro queste piattaforme ... quindi inutili! In questa sessione ci occuperemo delle regole da rispettare e degli accorgimenti da tenere per avere una reale integrazione tra le diverse piattaforme. Laddove possibile faremo riferimento alla specifica WS-Interoperability e utilizzeremo i WS-I Tool per scoprire il livello di integrazione delle soluzioni proposte.

[SRV220] BizTalk 2004 Server Technical Overview

C’è chi a volte con una battuta dice che i prodotti di Microsoft sono interessanti dalla terza versione in poi ... BizTalk è alla sua terza versione ?, ma è un prodotto che è sempre stato interessante, sin dalla sua nascita, anche spesso riservato ad un settore di nicchia. È utilizzato con soddisfazione da chi ha deciso di implementarlo, ma richiede competenze non banali per essere sfruttato nel modo corretto. In questa sessione vorrei mostrarvi le novità della versione 2004, compatibilmente con il livello di stabilità della beta che avremo tra le mani. In particolare parleremo dell’integrazione con il mondo dei Web Service, con il Framework .NET, con InfoPath 2003, del supporto al Real-Time Tracking e a Business Process Execution Language (BPEL).

[DEV434] Securing XML Web Services

Uno dei freni più forti alla diffusione dei Web Service è il fatto che per molte persone non sono ritenuti sicuri. In questa sessione vorrei convincervi del contrario ? ! Oggi è possibile sviluppare servizi sicuri ed è possibile sviluppare servizi realmente interoperabili tra differenti piattaforme, senza rinunciare alla sicurezza. Parleremo delle tecniche di sicurezza applicate ad XML (XML Encryption e XML Signature) e della loro unione in WS-Security, WS-Trust, WS-Policy, specifiche tutte incentrate sulla sicurezza dei Web Service. Valuteremo le implementazioni attuali dei toolkit che supportano WS-Security e cercheremo di farli parlare tra loro. In questo modo capiremo anche quanto ci costa in termini di tempi di sviluppo.

[DEV435] Architecting ASP.NET Web Services

“Creare un Web Service con .NET è facilissimo! Basta creare un progetto di tipo Web Service, inserire un file ASMX, scrivere una procedura decorata con l’attributo WebMethod, magari facendo restituire un DataSet ... e il gioco è fatto!”. Avremo un Web Service che potremo utilizzare solo nelle demo e nelle applicazioni .NET su .NET per riempire una bella griglia, magari gerarchica! Se invece vogliamo “fare sul serio” dobbiamo disegnare i nostri servizi pensando che SOAP (come dice spesso scherzosamente Don Box) dovrebbe significare “Service Oriented Application Protocol” e non Simple Object Access Protocol! Dobbiamo disegnare i messaggi pensando ai servizi e non condizionare con il nostro ambiente di sviluppo quello che sarà il modo di presentarsi all’esterno dei servizi. In questa sessione vi voglio mostrare come si dovrebbero realizzare Web Service veramente orientati ai servizi e all’XML, dove il linguaggio e l’ambiente di sviluppo diventano un dettaglio.

[DEV336] Microsoft Web Services Enhancement for .NET

Il Framework .NET fornisce dalla sua prima versione alcuni Namespace per l’implementazione di client e server di Web Service. In MSDN c’è un gruppo di sviluppatori (Keith Ballinger ne è il PM) che ha riscritto parte di queste classi per fornire nuove funzionalità quali: WS-Security, WS-Trust, WS-Policy, WS-Routing. Inoltre, sempre con queste nuove classi, è possibile sviluppare Web Service che non utilizzano HTTP come protocollo di trasporto ma TCP o qualsiasi altro protocollo noi decidiamo di implementare, partendo da interfacce base che saranno disponibili per tutti. Possiamo poi sviluppare servizi asincroni con meccanismi di callback dal server al client, sempre utilizzando TCP e non HTTP come protocollo. Questa libreria si chiama Web Services Enhancements (WSE e si pronuncia “uisi”) ed è oggi alla versione 2.0 in beta. Guarderemo insieme come è implementata e come sfruttarne le potenzialità. In questa sessione ci concentremo sugli aspetti legati ai messaggi e al protocollo TCP. Nella sessione a proposito di WS-Security (DEV434) vedremo invece gli aspetti legati alla sicurezza.

Gli effetti del blackout

3 ore di blackout non sono poche ... qui i miei server segnano un'assenza di corrente dalle 3.20 circa ... uno shutdown forzato dopo circa 40 minuti (sorry ma non sono la NASA :-) e miei gruppi di + non tirano :-) e poi tanto nessuno poteva accorgersene :-) !!!) e un riavvio alle 6.50 del mattino!

Però ... mica male come blackout. Adesso sarebbe interessante valutare quanti blog italiani ne parlano ... per capire se il blogging è davverò un fenomeno di informazione parallelo!

Intanto fa effetto vedere che siti come www.repubblica.it non possono essere aggiornati a causa del blackout, o ricevere un SMS da TIM che comunica che la Protezione Civile informa di muoversi il meno possibile in auto.

Il tutto ha portato solo ad un minimo vantaggio: oggi ho ricevuto molto meno spamming rispetto agli altri giorni ...

Installando Linux per WPC

Sto installando le macchine virtuali VMWare per le mie sessioni a WPC. Questa è la sera della macchina Linux per le demo di interoperabilità con .NET .... Il "make" di Apache è appena finito (era iniziato oltre mezz'ora fa!!!) adesso mi rimangono da montare:

  • PHP
  • Java e AXIS
  • Mono

Dite quello che volete ... probabilmente sto diventando un sistemista "Microsoft oriented" :-) ... ma la notte alle 1.30 è preferibile avere un bel file setup.msi ... premere qualche Next e andare a letto dopo qualche secondo, piuttosto che passare le ore a guardare una finestra console :-) ....

Microsoft spinge sempre di più il fenomeno dei blog
Adesso su MSDN vengono indicati i blog delle figure di riferimento per il CLR e il Framework .NET in generale.
Microsoft a quanto pare vuole diffondere il più possibile il fenomeno dei blog tra le comunità di sviluppatori!
Questo mi fa pensare ad altri discorsi che ho letto in questi giorni su http://pdcbloggers.net/ in merito a Microsoft e ai blog. Credo proprio che abbia ragione Marco che in un articolo di recente pubblicazione su VBJ esamina il fenomeno dei blog proprio parlando di un "fenomeno".

Forse sempre per questo c'è chi sta già pensando ad un blogger party a PDC! Se c'è da bere birra ... io ci sono ! :-)
Link: http://msdn.microsoft.com/netframework/community/blogs/default.aspx
La gara dei monitor
Ieri Marco ha segnalato un link con un giocattolo delle meraviglie ... beh ho trovato anche questo http://www.seamlessdisplay.com/ ... mi sento sempre più vicino al giorno in cui avremi sistemi alla "Minority Report" ... speriamo che non esca mai la palla rossa per me ;-) !
Link: http://www.seamlessdisplay.com/
Indigo ...
Segnalo un post interessante di Christian Weyer a proposito di Indigo, giusto per capire dove si sta andando.
Link: http://weblogs.asp.net/cweyer/posts/27729.aspx
http://blogs.devleap.com/ : "mattone su mattone" ...

Ho appena pubblicato la nuova home page del sito http://blogs.devleap.com/ .

Da questo momento i nostri ospiti saranno presenti in home page e i post più recenti nei loro blog saranno riportati nella home page del sito.

Forza quindi! Sotto con i test e con i post!

Enjoy your blog :-) !

ADOX e .NET ... oppure no ? :-)

A seguito del mio post di qualche ora fa, Andrea Saltarello mi ha scritto per sapere come mai avessi usato ADOX e non il metodo GetOleDbSchemaTable della classe OleDbConnection per recuperare la lista delle tabelle.
 
In effetti (questa volta in C# per la par-condicio) per ottenere la lista avrei potuto scrivere anche così: 
 
using System;
using System.Data;
using System.Data.OleDb;

namespace AccessADOXReplacer
{
 public class ADOXReplacer
 {
  private ADOXReplacer(){}

  private static String _accessConnectionStringFormat =
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Persist Security Info=True";

  public static DataTable ListTables(String dataBaseFile)
  {
   OleDbConnection cn = new OleDbConnection(
    String.Format(_accessConnectionStringFormat, dataBaseFile));

   cn.Open();
   DataTable tables = cn.GetOleDbSchemaTable(
    OleDbSchemaGuid.Tables,
    new object[] {null, null, null, "TABLE"});
   cn.Close();
   return(tables);
  }

  public static DataTable ListColumns(String dataBaseFile,
   String tableName)
  {
   OleDbConnection cn = new OleDbConnection(
    String.Format(_accessConnectionStringFormat, dataBaseFile));

   cn.Open();
   DataTable columns = cn.GetOleDbSchemaTable(
    OleDbSchemaGuid.Columns,
    new object[] {null, null, tableName, null});
   cn.Close();
   return(columns);
  }

 }
}

In questo caso le colonne di riferimento saranno TABLE_NAME e COLUMN_NAME nelle rispettive DataTable, se quello che mi interessa è il nome delle tabelle e/o delle colonne di una tabella.

Nel mio caso (sola lettura) la soluzione proposta da Andrea è sicuramente preferibile, in quanto non devo lasciare il mondo managed per passare a quello unmanaged (ADOX è ancora COM).
Nel caso in cui ci serva di creare tabelle ed indici, e non solo leggere le caratteristiche degli oggetti già presenti nel DBMS, dovremo però aspettare la prossima versione di .NET per poterlo fare direttamente dal mondo managed (almeno così si vocifera...).

ADOX e .NET

Oggi, per un programma che sto sviluppando, avevo bisogno di recuperare da .NET la lista delle tabelle e delle colonne di un database Access. Ho usato ADOX da .NET, con VB.NET (a volte lo uso ancora :-) ...).
Magari il codice serve anche ad altri, quindi lo riporto.
Attenzione! Non vuole essere un esempio di codice "modello" :-) ma solo uno spunto di idea. A me serve in un'applicazione Windows Forms "di servizio" abbastanza banale, che non ha alto traffico e deve solo fare il suo onesto lavoro una volta ogni tanto per riempire delle ComboBox di configurazione che fanno lookup su un database Access (sì, ogni tanto lo uso ... ma sto cercando di smettere :-) !).

Imports System.Data

Public Class ADOXHelper

    Private Shared _accessConnectionStringFormat As String = _
       "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Persist Security Info=True"

    Private Sub New()
    End Sub

    Private Shared Function prepareConnection(ByVal dataBaseFile As String) As ADODB.Connection

        Dim cn As New ADODB.ConnectionClass

        cn.Open(String.Format(_accessConnectionStringFormat, _
         dataBaseFile), String.Empty, _
         String.Empty, 0)

        Return (cn)

    End Function

    Public Shared Function ListTables(ByVal dataBaseFile As String) As DataTable

        Dim catalog As New ADOX.CatalogClass
        catalog.ActiveConnection = prepareConnection(dataBaseFile)

        Dim tables As New DataTable
        tables.Columns.Add("TableName", GetType(String))

        Dim table As ADOX.Table
        For Each table In catalog.Tables

            If Not table.Name.StartsWith("MSys") Then
                Dim newTable As DataRow = tables.NewRow()
                newTable("TableName") = table.Name
                tables.Rows.Add(newTable)
            End If

        Next

        CType(catalog.ActiveConnection, ADODB.Connection).Close()
        Return (tables)

    End Function

    Public Shared Function ListColumns(ByVal databaseFile As String, _
        ByVal tableName As String) As DataTable

        Dim catalog As New ADOX.CatalogClass
        catalog.ActiveConnection = prepareConnection(databaseFile)

        Dim columns As New DataTable
        columns.Columns.Add("ColumnName", GetType(String))

        Dim table As ADOX.Table
        table = catalog.Tables(tableName)

        Dim column As ADOX.Column
        For Each column In table.Columns
            Dim newColumn As DataRow = columns.NewRow()
            newColumn("ColumnName") = column.Name
            columns.Rows.Add(newColumn)
        Next

        CType(catalog.ActiveConnection, ADODB.Connection).Close()
        Return (columns)

    End Function

End Class


PDC: Don Box promuove il suo tutorial

In questo articolo Don Box spiega di cosa ha intenzione di parlare a PDC.
Sono molto indeciso se seguirlo o meno. Si sa che Don Box è da seguire già solo per come gestisce il palco ... per imparare un po' della sua tecnica.
Sul fronte dei contenuti però non sono sicuro che questo tutorial sia davvero così stimolante.
Trovo invece fondamentali le sessioni di Don Box a proposito di Indigo.

 


Link: http://www.gotdotnet.com/team/dbox/default.aspx?key=2003-09-19T05:31:52Z
White Paper di Microsoft e IBM sui Web Service
"Secure, Reliable, Transacted Web Services: Architecture and Composition" questo è il titolo di un White Paper appena pubblicato da Microsoft e IBM sui loro siti web per sviluppatori.
Link: http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnwebsrv/html/wsoverview.asp
MSDN Longhorn Developer Center

Dal 27 Ottobre sarà disponibile questa nuova area! Il fatto che l'Editor sia Chris Sells .... lascia ben sperare.


Link: http://msdn.microsoft.com/longhorn/
PowerPoint 2003 Viewer

http://www.microsoft.com/downloads/details.aspx?FamilyID=428d5727-43ab-4f24-90b7-a94784af71a4&DisplayLang=en

More Posts Next page »