Sharepoint 2010 – BCS ECT ,Windows Azure WCF et Bing Maps Partie 1

Posted on

Dans ce billet nous allons mettre en place l’utilisation de Bing Maps avec un service WCF Azure qui expose les données de SQL Azure, le tout dans Sharepoint 2010 sous la forme d’un External Content Type.

Pour faire plus simple voilà le schéma :

 

20091021.MSP - Introduction à Azure - ssfartz

SQL AZURE

Commençons dans un premier temps à se connecter sur notre plateforme Azure et de créer notre jeu de données.

 

image

Créer votre database dans mon cas elle s’appelle demo et est de type Web Edition 1GB

Renseignez les règles de Pare-feu en ajoutant votre adresse IP

.image

Maintenant nous pouvons nous connecter depuis SQL SERVER 2008 R2 ou depuis Visual Studio 2010 en renseignant votre chaine de connexion(xxxxxxx.database.windows.net)  et le mot de passe créé.

image

Puis exécutez le script ci-dessous

Script SQL

CREATE TABLE [StoreInformation](
[StoreID] [int] IDENTITY(1,1)NOT NULL PRIMARY KEY CLUSTERED,
[StoreTitle] [nvarchar](8)NULL,
[StoreName] [nvarchar](50)NOT NULL,
[StoreAddress] [nvarchar](50)NOT NULL,
[StorePhoneNumber] [nvarchar](50)NULL,
[Latitude] [nvarchar](30)NULL,
[Longitude] [nvarchar](30)NULL,
[Hours] [nvarchar](30)NULL,
[Timestamp] [timestamp] NOT NULL,
)

INSERT INTO [StoreInformation]

([StoreTitle],[StoreName],[StoreAddress],[StorePhoneNumber],[Latitude],[Longitude],[Hours])

VALUES

(‘1-C’, ‘LLK’, ‘Stanton, Denver, CO, USA’,’322-555-0188′, ‘39.6274999999999998’, ‘-104.221′, ’12’),

(‘2-C’, ‘Contoso’, ‘East King Alfred Mall, Denver, CO, USA’,’322-555-0188′, ‘39.556473221’, ‘-104.001′, ’12’),

(‘3-C’, ‘Jackson’, ‘Eastside Mall, Denver, CO, USA’,’322-555-1128′, ‘39.1121112321’, ‘-104.112′, ’12’),

(‘4-C’, ‘Hockey’, ‘Westside Mall, Denver, CO, USA’,’322-555-8839′, ‘39.221232122’, ‘-103.999′, ’12’),

(‘5-C’, ‘REI’, ‘Kareen Area Mall, Denver, CO, USA’,’322-555-9910′, ‘39.4432344432’, ‘-104.019′, ’12’),

(‘6-C’, ‘Cantrell’, ‘Saanich Mall, Denver, CO, USA’,’322-555-0029′, ‘39.61029102211’, ‘-103.892′, ’12’),

(‘7-C’, ‘PIA’, ‘Debson-Heights Mall, Denver, CO, USA’,’322-555-1028′, ‘39.11211212112’, ‘-104.001′, ’12’),

(‘8-C’, ‘Jacks’, ‘Perial Mall, Denver, CO, USA’,’322-555-2271′, ‘38.209102912’, ‘-103.920′, ’12’),

(‘9-C’, ‘TTT’, ‘Downtown Mall, Denver, CO, USA’,’322-555-1121′, ‘39.00001920192’, ‘-104.110′, ’12’),

(’10-C’, ‘AI’, ‘Southside Mall, Denver, CO, USA’,’322-555-8878′, ‘39.2291829182’, ‘-104.001′, ’12’),

(’11-C’, ‘J and J’, ‘Westmont Mall, Denver, CO, USA’,’322-555-9280′, ‘39.62888392819’, ‘-104.555′, ’12’)

WCF

Maintenant que nos données sont publiés nous allons créer notre service WCF Azure. La démarche est celle fourni par Steve Fox dans son article suivant :http://blogs.msdn.com/b/steve_fox/archive/2011/11/12/leveraging-wcf-services-to-connect-bcs-with-sharepoint-online.aspx

Configuration

Ouvrez Visual Studio et créer un nouveau projet Windows Azure.

Puis nommez la solution “ SharePointCallingSvcimage

 

Une fois lancé ajouté un nouvel élément de type “ ADO.NET Entity Data Model

Puis cochez comme dans l’image suivanteimage

 

Puis sélectionnez la table “ StoreInformation” en cochant comme ci :

 image

N’oubliez pas enfin de modifier les propriétés sur Model1.edmx comme tel :

Action de génération => EntityDeploy

Copier dans le répertoire de sortie => Toujours copier

image

Modification du code

Supprimez dès le début les codes fournis ajouter une classe “ StoreDetails

Classe StoreDetails.cs

namespace SharePointCallingSvc
{
    public class StoreDetails
    {
        public int StoreID{get; set;}
        public string StoreLongitude { get; set; }
        public string StoreLatitude { get; set; }
        public string StoreName{get;set;}
        public string StoreAddress{get;set;}
        public string StorePhone{get;set;}
        public string StoreHours{get;set;}
        public string StoreTitle { get; set; }

    }
}

 

Interface IService1.cs

using System.ServiceModel;

namespace SharePointCallingSvc
{
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        StoreDetails[] GetStores();

        [OperationContract]
        StoreDetails GetStore(int StoreID);

    }
    
}

Classe Service1.svc.cs

using System.Linq;
using System.ServiceModel.Activation;

namespace SharePointCallingSvc
{
   [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class Service1 : IService1
    {
      public StoreDetails[] GetStores()
       {
           using (StoresEntities db = new StoresEntities())
           {
               var myItems = (from c in db.StoreInformations select c);

               StoreDetails[] myStoreArray = new StoreDetails[myItems.Count()];

               int i = 0;

               foreach (StoreInformation item in myItems)
               {
                   myStoreArray[i] = new StoreDetails();

                   myStoreArray[i].StoreLatitude = item.Latitude;
                   myStoreArray[i].StoreLongitude = item.Longitude;
                   myStoreArray[i].StoreAddress = item.StoreAddress;
                   myStoreArray[i].StoreName = item.StoreName;
                   myStoreArray[i].StorePhone = item.StorePhoneNumber;
                   myStoreArray[i].StoreHours = item.Hours;
                   myStoreArray[i].StoreID = item.StoreID;
                                
                   i++;
               }

               return myStoreArray;
           }
           
       }

       public StoreDetails GetStore(int paramStoreID)
       {
           using (StoresEntities db = new StoresEntities())
           {
               var myItem = (from c in db.StoreInformations where c.StoreID == paramStoreID select c).FirstOrDefault();


               StoreDetails returnStore = new StoreDetails();
               returnStore.StoreID = myItem.StoreID;
               returnStore.StoreName = myItem.StoreName;
               returnStore.StoreAddress = myItem.StoreAddress;
               returnStore.StoreHours = myItem.Hours;
               returnStore.StorePhone = myItem.StorePhoneNumber;
               returnStore.StoreTitle = myItem.StoreTitle;
               returnStore.StoreLatitude = myItem.Latitude;
               returnStore.StoreLongitude = myItem.Longitude;

               return returnStore;
           }
       }


    }
}

Déploiement de du Service WCF

Maintenant compilez pour voir si vous n’avez pas d’erreur puis cliquez droit sur le WindowsAzureProject et “Publier” et sélectionnez dans le fenêtre “Create Service Package Only

image

Rendez vous dans votre portail Azure et créer un “Service hébergé

imageimage

 

 

 

 

Puis remplissez les champs :image

Une fois le service hébergé créé vous pouvez vous rendre sur sa page et invoquez le Service WCF :

image

One thought on “Sharepoint 2010 – BCS ECT ,Windows Azure WCF et Bing Maps Partie 1

    MRswallow said:
    May 8, 2012 at 10:26 pm

    Yes it is possible, just add the WCF seicvre (*.svc + seicvre dll) to the ASP.NET project. IIS will be able to serve request for both. Make sure you put the required configuration into your web.config.It is not the only solution but it should be easy to implement.

    Like

Leave a comment