<?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/"
	>

<channel>
	<title>Blog de Ronald Vasseur &#187; .Net 3.0</title>
	<atom:link href="https://blog.developpez.com/webman/pcategory/developpement-net/net-3-0/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/webman</link>
	<description></description>
	<lastBuildDate>Sun, 04 May 2008 17:35:24 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>WCF : wsDualHttpBinding, timeout et clientBaseAddress</title>
		<link>https://blog.developpez.com/webman/p5392/developpement-net/wcf_wsdualhttpbinding_timeout_et_clientb</link>
		<comments>https://blog.developpez.com/webman/p5392/developpement-net/wcf_wsdualhttpbinding_timeout_et_clientb#comments</comments>
		<pubDate>Sat, 29 Mar 2008 13:27:07 +0000</pubDate>
		<dc:creator><![CDATA[Webman]]></dc:creator>
				<category><![CDATA[.Net 3.0]]></category>
		<category><![CDATA[Développement .Net]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bonjour à tous, Voici quelques temps j&#8217;ai été confronté à des Timeout avec une petite application utilisant WCF. Cette application utilisait le binding wsDualHttpBinding en mode duplex. Tant que les deux parties de l&#8217;application se trouvaient sur la même machine cela fonctionnait correctement, mais lors de tests sur des machines différentes là cela ne marchait plus, timeout et encore timeout. Mon application utilisait des méthodes &#171;&#160;One Way&#160;&#187; (IsOneWay = true) avec un contrat de callback, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour à tous,</p>
<p>Voici quelques temps j&rsquo;ai été confronté à des <strong>Timeout </strong>avec une petite application utilisant <strong>WCF</strong>. Cette application utilisait le binding <strong>wsDualHttpBinding </strong>en mode <strong>duplex</strong>. Tant que les deux parties de l&rsquo;application se trouvaient sur la même machine cela fonctionnait correctement, mais lors de tests sur des machines différentes là cela ne marchait plus, timeout et encore timeout.</p>
<p><span id="more-48"></span></p>
<p>Mon application utilisait des méthodes &laquo;&nbsp;One Way&nbsp;&raquo; (<strong>IsOneWay </strong>= true) avec un contrat de <strong>callback</strong>, c&rsquo;est-à-dire que toutes les méthodes du service étaient &laquo;&nbsp;void&nbsp;&raquo; et ne renvoyaient rien. Pour faire vite ce procédé permet de ne pas rester bloqué sur des méthodes en attendant la fin du traitement pour avoir une réponse. Ainsi quand un client envoie une requête vers un service il n&rsquo;attend pas la réponse, le client se contente d&rsquo;envoyer une requête et c&rsquo;est tout, le service renverra la réponse une fois le traitement terminé en utilisant le contrat de rappel. Le contrat de rappel est implémenté par des méthodes côté client. Ainsi chaque côté utilise des méthodes qui ne retournent rien, la réponse à une requête revient par l&rsquo;appel d&rsquo;une autre méthode dans le sens opposé. Le fonctionnement est alors asynchrone, et vos applications ne tournent pas désespérément dans le vide, ou pire, restent bloquée en attendant une réponse.</p>
<p>Assez d&rsquo;explications, revenons en au problème que j&rsquo;ai rencontré. Quand les deux parties de l&rsquo;application se trouvaient sur des machines différentes j&rsquo;avais inévitablement un Timeout. Je vais vous expliquer pourquoi, vous allez voir c&rsquo;est vraiment très bête mais en il est très facile de perdre une heure sur un tel détail&#8230;</p>
<p>Voici comment était configuré le binding côté client :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &lt;wsDualHttpBinding&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;binding name=&quot;bindWsClt&quot; clientBaseAddress=&quot;http://localhost:2701/wcfapp/&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;security mode=&quot;None&quot;&gt;&lt;/security&gt; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/binding&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/wsDualHttpBinding&gt;</div></div>
<p>Vous avez trouvé l&rsquo;erreur ? En fait il s&rsquo;agit de l&rsquo;url ! Celle-ci est définie avec localhost, ainsi quand le service veut répondre à cette adresse alors que le client se trouve sur une autre machine et bien il ne trouve tout simplement plus le client. Pour corriger cela il faut donc utiliser l&rsquo;IP ou le nom de la machine où se trouve le client. Voilà à quoi ressemble le fichier de configuration une fois le problème corrigé :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &lt;wsDualHttpBinding&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;binding name=&quot;bindWsClt&quot; clientBaseAddress=&quot;http://www.developpez.com:2701/wcfapp/&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;security mode=&quot;None&quot;&gt;&lt;/security&gt; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/binding&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/wsDualHttpBinding&gt;</div></div>
<p>Ainsi lors du callback le service sait à quelle adresse il doit rappeler le client. On voit donc qu&rsquo;ici avec l&rsquo;utilisation d&rsquo;un binding qui gère le <strong>callback </strong>il est très important de renseigner correctement la &laquo;&nbsp;<strong>clientBaseAddress</strong>&laquo;&nbsp;. Il en va évidemment de même avec l&rsquo;adresse du &laquo;&nbsp;Enpoint&nbsp;&raquo; côté service mais cela pas la peine de le préciser.</p>
<p>Voilà c&rsquo;est tout bête mais il est facile de tomber dans le piège!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.Net 3.0 : Introduction à Windows Communication Foundation</title>
		<link>https://blog.developpez.com/webman/p4118/developpement-net/net_3_0_introduction_a_windows_communica</link>
		<comments>https://blog.developpez.com/webman/p4118/developpement-net/net_3_0_introduction_a_windows_communica#comments</comments>
		<pubDate>Thu, 23 Aug 2007 04:44:21 +0000</pubDate>
		<dc:creator><![CDATA[Webman]]></dc:creator>
				<category><![CDATA[.Net 3.0]]></category>
		<category><![CDATA[Développement .Net]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je viens de mettre en ligne un article consacré à WCF (Windows Communication Foundation), il s&#8217;agit ici d&#8217;une introduction, je présente la technologie dans ses grandes lignes de je vous montre comment réaliser un service WCF. Le code fournit est en VB.Net et en C#. Des articles sur des points plus précis de WCF sont en cours de préparation et arriveront dans les semaines a venir. Au court de cet article je vais vous présenter [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je viens de mettre en ligne un article consacré à WCF (Windows Communication Foundation), il s&rsquo;agit ici d&rsquo;une introduction, je présente la technologie dans ses grandes lignes de je vous montre comment réaliser un service WCF. Le code fournit est en VB.Net et en C#. Des articles sur des points plus précis de WCF sont en cours de préparation et arriveront dans les semaines a venir.</p>
<blockquote><p>Au court de cet article je vais vous présenter Windows Communication Foundation, ou WCF, qui est une des grandes nouveautés du Framework.Net 3.0. WCF fournit un modèle de programmation unifiée pour construire des applications distribuées, WCF va permettre de faire communiquer des composants applicatifs se trouvant sur une même machine, mais le plus souvent sur différentes machines reliées en réseau.</p></blockquote>
<p><a href="http://webman.developpez.com/articles/dotnet/wcf/intro/">Consulter l&rsquo;article</a></p>
<p>Je vous rappelle que vous pouvez égalememt consulter <a href="http://webman.developpez.com/">mon domaine</a> sur Developpez.com. Cette page liste tous mes articles sur .Net, SQL Server et Windows.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Article : la synthèse vocale avec .Net 3.0</title>
		<link>https://blog.developpez.com/webman/p3987/developpement-net/article_la_synthese_vocale_avec_net_3_0</link>
		<comments>https://blog.developpez.com/webman/p3987/developpement-net/article_la_synthese_vocale_avec_net_3_0#comments</comments>
		<pubDate>Mon, 23 Jul 2007 04:41:01 +0000</pubDate>
		<dc:creator><![CDATA[Webman]]></dc:creator>
				<category><![CDATA[.Net 3.0]]></category>
		<category><![CDATA[Développement .Net]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je viens vous annoncer la mise en ligne d&#8217;un nouvel article consacré à la synthèse vocale en .Net 3.0 sous Vista. Vous pourrez decouvrir au travers de ce tutoriel comment synthétiser de la voix sous Windows Vista et en utilisant le Framework .Net 3.0. Bien qu&#8217;utilisant le Framework .Net 3.0 les exemples qui illustrent cet article ne fonctionneront peut etre pas avec Windows 2000 et XP et le Speech SDK, en effet Vista, au travers [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je viens vous annoncer la mise en ligne d&rsquo;un nouvel article consacré à la <strong>synthèse vocale</strong> en <strong>.Net 3.0</strong> sous <strong>Vista</strong>. Vous pourrez decouvrir au travers de ce tutoriel comment synthétiser de la voix sous Windows Vista et en utilisant le Framework .Net 3.0. Bien qu&rsquo;utilisant le Framework .Net 3.0 les exemples qui illustrent cet article ne fonctionneront peut etre pas avec Windows 2000 et XP et le Speech SDK, en effet Vista, au travers de la <strong>version 5.3</strong> de <strong>Speech API</strong>, apporte de nombreuses nouveautés, dont une nouvelle voix, celle d&rsquo;Anna qui vient en remplacement de celle de Sam sous Windows XP.</p>
<blockquote><p>Au cours de cet article je vais vous présenter un aspect souvent peu abordé, il s&rsquo;agit de la synthèse vocale. En effet, peu de développeurs ont eu un jour l&rsquo;idée d&rsquo;intégrer une telle fonctionnalité dans leur application&#8230; Pourtant, si l&rsquo;on y réfléchit un peu cela pourrait s&rsquo;avérer utile dans de nombreux domaines allant de la borne de musée interactive à une application de supervision d&rsquo;un quelconque process. Quand un avertissement sonore doit être émis par une application la méthode le plus souvent employée est la lecture d&rsquo;un fichier préenregistré, ici je vous propose de synthétiser de manière dynamique le message vocal. Pour réaliser cela vous aller voir que Microsoft nous simplifie grandement la vie. Depuis plusieurs années Microsoft propose gratuitement au téléchargement un SDK de reconnaissance et de synthèse vocale, depuis Windows Vista la donne a légèrement changée puisque tout cela est intégré au Framework .Net 3.0&#8230; Cet article porte uniquement sur le développement d&rsquo;applications bâties autour de .Net 3.0, et donc ne s&rsquo;appuyant pas sur la version 5.1 de SAPI (Speech API) employée pour les versions précédentes de Windows, mais sur la toute nouvelle version 5.3. </p></blockquote>
<p><a href="http://webman.developpez.com/articles/dotnet/texttospeech/"><strong>Accèder a l&rsquo;article</strong></a></p>
<p>Bonne lecture, de plus je vous rappelle que vous pouvez consulter l&rsquo;intégralité de mes articles depuis <a href="http://webman.developpez.com/">cette page</a>.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
