Comment utiliser le Office Web Components avec des données XML générées par un service web XML créé à l’aide de ASP.NET

Résumé

Cet article pas à pas explique comment utiliser ASP.NET pour créer un service web XML simple qui récupère des données à partir de l’exemple de base de données Northwind Microsoft Access et retourne les données en tant que code XML à un client lorsque le client appelle une méthode du service. Côté client, les données sont présentées avec les composants Tableau croisé dynamique Office et Graphique. Cet article explique également comment créer un client pour le service web XML à l’aide de Visual Basic .NET ou de Visual Basic 6.0.

Créer un service web XML simple à l’aide de ASP.NET

  1. Démarrez Visual Studio. Net.

  2. Dans le menu Fichier , cliquez sur Nouveau , puis sur Projet. Sous Types de projets , cliquez sur Projets Visual Basic, puis sur ASP.NET service web sous

  3. ****Modèles. Form1 est créé par défaut.

  4. Modifiez l’emplacementhttps://localhost/MyDataService et cliquez sur OK. Le projet de service web XML est créé sur l’ordinateur local avec le nom MyDataService. La classe Service1, qui hérite de System.Web.Services.WebService, est créée par défaut dans le fichier Service1.asmx.

  5. Dans Explorateur de solutions, cliquez avec le bouton droit sur Service1.asmx, puis sélectionnez Afficher le code. Cela affiche le fichier code-behind pour la page .asmx.

  6. Ajoutez une référence à la bibliothèque Microsoft ActiveX Data Objects. Pour cela, procédez comme suit :

    1. Dans le menu Projet, cliquez sur Ajouter une référence.
    2. Cliquez sur l’onglet COM , sélectionnez Microsoft ActiveX Data Objects 2.7 Library, cliquez sur Sélectionner, puis cliquez sur OK.
  7. Ajoutez la méthode suivante à la classe Service1 :

    <WebMethod()> Public Function GetResultsAsAdoXML() As String
        Dim myAdoRs As ADODB.Recordset
        Dim myAdoConnection As New ADODB.Connection()
        Dim mypersiststream As New ADODB.Stream()
    
    Dim myConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
           "C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
        Dim mySelect As String = "SELECT * from [Category Sales for 1997]"
    
    myAdoConnection.ConnectionString = myConnectionString
        myAdoConnection.Open()
        myAdoRs = myAdoConnection.Execute(mySelect)
        myAdoRs.Save(mypersiststream, ADODB.PersistFormatEnum.adPersistXML)
        Return mypersiststream.ReadText
    End Function
    

    Remarque

    Si vous n’avez pas installé Office XP dans le dossier par défaut (C:\Program Files\Microsoft Office), modifiez la chaîne de connexion dans le code pour refléter le chemin d’accès approprié pour votre installation d’Office. En outre, si vous avez installé Office 2003, vous devrez peut-être modifier le chemin d’accès en conséquence.

  8. Dans le menu Générer , cliquez sur Générer la solution pour générer le service web XML.

Tester votre service web XML

  1. Dans le menu Déboguer , cliquez sur Démarrer. Microsoft Internet Explorer démarre et accède au fichier Service1.asmx.
  2. Cliquez sur le lien hypertexte GetResultsAsAdoXML .
  3. Cliquez sur Invoke pour tester l’appel de méthode. Une nouvelle fenêtre affiche les résultats de la requête Category Sales for 1997 au format de schéma d’ensemble de lignes XML. Le document XML de l’ensemble de lignes est placé dans l’élément de chaîne.
  4. Dans le menu Débogage de Visual Studio .NET, cliquez sur Arrêter le débogage.

Créer un client pour votre service web XML

Cette section explique comment créer un client pour utiliser le service web XML MyDataService. Vous pouvez créer votre client avec Visual Basic 6.0 ou Visual Basic .NET.

