Les Bridges reviennent dans la RC de Microsoft Ajax Framework
Comme vient de l'annoncer Cyril la nouvelle version de Microsoft Ajax Framework RC est disponible.
On attend la version RTM pour avant la fin de l'année.
Une des choses qui avait disparu à la sortie de la Beta 1 et 2 était la possibilité d'écrire des bridges. Cette fonctionnalité est réapparue dans cette nouvelle version d' « ASP.NET 2.0 AJAX Futures December CTP » sous le namespace « Microsoft.Web.Preview.Services »
Mais c'est quoi un Bridge ?
Un bridge donne la capacité à un script JavaScript de requêter une URL sur un Domain qui n'est pas le sien (de son serveur d'origine). Comment ? Simplement en appelant une URL sur son serveur qui, lui, fait la passerelle vers le serveur externe. L'URL en question est un fichier avec une extension asbx qui sert simplement de pont.
Exemple de bridge pour appeler le Service REST GeoName qui renvoi Latitude et Longitude d'un département.
Le service revoie du XML on le transforme en utilisant « Microsoft.Web.Preview.Services.XPathBridgeTransformer »
<?
xml
version
="1.0"
encoding="utf-8" ?>
<bridge
namespace="Demo"
className="GeoNames">
<proxy
type="Microsoft.Web.Preview.Services.BridgeRestProxy"
serviceUrl="http://ws.geonames.org/postalCodeSearch" />
<
caching
>
<
cache
type
="Microsoft.Web.Preview.Services.BridgeCache" />
</caching>
<
method
name
="GetGeoNames">
<input>
<parameter
name="maxRows"
value="10"
serverOnly="true" />
<parameter
name="postalcode" />
<parameter
name="country"/>
</input>
<
transforms
>
<
transform
type
="Microsoft.Web.Preview.Services.XPathBridgeTransformer">
<data>
<attribute
name="selector"
value="code" />
<dictionary
name="selectedNodes">
<item
name="postalcode"
value="postalcode" />
<item
name="name"
value="name" />
<item
name="countryCode"
value="countryCode" />
<item
name="lat"
value="lat" />
<item
name="lng"
value="lng" />
</dictionary>
</data>
</transform>
</
transforms
>
</
method
>
</
bridge
>
Pour l'utiliser dans la page il suffit de référencer le fichier asbx dans le ScriptManagerProxy
<
asp
:
ScriptManagerProxy
ID="ScriptManagerProxy1"
runat="server">
<Services>
<asp:ServiceReference
Pathi="~/Bridges/GeoNames.asbx"
/>
</Services>
</asp:ScriptManagerProxy>
Et ensuite depuis du code JavaScript on va pouvoir appeler ce service externe et donc faire des applications de Mash-UP
<
script
type="text/javascript">
function GetLngLat(){
var cp = 75001; var c = 'FR';
Frimr.GeoNames.GetGeoNames({ postalcode:cp, country:c},
Function.createDelegate(this, _onDataAvailable),
null, null, null, null);
}
}
function _onDataAvailable(result, response, userContext) {
if (result.length > 0)
{
alert('Ville:'+result[0].name+
' Longitude:'+result[0].lng+
' Latitude:'+result[0].lat);
}
}
</script>
Il ne faut pas oublier aussi de changer le web.config pour qu'il prenne en compte la nouvelle extension « asbx »
<
httpHandlers
>
…
<
add
verb
="GET,HEAD,POST"
path="*.asbx"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions,
Version=1.0.61025.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
validate="false"/>
</httpHandlers>
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :