<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Enterprise Bus</title>
	<atom:link href="http://enterprisebus.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://enterprisebus.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 18 Dec 2007 12:36:31 +0000</lastBuildDate>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='enterprisebus.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Enterprise Bus</title>
		<link>http://enterprisebus.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://enterprisebus.wordpress.com/osd.xml" title="Enterprise Bus" />
	<atom:link rel='hub' href='http://enterprisebus.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Come costruire un WebServices con WCF che vada d&#8217;accordo con WebSphere</title>
		<link>http://enterprisebus.wordpress.com/2007/12/18/come-costruire-un-webservices-con-wcf-che-vada-daccordo-con-websphere/</link>
		<comments>http://enterprisebus.wordpress.com/2007/12/18/come-costruire-un-webservices-con-wcf-che-vada-daccordo-con-websphere/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 12:28:45 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[WebSphere]]></category>

		<guid isPermaLink="false">http://enterprisebus.wordpress.com/2007/12/18/come-costruire-un-webservices-con-wcf-che-vada-daccordo-con-websphere/</guid>
		<description><![CDATA[In WCF esporre un WebService è molto semplice ma utilizzarlo da WAS (Websphere Application Server) un po&#8217; meno. Mentre AXIS 1.4 è molto più di bocca buona, il generatore del RAD/AST sembra mal digerire i namespace tempuri.org e altri piccoli particolari. Questo articolo descrive cosa occorre fare per creare un WebService perfettamente consumabile da RAD/AST [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=12&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In WCF esporre un WebService è molto semplice ma utilizzarlo da WAS (Websphere Application Server) un po&#8217; meno. Mentre AXIS 1.4 è molto più di bocca buona, il generatore del RAD/AST sembra mal digerire i namespace tempuri.org e altri piccoli particolari. Questo articolo descrive cosa occorre fare per creare un WebService perfettamente consumabile da RAD/AST (6.1).
<p>Per prima cosa in .NET si definisce una interfaccia e la si decora con i soliti attributi ServiceContract, DataContract, OperationContract. E importante notare che la gestione di campi XML in maiuscolo non è ben supportata dal generatore Java e pertanto conviene creare DataContract con campi con iniziali in minuscolo. In alternativa si possono sfruttare gli attributi di generazione XML sui DataContract
<pre>[DataContract(
	Name="<span style="color:#8b0000;">DatiServizio</span>",
	Namespace="<span style="color:#8b0000;">&lt;http://example.com/esempio&gt;</span>")];
<span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> DatiServizio
{
	[DataMember]
	[XmlElement(Name="<span style="color:#8b0000;">testo</span>")]
	<span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Testo { <span style="color:#0000ff;">set</span>; <span style="color:#0000ff;">get</span>; }
	[DataMember]
	[XmlElement(Name="<span style="color:#8b0000;">numero</span>")]
	<span style="color:#0000ff;">public</span> <span style="color:#0000ff;">decimal</span> Numero { <span style="color:#0000ff;">set</span>; <span style="color:#0000ff;">get</span>; }
} 

[ServiceContract(
	Name="<span style="color:#8b0000;">DatiServizio</span>",
	Namespace="<span style="color:#8b0000;">&lt;http://example.com/esempio&gt;</span>")];
<span style="color:#0000ff;">public</span> <span style="color:#0000ff;">interface</span> IServizio
{
	[OperationContract]
	<span style="color:#0000ff;">string</span> FaiQualcosa(DatiServizio dati);
}
</pre>
<p>Nella implementazione della interfaccia si utilizza l&#8217;attributo ServiceBehaviour per<br />fornire altre informazioni sui namespace:
<pre>[ServiceBehavior(
	Name="<span style="color:#8b0000;">Servizio</span>",
	Namespace="<span style="color:#8b0000;">http://example.com/esempio</span>")]
<span style="color:#0000ff;">class</span> ServizioType : IServizio
{
	<span style="color:#008000;">// codice omesso...</span>
}
</pre>
<p>A questo punto è necessario creare un corretto file di configurazione app.config. In particolare nella sezione dedicata al WCF si inseriscono queste informazioni:
<pre><span style="color:#0000ff;">&lt;?</span>xml version="1.0" encoding="utf-8" <span style="color:#0000ff;">?&gt;</span>
<span style="color:#0000ff;">&lt;</span><span style="color:#800000;">configuration</span><span style="color:#0000ff;">&gt;</span>
  <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">system.serviceModel</span><span style="color:#0000ff;">&gt;</span>
    <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">services</span><span style="color:#0000ff;">&gt;</span>
      <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">service</span> <span style="color:#ff0000;">behaviorConfiguration</span>=<span style="color:#0000ff;">"Servizio"</span> <span style="color:#ff0000;">name</span>=<span style="color:#0000ff;">"ServizioType"</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">endpoint</span>
           <span style="color:#ff0000;">address</span>=<span style="color:#0000ff;">"Servizio"</span>
           <span style="color:#ff0000;">binding</span>=<span style="color:#0000ff;">"basicHttpBinding"</span>
           <span style="color:#ff0000;">bindingConfiguration</span>=<span style="color:#0000ff;">"ServizioBinding"</span>
           <span style="color:#ff0000;">name</span>=<span style="color:#0000ff;">"ServizioEndpoint"</span>
           <span style="color:#ff0000;">bindingName</span>=<span style="color:#0000ff;">"Servizio"</span>
           <span style="color:#ff0000;">bindingNamespace</span>=<span style="color:#0000ff;">"http://example.com/esempio"</span>
           <span style="color:#ff0000;">contract</span>=<span style="color:#0000ff;">"IServizio"</span> <span style="color:#0000ff;">/&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">host</span><span style="color:#0000ff;">&gt;</span>
          <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">baseAddresses</span><span style="color:#0000ff;">&gt;</span>
            <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">add</span> <span style="color:#ff0000;">baseAddress</span>=<span style="color:#0000ff;">"http://localhost:8000/Servizio"</span> <span style="color:#0000ff;">/&gt;</span>
          <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">baseAddresses</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">host</span><span style="color:#0000ff;">&gt;</span>
      <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">service</span><span style="color:#0000ff;">&gt;</span>
    <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">services</span><span style="color:#0000ff;">&gt;</span>

    <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">bindings</span><span style="color:#0000ff;">&gt;</span>
      <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">basicHttpBinding</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">binding</span> <span style="color:#ff0000;">name</span>=<span style="color:#0000ff;">"ServizioBinding"</span> <span style="color:#0000ff;">/&gt;</span>
      <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">basicHttpBinding</span><span style="color:#0000ff;">&gt;</span>
    <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">bindings</span><span style="color:#0000ff;">&gt;</span>

    <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">behaviors</span><span style="color:#0000ff;">&gt;</span>
      <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">serviceBehaviors</span><span style="color:#0000ff;">&gt;</span>
        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">behavior</span> <span style="color:#ff0000;">name</span>=<span style="color:#0000ff;">"Servizio"</span><span style="color:#0000ff;">&gt;</span>
          <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">serviceMetadata</span> <span style="color:#ff0000;">httpGetEnabled</span>=<span style="color:#0000ff;">"true"</span> <span style="color:#0000ff;">/&gt;</span>
          <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">serviceDebug</span> <span style="color:#ff0000;">includeExceptionDetailInFaults</span>=<span style="color:#0000ff;">"true"</span> <span style="color:#0000ff;">/&gt;</span>
        <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">behavior</span><span style="color:#0000ff;">&gt;</span>
      <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">serviceBehaviors</span><span style="color:#0000ff;">&gt;</span>
    <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">behaviors</span><span style="color:#0000ff;">&gt;</span>
  <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">system.serviceModel</span><span style="color:#0000ff;">&gt;</span>
<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">configuration</span><span style="color:#0000ff;">&gt;</span></pre>
<p>Con queste configurazioni tutti i namespace risultano a posto e il WSDL generato automaticamente (<a href="http://localhost:8000/Servizio?wsdl">http://localhost:8000/Servizio?wsdl</a>) è in grado di essere mangiato direttamente dal generatore WSDL del RAD/AST.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/enterprisebus.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/enterprisebus.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterprisebus.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterprisebus.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterprisebus.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterprisebus.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enterprisebus.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enterprisebus.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enterprisebus.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enterprisebus.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterprisebus.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterprisebus.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterprisebus.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterprisebus.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterprisebus.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterprisebus.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=12&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enterprisebus.wordpress.com/2007/12/18/come-costruire-un-webservices-con-wcf-che-vada-daccordo-con-websphere/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4bf2852fd5aea02db99b2cba90e856b3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Max</media:title>
		</media:content>
	</item>
		<item>
		<title>IBM WebSphere MQ (MQ Series), PowerShell e WCF</title>
		<link>http://enterprisebus.wordpress.com/2007/12/08/ibm-websphere-mq-mq-series-powershell-e-wcf/</link>
		<comments>http://enterprisebus.wordpress.com/2007/12/08/ibm-websphere-mq-mq-series-powershell-e-wcf/#comments</comments>
		<pubDate>Sat, 08 Dec 2007 23:12:50 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MQ]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://enterprisebus.wordpress.com/2007/12/08/ibm-websphere-mq-mq-series-powershell-e-wcf/</guid>
		<description><![CDATA[IBM ha rilasciato PowerShell for WebSphere MQ, un Support Pac per MQ sulla piattaforma Windows che ne permette la gestione tramite PowerShell. MQ è un middleware IBM che permette la comunicazione di differenti programmi su differenti piattaforme tramite un sistema a code distribuite. E&#8217; un software estremamente affidabile e longevo che abbiamo usato con successo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=11&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>IBM ha rilasciato <a href="http://www.ibm.com/support/docview.wss?rs=171&amp;uid=swg24017698" target="_blank">PowerShell for WebSphere MQ</a>, un Support Pac per MQ sulla piattaforma Windows che ne permette la gestione tramite PowerShell. MQ è un middleware IBM che permette la comunicazione di differenti programmi su differenti piattaforme tramite un sistema a code distribuite. E&#8217; un software estremamente affidabile e longevo che abbiamo usato con successo in molteplici scenari multipiattaforma. Ovviamente è un ottimo software utile in scenari di integrazione di sistemi (o in certe implementazioni di architetture SOA).</p>
<p>Non è la prima volta che IBM si integra egregiamente con Windows (pensiamo al DB2, per esempio) e non è neppure la prima volta che si avventura sulle nuove caratteristiche rese disponibili da Microsoft. Ma, riguardo MQ,&nbsp; molto interessante è il <a href="http://www.alphaworks.ibm.com/tech/mqwcf/" target="_blank">canale MQ per WCF</a>. Questo software integra il Windows Communications Framework con MQ utilizzando SOAP per JMS. In altri termini rende facile la comunicazione fra sistemi .NET 3.x (e in ultima analisi Windows) e sistemi collegabili a WebSphere MQ come WebSphere Application Server o il CICS. Significa che si potrebbero integrare queste potenti tecnologie IBM (legacy e non) con i nuovi potenti framework di Microsoft. Peccato sia solo un <em>proof of concept</em> e per di più con alcune mancanze fondamentali e quindi non utilizzabile in produzione.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/enterprisebus.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/enterprisebus.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterprisebus.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterprisebus.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterprisebus.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterprisebus.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enterprisebus.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enterprisebus.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enterprisebus.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enterprisebus.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterprisebus.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterprisebus.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterprisebus.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterprisebus.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterprisebus.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterprisebus.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=11&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enterprisebus.wordpress.com/2007/12/08/ibm-websphere-mq-mq-series-powershell-e-wcf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4bf2852fd5aea02db99b2cba90e856b3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Max</media:title>
		</media:content>
	</item>
		<item>
		<title>IBM J2EE e Microsoft .NET</title>
		<link>http://enterprisebus.wordpress.com/2007/11/30/ibm-j2ee-e-microsoft-net/</link>
		<comments>http://enterprisebus.wordpress.com/2007/11/30/ibm-j2ee-e-microsoft-net/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 19:00:54 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://enterprisebus.wordpress.com/2007/11/30/ibm-j2ee-e-microsoft-net/</guid>
		<description><![CDATA[Uno dei progetti che sto seguendo in questi giorni prevede l&#8217;integrazione in architettura SOA di un sistema di radio terminali con Windows CE e Wi-Fi con altri sistemi tra cui un iSeries e alcune applicazioni WebSphere. Trattandosi di un progetto pilota in un &#8220;Java Shop&#8221; (più propriamente un utente IBM WebSphere) abbiamo simulato la presenza [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=10&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Uno dei progetti che sto seguendo in questi giorni prevede l&#8217;integrazione in architettura SOA di un sistema di radio terminali con Windows CE e Wi-Fi con altri sistemi tra cui un iSeries e alcune applicazioni WebSphere. Trattandosi di un progetto pilota in un &#8220;Java Shop&#8221; (più propriamente un utente IBM WebSphere) abbiamo simulato la presenza di un ESB mediante una semplice applicazione J2EE (processi, coreografie e business object sono molto semplici quindi il discorso ci stava).</p>
<p>Dal punto di vista tecnologico quando si fa integrazione di sistemi eterogenei esiste un forza che contrasta l&#8217;obiettivo. Io la definisco genericamente &#8220;impedenza&#8221;. In pratica se due sistemi si devono parlare queste impedenza fa di tutto perchè ciò non avvenga. Un sistema completamente chiuso senza alcuna documentazione e nessuna possibilità di utilizzarne i dati e/o le transazioni porta l&#8217;impedenza all&#8217;infinito. Se ho N sistemi l&#8217;impedenza totale è data dalla combinazione dell&#8217;impedenza di ogni interazione possibile. Oltre a questo l&#8217;impedenza aumenta quando i due sistemi devono essere fortemente accoppiati (come al limite in un classico client server). Per semplificare l&#8217;integrazione occorre diminuire il valore di questa impedenza. In tal senso, dato che riduce il numero di interazioni e semplifica l&#8217;uso della tecnologia di integrazione, un ESB diminuisce questa impedenza. SOA lo fa ulteriormente estendendosi anche alla parte &#8220;organizzativa&#8221;.</p>
<p>Tornando al nostro progetto, per diminuirne l&#8217;impedenza abbiamo deciso di utilizzare .NET per l&#8217;integrazione dei terminali e il server di gestione degli stessi. In altri termini il software sui radio terminali è scritto in .NET Compact Framework mentre il server dei radio terminali è nato come una applicazione .NET Framework. Per far parlare i terminali con il server e, soprattutto, il server con il nostro pseudo ESB abbiamo utilizzato il Windows Communication Framework (WCF). Il nostro pseudo ESB utilizza poi Java per comunicare con altri sistemi Java e con l&#8217;iSeries (tramite JTOpen 400).</p>
<p>Chiaramente l&#8217;impedenza di due elementi che utilizzano lo stesso framework per comunicare è veramente bassa. Fatta l&#8217;interfaccia e pubblicato i servizi la scrittura del client su radio terminale ha richiesto poche ore. Lo stesso è accaduto tra gli elementi Java dove si è perso più tempo nel decidere cosa fare che nel farlo. </p>
<p>L&#8217;aspetto che però, come sempre, più mi ha colpito è la comunicazione fra WCF e J2EE. Se si tolgono alcune noiosità l&#8217;impedenza tecnologica tra J2EE (su WebSphere Application Server 6.1 ed Eclipse 3.3) e WCF (su .NET 3.5 e VS2008) è veramente bassa. Gli standard WS-<em>qualcosa</em> semplificano la vita ma soprattutto i tool sono in grado di utilizzarli in modo efficace (non era così ai tempi di .NET 2.0). Alcuni aspetti di scrittura di codice ripetitivi e noiosi si possono aggirare utilizzando furbescamente e in modo parametrico la reflection sia in Java che in .NET. Ed è interessante il fatto che io stia parlando della parte bassa dello stack senza scomodare tool come Biztalk o WebSphere Process Server.</p>
<p>Se aggiungiamo il fatto che entrambi i framework parlano con il proprio legacy (IBM J2EE con mainframe/COBOL/DB2/CICS/IMS/iSeries/ecc. e Microsoft con COM/DCOM/COM+/WIN32/ecc.) ci si rende conto di trovarsi di fronte a delle possibilità molto ampie. </p>
<p>Certo utilizzare questi tool richiede una certa esperienza (ci è capitato persino di trovare WebServices assolutamente perversi e praticamente inutilizzabili) ma, in definitiva, quando si parla di interoperabilità tra i due mondi sia le tecnologie Microsoft che quelle IBM/J2EE possono essere utilizzate con fiducia. </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/enterprisebus.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/enterprisebus.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterprisebus.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterprisebus.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterprisebus.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterprisebus.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enterprisebus.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enterprisebus.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enterprisebus.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enterprisebus.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterprisebus.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterprisebus.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterprisebus.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterprisebus.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterprisebus.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterprisebus.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=10&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enterprisebus.wordpress.com/2007/11/30/ibm-j2ee-e-microsoft-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4bf2852fd5aea02db99b2cba90e856b3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Max</media:title>
		</media:content>
	</item>
		<item>
		<title>MES e SOA</title>
		<link>http://enterprisebus.wordpress.com/2007/02/16/mes-e-soa/</link>
		<comments>http://enterprisebus.wordpress.com/2007/02/16/mes-e-soa/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 14:58:26 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Organizzazione]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://enterprisebus.wordpress.com/2007/02/16/mes-e-soa/</guid>
		<description><![CDATA[Abbiamo appena pubblicato un white paper che parla dell&#8217;uso di SOA per la realizzazione di sistemi MES (Manifacturing Esecution System). Lo trovate qui: http://www.santineassociati.com/ViewSelectedNews.aspx?NewsId=40.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=7&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Abbiamo appena pubblicato un <em>white paper </em>che parla dell&#8217;uso di SOA per la realizzazione di sistemi MES (Manifacturing Esecution System). Lo trovate qui: <a title="http://www.santineassociati.com/ViewSelectedNews.aspx?NewsId=40" href="http://www.santineassociati.com/ViewSelectedNews.aspx?NewsId=40">http://www.santineassociati.com/ViewSelectedNews.aspx?NewsId=40</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/enterprisebus.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/enterprisebus.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterprisebus.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterprisebus.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterprisebus.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterprisebus.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enterprisebus.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enterprisebus.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enterprisebus.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enterprisebus.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterprisebus.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterprisebus.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterprisebus.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterprisebus.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterprisebus.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterprisebus.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=7&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enterprisebus.wordpress.com/2007/02/16/mes-e-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4bf2852fd5aea02db99b2cba90e856b3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Max</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft pronta per la SOA?</title>
		<link>http://enterprisebus.wordpress.com/2007/02/16/microsoft-pronta-per-la-soa/</link>
		<comments>http://enterprisebus.wordpress.com/2007/02/16/microsoft-pronta-per-la-soa/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 14:54:06 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://enterprisebus.wordpress.com/2007/02/16/microsoft-pronta-per-la-soa/</guid>
		<description><![CDATA[Nel post precedente ho cercato di mostrare come WCF e le tecnologie SCA e SDO nel mondo Java si somigliassero e come WCF potrebbe essere una base su cui costruire applicazioni SOA. Evidentemente non sono l&#8217;unico a pensarla in questo modo:&#160;leggete Microsoft Is SOA-Ready for Wall Street&#160;su eWeek. Il problema, secondo me, è che Microsoft [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=6&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://enterprisebus.wordpress.com/2007/02/16/wcf-ibm-websphere-process-server-e-tuscany/">Nel post precedente</a> ho cercato di mostrare come WCF e le tecnologie SCA e SDO nel mondo Java si somigliassero e come WCF potrebbe essere una base su cui costruire applicazioni SOA. Evidentemente non sono l&#8217;unico a pensarla in questo modo:&nbsp;leggete <a href="http://www.eweek.com/article2/0,1895,2095553,00.asp" target="_blank">Microsoft Is SOA-Ready for Wall Street</a>&nbsp;su eWeek.</p>
<p>Il problema, secondo me, è che Microsoft manca di credibilità in questo ruolo di player nell&#8217;arena della SOA. Ha tutti i tool necessari e comincia a fornire anche le risorse per supportare questo modo di sviluppare le organizzazioni e le applicazioni. Però, storicamente, i forti player SOA arrivano dal mondo cross-platform e della integrazione. Microsoft non ha mai avuto una grande visibilità in questo mondo per ovvi motivi: fino a poco tempo fa la sua visione era totalmente Windows-centrica. Per supportare veramente tutto questo devono darsi da fare e creare una rete di partner veramente qualificati sull&#8217;argomento e devono cominciare a proporre il concetto ai loro clienti in modo molto più attivo. E&nbsp;questo&nbsp;è difficile farlo. </p>
<p>Tutto questo mi ricorda la &#8220;guerra&#8221; degli application server. Microsoft ha avuto un application server simile a quelli J2EE in ogni sistema Windows con .NET ma non l&#8217;ha mai venduto come concetto. </p>
<p>A onor del vero molti altri player forti in altre aree che si cimentano (o almeno tentano)&nbsp;in questa arena SOA soffrono di una visione &#8220;proprio prodotto&#8221;-centrica. Ed in effetti hanno gli stessi problemi.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/enterprisebus.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/enterprisebus.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterprisebus.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterprisebus.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterprisebus.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterprisebus.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enterprisebus.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enterprisebus.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enterprisebus.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enterprisebus.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterprisebus.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterprisebus.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterprisebus.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterprisebus.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterprisebus.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterprisebus.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=6&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enterprisebus.wordpress.com/2007/02/16/microsoft-pronta-per-la-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4bf2852fd5aea02db99b2cba90e856b3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Max</media:title>
		</media:content>
	</item>
		<item>
		<title>WCF, IBM WebSphere Process Server e Tuscany</title>
		<link>http://enterprisebus.wordpress.com/2007/02/16/wcf-ibm-websphere-process-server-e-tuscany/</link>
		<comments>http://enterprisebus.wordpress.com/2007/02/16/wcf-ibm-websphere-process-server-e-tuscany/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 14:45:50 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCA]]></category>
		<category><![CDATA[SDO]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://enterprisebus.wordpress.com/2007/02/16/wcf-ibm-websphere-process-server-e-tuscany/</guid>
		<description><![CDATA[Questo è un post sulle &#8220;tubature&#8221;. IBM WebSphere Process Server implementa SCA e&#160;SDO, delle specifiche molto note per chi lavora con tool simili. Fondamentalmente usando questo tipo di tool è possibile definire una serie di servizi e di oggetti utilizzati/forniti dai servizi utilizzando linguaggi come WSDL e XSD. Da questi è poi possibile passare a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=5&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[</p>
<p>Questo è un post sulle &#8220;tubature&#8221;.</p>
<p><a href="http://www.ibm.com/software/integration/wps/" target="_blank">IBM WebSphere Process Server</a> implementa SCA e&nbsp;SDO, delle specifiche molto note per chi lavora con tool simili. Fondamentalmente usando questo tipo di tool è possibile definire una serie di servizi e di oggetti utilizzati/forniti dai servizi utilizzando linguaggi come WSDL e XSD. Da questi è poi possibile passare a delle implementazioni in vari linguaggi (fondamentalmente Java e C++). E&#8217; anche possibile definire un servizio partendo dal codice stesso.&nbsp;Il canale di comunicazione utilizzato&nbsp;è poi fondamentalmente indipendente dal definizione del servizio (e dal codice che lo implementa, ovviamente). </p>
<p>Scartabellando qua è là mi è saltato l&#8217;occhio su un esempio di codice Java che potrebbe costituire un semplice servizio:</p>
<pre>    <span style="color:rgb(0,0,255);">public</span> <span style="color:rgb(0,0,255);">interface</span> <span style="color:rgb(43,145,175);">Calculator
</span>    {
        <span style="color:rgb(0,0,255);">float</span> add(<span style="color:rgb(0,0,255);">float</span> operand1, <span style="color:rgb(0,0,255);">float</span> operand2);
    }

    <span style="color:rgb(0,0,255);">public</span> <span style="color:rgb(0,0,255);">class</span> <span style="color:rgb(43,145,175);">CalculatorImpl</span> <span style="color:rgb(0,0,255);">implements</span> <span style="color:rgb(43,145,175);">Calculator
</span>    {
        <span style="color:rgb(0,0,255);">public</span> <span style="color:rgb(0,0,255);">float</span> add(<span style="color:rgb(0,0,255);">float</span> operand1, <span style="color:rgb(0,0,255);">float</span> operand2)     {
            <span style="color:rgb(0,0,255);">return</span> operand1 + operand2;
        }
    }</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Questo codice definisce una interfaccia e&nbsp;una classe&nbsp;che la&nbsp;implementa.&nbsp;&nbsp;Grazie ad una serie di file di configurazione (in XML)&nbsp;&nbsp;e/o a delle operazione di deployment il sistema genera il codice che ne permette l&#8217;utilizzo remotamente (via code,&nbsp;WebServices o meccanismi analoghi).&nbsp;&nbsp;In generale i meccanismi che realizzano i &#8220;tubi&#8221; sono nascosti dai tool.&nbsp;In realtà usando Process Server si procederebbe alla definizione del servizio (tramite un tool basato su Eclipse che fondamentalmente genera&nbsp;WSDL) e poi alla generazione del codice.</p>
<p>In <a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">WCF</a> (e C#) si procederebbe così:</p>
<pre>    [<span style="color:rgb(43,145,175);">ServiceContract</span>()]
    <span style="color:rgb(0,0,255);">public</span> <span style="color:rgb(0,0,255);">interface</span> <span style="color:rgb(43,145,175);">ICalculator
</span>    {
        [<span style="color:rgb(43,145,175);">OperationContract</span>]
        <span style="color:rgb(0,0,255);">float</span> add(<span style="color:rgb(0,0,255);">float</span> operand1, <span style="color:rgb(0,0,255);">float</span> operand2);
    }

    <span style="color:rgb(0,0,255);">public</span> <span style="color:rgb(0,0,255);">class</span> <span style="color:rgb(43,145,175);">CalculatorImpl</span> : <span style="color:rgb(43,145,175);">ICalculator
</span>    {
        <span style="color:rgb(0,0,255);">public</span> <span style="color:rgb(0,0,255);">float</span> add(<span style="color:rgb(0,0,255);">float</span> operand1, <span style="color:rgb(0,0,255);">float</span> operand2)
        {
            <span style="color:rgb(0,0,255);">return</span> operand1 + operand2;
        }
    }
</pre>
<p>Poi grazie ad una serie di file di configurazione (in XML)&nbsp;&nbsp;e/o a delle operazione di deployment il sistema genera il codice che ne permette l&#8217;utilizzo remotamente (via code,&nbsp;WebServices o meccanismi analoghi). &nbsp;In generale i meccanismi che realizzano i &#8220;tubi&#8221; sono nascosti dai tool.&nbsp;</p>
<p>Perchè mi sembra di ripetermi? <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>E&#8217; interessante notare che normalmente nel mondo Microsoft si procede scrivendo il codice e poi lo si decora con degli attributi. Infine un tool procede a generare il codice di implementazione e i file di configurazione. Nulla vieta però di partire direttamente dal WSDL.</p>
<p>Direi che oggi&nbsp;la principale differenza fra i due mondi è proprio questa: il programmatore Microsoft solitamente parte dal codice e poi procede a generare la definizione del servizio, il programmatore IBM/Java solitamente parte dalla definizione dei servizi e poi procede a generare il codice. Da notare che questo aspetto riguarda soprattutto i tool.</p>
<p><a href="http://incubator.apache.org/tuscany/" target="_blank">Tuscany</a> è una implementazione del consorzio Apache di SCA e SDO. Quando sarà terminato la piattaforma Java avrà un meccanismo open source (e quindi diffuso e a basso prezzo) per realizzare una buona parte di quello che si fa con WCF. Se i due mondi saranno in grado di interoperare senza particolari problemi si potrà utilizzare un meccanismo ad alto livello che faciliterà enormemente l&#8217;integrazione di programmi su piattaforme differenti. </p>
<p>WCF potrebbe essere la tecnologia di base per realizzare un Enterprise Service Bus (in senso SOA) su Windows (aggiungendo Biztalk e un po&#8217; di testa). Poi WCF ha delle altre particolarità che lo rendono ancora più valido per chi sviluppa su Windows ma questo esula dal discorso.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/enterprisebus.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/enterprisebus.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterprisebus.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterprisebus.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterprisebus.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterprisebus.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/enterprisebus.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/enterprisebus.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/enterprisebus.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/enterprisebus.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterprisebus.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterprisebus.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterprisebus.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterprisebus.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterprisebus.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterprisebus.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterprisebus.wordpress.com&amp;blog=785951&amp;post=5&amp;subd=enterprisebus&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://enterprisebus.wordpress.com/2007/02/16/wcf-ibm-websphere-process-server-e-tuscany/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4bf2852fd5aea02db99b2cba90e856b3?s=96&#38;d=identicon" medium="image">
			<media:title type="html">Max</media:title>
		</media:content>
	</item>
	</channel>
</rss>