À des fins de démonstration, les étapes décrivent comment générer le client de test sur le même ordinateur que le service web XML. Toutefois, vous pouvez créer vos clients de test sur n’importe quel ordinateur qui peut accéder au fichier WSDL (Web Services Description Language) exposé par le service Web.

Utiliser Visual Basic .NET

  1. Créez un projet d’application Windows Visual Basic .NET. Form1 est créé par défaut.

  2. Appuyez sur Ctrl+Alt+X pour afficher la boîte à outils.

  3. Dans le menu Outils , cliquez sur Personnaliser la boîte à outils. Sélectionnez les éléments suivants dans la liste des composants, puis cliquez sur OK :

    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Tableau croisé dynamique Microsoft Office 10.0
      Les icônes des composants apparaissent dans la boîte à outils.
  4. Ajoutez un contrôle chart, un contrôle de tableau croisé dynamique et un contrôle de source de données à Form1. Dimensionnez et positionnez le formulaire et les contrôles en fonction des besoins.

  5. Ajoutez un contrôle Button à Form1, puis définissez la propriété Text du contrôle sur Remplir les données.

  6. Ajoutez une référence à l’exemple de service web XML. Pour cela, procédez comme suit :

    1. Dans le menu Projet, cliquez sur Ajouter une référence Web. La boîte de dialogue Ajouter une référence web s’affiche.
    2. Dans la zone de texte Adresse , tapez http:// localhost/MyDataService/Service1.asmx?wsdl, puis appuyez sur Entrée. Le fichier WSDL s’affiche dans la boîte de dialogue.

    Remarque : si MyDataService ne réside pas sur l’ordinateur local, remplacez localhost dans l’adresse par le nom du serveur web sur lequel réside MyDataService.
    3. Dans la boîte de dialogue, cliquez sur Ajouter une référence.

  7. Double-cliquez sur le contrôle Button sur Form1, puis remplacez le gestionnaire Button1_Click par le code suivant :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    'Reference to the service.
        Dim objClient As New localhost.Service1()
    
    'Result obtained from the Service method.
        Dim strresult As String
    
    'The results will be stored on this disk file.
        Dim datafile As String
    
    datafile = System.IO.Directory.GetCurrentDirectory() + "\\mydata.xml"
    
    'Call the Web service method GetResultsAsAdoXML, which returns the recordset as XML.
        strresult = objClient.GetResultsAsAdoXML()
    
    Dim oxmldoc As New System.Xml.XmlDocument()
    
    'Load the XML recordset into the XML Document object.
        oxmldoc.LoadXml (strresult)
    
    'Save it to disk file.
        oxmldoc.Save (datafile)
    
    'Get data in the DataSource component.
        If Len(AxDataSourceControl1.ConnectionString) = 0 Then
            AxDataSourceControl1.ConnectionString = "provider=mspersist"
            AxDataSourceControl1.RecordsetDefs.AddNew( _
                  datafile, AxDataSourceControl1.Constants.dscCommandFile, "ChartData")
        End If
    
    'Get data in Chart component.
        Dim c
        Dim cht As OWC10.ChChart
        Dim ser As OWC10.ChSeries
        Dim ax As OWC10.ChAxis
    
    c = AxChartSpace1.Constants
        ' Clear the ChartSpace.
        AxChartSpace1.Clear()
    
    'DataSource to the Chart component.
        AxChartSpace1.DataSource = AxDataSourceControl1.DefaultRecordset.DataSource
    
    'Get the reference to Chart within the ChartSpace component.
        cht = AxChartSpace1.Charts(0)
        cht.Type = c.chChartTypeBarStacked
        cht.HasLegend = True
        cht.Legend.Position = c.chLegendPositionTop
        cht.HasTitle = True
        cht.Title.Caption = "Category Sales for 1997"
    
    'Set the Chart data.
        AxChartSpace1.SetData(OWC10.ChartDimensionsEnum.chDimCategories, 0, "CategoryName")
        AxChartSpace1.SetData(OWC10.ChartDimensionsEnum.chDimValues, 0, "CategorySales")
    
    ax = cht.Axes(c.chAxisPositionBottom)
    
    'Set the series attributes.
        ser = cht.SeriesCollection(0)
        ser.Name = "Category Sales"
        ser.Caption = ser.Name
        ser.Marker.Size = 4
    
    'Get Data in the PivotTable component.
        Dim pview As OWC10.PivotView
        AxPivotTable1.AutoFit = True
        AxPivotTable1.ConnectionString = "provider=mspersist"
        AxPivotTable1.CommandText = datafile
        pview = AxPivotTable1.ActiveView
        pview.AutoLayout()
        pview.FilterAxis.Label.Visible = False
        pview.RowAxis.Label.Visible = False
        pview.ColumnAxis.Label.Visible = False
        pview.TitleBar.Visible = False
    
    End Sub
    
    

    Note Si le service web XML se trouve sur un ordinateur distinct, déclarez la variable objClient comme suit :

     Dim objClient As New <servername>.Service1()
    

    servername est le nom du serveur sur lequel réside le service Web XML.

  8. Remarque Si vous utilisez Office 2003, vous devrez peut-être modifier les références en conséquence.

  9. Ajoutez le code suivant en haut de Form1.vb :

    Imports OWC10 = Microsoft.Office.Interop.OWC
    
    
  10. Dans le menu Débogage , cliquez sur Démarrer pour générer et exécuter le programme client. Form1 s’affiche.

  11. Cliquez sur Remplir les données pour présenter les données dans le graphique et les contrôles de tableau croisé dynamique.

