4. Introduction
Présentations fonctionnelle et technique
Introduction à SQL Server et le type
géographique
Introduction au développement N-Tiers
Développement d’un service d’exposition de
données AJAX
Conclusions
7
5.
6. Quels patterns de développement connaissez-
vous ?
Selon vous
• Est-ce réellement utilisé en entreprise ?
• Est-ce lié à un langage ou une plateforme ?
• Quel intérêt pour le développeur ?
• Ces principes sont-ils limités à l’informatique ?
9
7. Notions abordées
• Présentation et mise en pratique de SQL Server
• Développement .Net :
Accès aux données, définition des classes et exposition web
• Développement JavaScript :
Appel asynchrone, utilisation de jQuery
Notions non abordées dans cette session
• Utilisation avancée de SQL Server
• Utilisation et développement avancé en .Net
• Développement avec ASP.Net MVC
• Utilisation avancée de Bing Maps ou customisation10
8.
9. Description de l’interface
Recherche (géocodage)
Carte interactive
Recherche à proximité :
Déclenchée sur le clic
sur la carte
12
10. Besoins
• Interface cartographique web interactive
• Recherche de proximité
Contraintes de développement
• Etablir un couplage lâche entre chaque couche
applicative :
Du stockage des données à la présentation
• Utilisation des technologies Microsoft
Base de données SQL Server
Développement utilisant le Framework .Net
Utilisation de l’API Bing Maps for Enterprise – contrôle AJAX v7
13
11.
12. Vue globale
Serveur de base de Serveur applicatif Web - Navigateur
données – SQL Server IIS
Utilisateur
15
14. Historique
• Ajouté pour la première fois dans SQL Server 2008
• Correspond à un type CLR – utilisant un type de
données spécialisé
• Introduit en même temps que les types :
Geometry
HiearchyId
Geography
• Amélioré en SQL Server 2012
17
15. En détails
• Capacité de stockage de données géographiques
Point, lignes, polygones…
• Evite la gestion de tables de coordonnées
• Permets d’effectuer des opérations avancées à partir
de méthodes standards
18
16. Intérêts
• Ajout de capacité spatiales à vos données
• Utilisation d’index spatiaux dédiés
• Manipulation simplifiée et standards
19
17. Utilisation concrète
• Déclaration des éléments en texte standard : WKT
POINT(4 45)
• Déclaration d’autres types d’éléments géographiques :
LINESTRING(3 45,4 45,4 44)
POLYGON((3 45,4 44,4 45,3 45))
• WKT est un standard OGC :
http://en.wikipedia.org/wiki/Well-known_text
http://msdn.microsoft.com/en-us/library/bb895235.aspx
20
19. Création de la procédure stockée
ALTER PROCEDURE City_SelectNearby
@pCenterLat as float,
@pCenterLng as float,
@pRadius as int
AS
BEGIN
DECLARE @area as GEOGRAPHY
SET @area = GEOGRAPHY::STGeomFromText('POINT('
+ CAST(@pCenterLng as varchar(max))+ ' '
+ CAST(@pCenterLat as varchar(max))
+ ')', 4326);
SELECT
c.[City] as 'Name',
CAST(c.[Population] as varchar) as 'Description',
c.[Location].Lat as 'Latitude',
c.[Location].Long as 'Longitude'
FROM Cities c
WHERE c.[Location].STIntersects(@area.STBuffer(@pRadius)) = 1
END
GO
22
22. Principe général
• Séparer les différentes les développements par des
couches logicielles
• Améliorer la maintenabilité et l’évolutivité des
développements
• Simplifier les développements
25
23. Description précise
• Présentation du pattern Repository
Exposition and
Repositories Business
Presentation
26
24. Description précise
• Présentation du pattern Repository
Repositories Business Exposition and
Presentation
IRepository Services Web Services
SqlServerRepository
Entities JavaScript
XmlRepository
27
25. Intérêts
• Réutilisation et mutualisation des développements
• Simplification
• Développement logique
• S’applique à toutes technologies
28
26. Etape 1 : Création de la structure de projet
Etape 2 : Développement de la couche d’accès
aux données
Etape 3 : Construction de la couche métier et des
entités métiers
29
29. Etape 4 : Création du Web Services d’exposition
de données
• Ajout de l’attribut ScriptService
[System.Web.Script.Services.ScriptService]
public class GeoService : System.Web.Services.WebService
• Ajout des attributs de visibilité et exposition sur les
méthodes souhaitées
[WebMethod]
[ScriptMethod]
public string HelloWorld()
32
30. Etape 5 : Création du code client JavaScript
d’appel asynchrone
• Utilisation avec la librairie jQuery
http://jquery.com/
• Exemple de code d’appel :
$.ajax({
url: composedUrl,
data: JSON.stringify(dataObject),
type: "POST",
contentType: 'application/json; charset=utf-8',
success: onGetCitiesNearbySuccess,
error: onGetCitiesNearbyError
});
33