Page 1 sur 5 Microsoft TechNet - Les End Points ou points de

Transcription

Page 1 sur 5 Microsoft TechNet - Les End Points ou points de
Microsoft TechNet - Les End Points ou points de terminaison
Page 1 sur 5
Plan du site
| Accueil | International
Rechercher sur Microsoft France :
Ok
Accueil TechNet
Produits & Technologies
| Repérez-vous | Newsletter TechNet | Contactez -Nous
Produits & Technologies > Produits Serveurs > SQL Server
Solutions IT
Sécurité
Interoperabilité
Déploiement des postes de
travail
Scripting (en anglais)
Téléchargements
Support
Les End Points ou points de terminaison
Par Romelard Fabrice, MVP .NET et Consultant Technique Ilem SA
Membre du Groupe Utilisateurs SQL Server
Avec SQL Server 2005, nous avons la possibilité de publier des objets SQL sous la forme de Web Services. Ceux-ci sont
appelé des « End Points » (EP) ou points de terminaison. Nous allons donc voir comment mettre en place et gérer un EP.
Dans un prochain article, nous verrons comment utiliser cet EP dans nos développements.
Newsletter TechNet
Abonnement TechNet
Evénements et séminaires
Ressources en ligne
Sur cette page
Introduction
Principe
Ressources
communautaires
Création du Point de Terminaison
Formation et certification
Listage des EP présents sur notre serveur SQL
Comment acheter
Suppression ou modification d’ un EP
Informations pour
Conclusion
Introduction
SQL Server 2000 supportait plus ou moins le XML (grâce à l’option FOR XML en sortie), avec la nouvelle version « SQL
Server 2005 », Microsoft a voulu franchir le pas du support complet du format XML. Cela a été facilité par l ’utilisation du
FrameWork .NET 2.0.
Dans cette stratégie, il fallait donc aussi regarder ce qui était possible avec les Web Services.
En effet, depuis le développement des interactions entre les applications, les Web Services sont devenus très importants
avec des architectures de plus en plus complexes. Jusqu’à maintenant (avec SQL Server 2000), on était obligé de
développer ce Web Service alors que celui-ci ne fait par exemple que lister le contenu d ’une table SQL. Ainsi, on se
retrouvait dans une situation nous obligeant à trouver un serveur IIS afin d’héberger ce Web Service qui lui -même
transfère la demande vers SQL Server afin d’exécuter la procédure stockée. Ce résultat était alors retourné au serveur
IIS qui l’embarquait dans le flux XML pour le transférer au demandeur.
On avait donc du travail inutile du point de vue du développement, mais surtout beaucoup de travail et de flux inutiles
du point de vue des serveurs et du réseau.
De plus, on savait déjà que le FrameWork .NET était capable de gérer des requêtes HTTP (Cassini en est le parfait
exemple). Ainsi, la solution a été de faire usage de cette possibilité directement dans SQL Server 2005.
De ce fait, avec SQL Server 2005, nous pouvons directement référencer un Web Service qui sera exposé et géré par le
moteur SQL Server lui-même. L’objectif de cet article est donc de présenter ce travail et par la suite de présenter
comment intégrer ce Web Service dans votre développement .NET.
Haut de page
Principe
SQL Server 2005 est basé sur le FrameWork .NET 2.0 pour une partie de son fonctionnement interne, ainsi les EP sont
une mise à la disposition des utilisateurs extérieurs de Web Services. Ces Web Services ne seront pas installés (comme il
est habituellement le cas dans le monde Windows) sur IIS.
En effet, avec le FrameWork .NET est venue la possibilité de répondre à des requêtes HTTP via HTTP.SYS. Ainsi lors de la
mise à disposition de ces objets, il faudra d’abord réserver un nom dans HTTP.SYS qui transférera toutes les requêtes
correspondantes à cette réservation vers SQL Server 2005.
Cette réservation est associée avec le paramétrage de cet EP qui lui permet de spécifier l’URL d’accès ainsi que toutes les
options de cet EP. On pourra alors ajouter des méthodes à cet EP, ce sont les méthodes qui correspondent aux objets
(uniquement les fonctions ou Procédures Stockées) de SQL Server 2005.
http://www.microsoft.com/france/technet/produits/sql/endPoints.mspx
26/03/2006
Microsoft TechNet - Les End Points ou points de terminaison
Page 2 sur 5
De ce fait, lorsque l’application cliente de ce Web Service demande l ’url de celui -ci, le noyau HTTP du serveur
(HTTP.SYS) détecte qu ’une réservation a bien été faite sur cette URL. Une fois cette vérification faite, le transfert est
effectué et SQL Server prend en charge cette requête afin de retourner ce qui est demandé (résultat WSDL, exécution de
la méthode, …). Maintenant que nous avons vu le principe de fonctionnement, voyons comment faire pour créer un EP.
Haut de page
Création du Point de Terminaison
On ne peut publier que certains objets SQL Server en EP, il s’agit en effet uniquement des fonctions et des procédures
stockées utilisateurs.
Nous baserons notre exemple sur la base fournie avec SQL Server 2005:
• AdventureWorks
Cette base contient un ensemble de tables permettant de construire une maquette.
Nous prendrons un exemple simple de sélection des 10 premiers clients classés par ordre alphabétique (Nom, Prénom et
Email). Cette procédure stockée ne prend donc aucun paramètre en entrée.
USE AdventureWorks
GO
CREATE PROCEDURE Selection10PremiersClients
AS
SELECT
TOP 10
Cont.LastName
AS Nom,
Cont.FirstName
AS Prénom,
Cont.EmailAddress
AS Email
FROM
Person.Contact Cont
ORDER BY
Cont.LastName ASC,
Cont.FirstName ASC
GO
Nous avons donc maintenant une procédure stockée très simple qui doit ensuite être utilisée dans une application Web
qui n’a pas accès au serveur SQL, nous souhaitons donc utiliser un Web Service pour cela.
Il faut donc alors utiliser la procédure de création des End Points avec un script comme celui qui suit :
CREATE ENDPOINT SQLEP_ArticleTechnet
STATE = STARTED
AS HTTP
(
PATH = '/EndPointArticleTechnet',
AUTHENTICATION = (INTEGRATED),
PORTS = (CLEAR),
CLEAR_PORT = 8080,
SITE = 'localhost'
)
FOR SOAP
(
WEBMETHOD 'Liste10PremiersClients'
(NAME='AdventureWorks.dbo.Selection10PremiersClients'),
BATCHES = DISABLED,
WSDL = DEFAULT,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://Adventure -Works/Persons'
)
Vous pouvez trouver toutes les options et paramètres possibles pour cette commande de création sur le site de la
MSDN :
• CREATE ENDPOINT (Transact -SQL)
Pour simplifier, la première partie correspond aux options de ce Web Service, la seconde est liée à la méthode qui va
être associée à ce Web Service.
http://www.microsoft.com/france/technet/produits/sql/endPoints.mspx
26/03/2006
Microsoft TechNet - Les End Points ou points de terminaison
Page 3 sur 5
L’URL de ce Web Service est dans notre cas :
• http://localhost:8080/EndPointArticleTechnet
Nous avons activé la publication du WSDL (c ’est une vision XML qui permet de connaître les méthodes exposées et leurs
paramètres), cette vision est disponible en ajoutant « ?WSDL » à notre URL, ce qui donne dans notre exemple :
• http://localhost:8080/EndPointArticleTechnet?WSDL
Si on ouvre cette URL dans un navigateur internet, nous aurons une demande d’authentification puis le WSDL de ce Web
Service.
Haut de page
Listage des EP présents sur notre serveur SQL
En tant que DBA, il est utile de savoir si des EP ont été mis en place sur un serveur, pour cela il faut interroger des
tables système en utilisant les requêtes suivantes.
SELECT *
FROM sys.endpoints
WHERE sys.endpoints.protocol_desc= 'HTTP';
SELECT *
FROM sys.http_endpoints;
SELECT *
FROM sys.soap_endpoints;
SELECT *
FROM sys.endpoint_webmethods;
• La première table « sys.endpoints » permet de lister les End Points créés. En effet, le protocole HTTP est une des
possibilités de points de terminaison, mais il existe d’autres.
• La seconde table « sys.http_endpoints » nous donne la liste des EP HTTP ainsi que les paramètres d’accès de chacun
(sécurité, URL, port, …).
• La troisième table « sys.soap_endpoints » retourne les paramètres SOAP et WSDL ce ces points de terminaison (vision
WSDL ou non, base de données par défaut, espace de nom, …).
• La dernière table « sys.endpoints_webmethods » retourne la liste des méthodes associées à ces EP. On peut bien sur
associer plusieurs méthodes pour un seul point de terminaison.
http://www.microsoft.com/france/technet/produits/sql/endPoints.mspx
26/03/2006
Microsoft TechNet - Les End Points ou points de terminaison
Page 4 sur 5
Haut de page
Suppression ou modification d ’un EP
Dans le cas où un point de terminaison n’ est plus utile, on peut bien sur le supprimer avec la commande DROP, comme
suit :
DROP ENDPOINT SQLEP_ArticleTechnet
GO
On peut aussi désactiver un EP, afin éventuellement de le réutiliser plus tard sans pour autant le supprimer.
ALTER ENDPOINT SQLEP_ArticleTechnet
STATE = DISABLED
GO
On peut choisir pour cette option « DISABLED » qui demande au serveur de ne plus du tout écouter le point de
terminaison et donc ne plus répondre aux demandes. La seconde option possible est « STOPPED » pour laquelle le
serveur continue d ’écouter le point de terminaison, mais de retourner une erreur.
Dans le cadre d’un développement, on peut souhaiter laisser la vision du WSDL, mais le désactiver pour les serveurs de
production (pour des raisons de sécurité), il faut alors exécuter le script suivant.
ALTER ENDPOINT SQLEP_ArticleTechnet
FOR SOAP
(
WSDL = NONE
)
GO
La vision de la précédente URL dans un navigateur retournera alors une page blanche.
Maintenant, comme nous l’ avons expliqué juste au dessus, nous souhaitons ajouter une seconde méthode à cet EP, il
faut alors passer par un script de mise à jour. Nous créerons dans un premier temps une procédure stockée afin
d’obtenir les dix premiers contacts dont le nom commence par une lettre transmise.
USE AdventureWorks
GO
CREATE PROCEDURE Selection10PremiersClientsSuivantLettre
@Lettre AS char
AS
SELECT
TOP 10
Cont.LastName
AS Nom,
Cont.FirstName
AS Prénom,
Cont.EmailAddress
AS Email
FROM
Person.Contact Cont
WHERE
Cont.LastName LIKE @Lettre +'%'
ORDER BY
Cont.LastName ASC,
Cont.FirstName ASC
GO
Il nous faut donc mettre à jour notre EP afin d’ajouter la procédure nouvellement créée. Cela se fait toujours avec la
commande « ALTER ENDPOINT » comme suit.
ALTER ENDPOINT SQLEP_ArticleTechnet
FOR SOAP
(
ADD WEBMETHOD 'Liste10PremiersClientsSuivantLettre'
(name='[AdventureWorks].[dbo].[Selection10PremiersClientsSuivantLettre]')
);
GO
Nous pouvons comme dans tout Web Service publier autant de méthodes que nous le souhaitons.
Haut de page
Conclusion
Nous avons vu cette nouvelle possibilité offerte avec la version SQL Server 2005. Cette mise à disposition de Web
Service n’ est pas possible avec SQL Server 2005 Express Edition. Pour les autres versions, cette possibilité permet de
penser autrement ses mises en place de Web Service.
On peut même réfléchir sur de nouvelles architectures pour des développements ou l’ouverture du port SQL Server
standard est un problème. En effet, le gain de temps dans les développements utilisant les Web Services comme
alimentation de données trouveront un intérêt tout particulier à cette possibilité.
Pour ce qui est de la sécurité, il faut faire très attention et s’accorder avec les administrateurs des serveurs lors du choix
de la mise en place de cette solution. Elle peut en effet impacter de nombreuses configurations pour les FireWall et les
http://www.microsoft.com/france/technet/produits/sql/endPoints.mspx
26/03/2006
Microsoft TechNet - Les End Points ou points de terminaison
Page 5 sur 5
routeurs par exemple.
Nous allons pouvoir nous attarder dans la prochaine partie sur l’ utilisation de cet End Point dans un développement .NET
Haut de page
Gérez votre profil | Contactez Microsoft
©2006 Microsoft Corporation. Tous droits réservés. Conditions d'utilisation | Marques | Confidentialité | A propos de ce site
http://www.microsoft.com/france/technet/produits/sql/endPoints.mspx
26/03/2006