Utiliser Visual Basic 6.0

Les services Web XML communiquent avec les clients à l’aide de messages SOAP (Simple Object Access Protocol). Si l’application cliente prend en charge SOAP, elle peut appeler les méthodes exposées par le service Web XML. Visual Studio .NET n’a pas besoin d’être installé sur les ordinateurs clients pour appeler des méthodes sur le service web XML. Le client doit avoir la possibilité de cadrer les appels de méthode de service Web XML en tant que demandes SOAP et de recevoir les résultats des appels de méthode en tant que réponses SOAP. Soap Toolkit vous permet de le faire.

Pour plus d’informations sur le kit de ressources SOAP, y compris les instructions de téléchargement, consultez le site web Microsoft Developer Network (MSDN) suivant : SOAP Toolkit

Pour créer un client de test Visual Basic 6.0 afin d’utiliser des méthodes dans le service web XML MyDataService, procédez comme suit :

Remarque

Ce client de test nécessite l’installation de SOAP Toolkit 2.0 Service Pack 2 sur l’ordinateur.

  1. Démarrez Visual Basic 6.0 et créez un projet EXE standard. Form1 est créé par défaut.

  2. Dans le menu Projet , cliquez sur Références. Ajoutez les références suivantes au projet :

    • Bibliothèque de types Soap Microsoft
    • Microsoft XML, v3.0
  3. Dans le menu Projet , cliquez sur Composants. Sélectionnez Microsoft Office XP Web Components, puis cliquez sur OK.

  4. Ajoutez les Office Web Components suivantes à Form1 :

    • Microsoft Office Chart 10.0
    • Microsoft Office Data Source Control 10.0
    • Tableau croisé dynamique Microsoft Office 10.0
  5. Ajoutez un contrôle CommandButton à Form1 et définissez la propriété Caption du bouton sur Remplir les données.

  6. Double-cliquez sur le contrôle CommandButton et remplacez le gestionnaire Command1_Click par le code suivant :

    Private Sub Command1_Click()
      Dim osoapClient As MSSOAPLib.SoapClient
    
    'Initialize the SOAP client object.
      Set osoapClient = CreateObject("MSSOAP.SoapClient")
      osoapClient.mssoapinit "https://localhost/MyDataService/Service1.asmx?wsdl", "Service1", "Service1Soap"
    
    'DOM object to load the results.
      Dim oXMLDoc As New MSXML2.DOMDocument
      Dim strdirname As String
    
    'File to store XML recordset.
      strdirname = FileSystem.CurDir$ + "\mydata.xml"
    
    Dim strxmlrecordset As String
    
    'Call the WebService method.
      strxmlrecordset = osoapClient.GetResultsAsAdoXML()
    
    'Load the XML in the DOM document.
      oXMLDoc.loadXML strxmlrecordset
    
    'Save it to the disk file.
      oXMLDoc.Save (strdirname)
    
    'Get the data into the DataSourceControl1 component.
      If Len(DataSourceControl1.ConnectionString) = 0 Then
         DataSourceControl1.ConnectionString = "provider=mspersist"
         ' Add a RecordsetDef with name ChartData to the DataSourceControl1
         DataSourceControl1.RecordsetDefs.AddNew strdirname, DataSourceControl1.Constants.dscCommandFile, "ChartData"
      End If
    
    'Get the Data into the Chart component.
      Dim c
      Dim cht As ChChart
      Dim chart1 As ChChart
      Dim ser As ChSeries
      Dim ax As ChAxis
    
    Set c = ChartSpace1.Constants
      ChartSpace1.Clear
    
    'DataSource to the Chart component.
      ChartSpace1.DataSource = DataSourceControl1.DefaultRecordset.DataSource
    
    ' Draw the chart.
      Set cht = ChartSpace1.Charts(0)
      cht.Type = c.chChartTypeBarStacked
      cht.HasLegend = True
      cht.Legend.Position = c.chLegendPositionTop
      cht.HasTitle = True
      cht.Title.Caption = "Category Sales for 1997"
    
    'Set the chart data.
      ChartSpace1.SetData chDimCategories, 0, "CategoryName"
      ChartSpace1.SetData chDimValues, 0, "CategorySales"
    
    ' Set the tick label spacing depending on the number of points plotted.
      Set ax = cht.Axes(c.chAxisPositionBottom)
    
    'Set the series attributes.
      Set ser = cht.SeriesCollection(0)
      ser.Name = "Category Sales"
      ser.Caption = ser.Name
      ser.Marker.Size = 4
    
    'Get the data into the PivotTable.
      PivotTable1.ConnectionString = "provider=mspersist"
      PivotTable1.CommandText = strdirname
      PivotTable1.AutoFit = True
      Set pview = PivotTable1.ActiveView
      pview.AutoLayout
      pview.FilterAxis.Label.Visible = False
      pview.RowAxis.Label.Visible = False
      pview.ColumnAxis.Label.Visible = False
      pview.TitleBar.Visible = False
    End Sub
    
    

    Note Si le service Web XML réside sur un ordinateur distinct, remplacez localhost dans l’adresse du service Web XML par le nom du serveur sur lequel réside le service Web XML.

  7. Appuyez sur F5 pour générer et exécuter le programme. Form1 s’affiche.

  8. Cliquez sur Remplir les données pour présenter les données dans le graphique et les composants de tableau croisé dynamique.

References

Pour plus d’informations sur les services Web XML créés à l’aide de ASP.NET, cliquez sur le numéro d’article suivant pour afficher l’article dans la Base de connaissances Microsoft :

301273 Comment écrire un service Web simple à l’aide de Visual Basic .NET

Pour plus d’informations sur les services Web XML créés à l’aide de ASP.NET, consultez la rubrique « Programmation du web avec des services web » dans l’aide de Visual Studio .NET ou la rubrique « ASP.NET services web et clients de service web ASP.NET » dans le Guide du développeur Microsoft .NET Framework.

Pour plus d’informations sur les services web essentiels et les services web XML créés à l’aide de ASP.NET, visitez le site Web Microsoft Developer Network (MSDN) suivant :

https://msdn.microsoft.com/en-us/library/ba0z6a33.aspx

Pour plus d’informations sur le développement Microsoft Office avec Visual Studio et office XP Web Components, visitez le site web MSDN suivant :

https://msdn.microsoft.com/en-us/library/aa188489(office.10).aspx