Bonjour,
Je vais tout d'abord exposer du départ ce que j'ai entrepris.
Mon but est de faire un site web relié à une base de données SQL SERVER.
Dans la version actuelle, toute mes méthodes de lecture et de MAJ des données sont placées dans une DLL que j'utilise via mes différents outils périphériques (un extranet, un intranet , et une application Winform).
Ainsi, toute modification de structure de la SGBD nécessite une adaptation de la DLL.
L'idée d'utiliser un service web data me parait une solution plus souple pour l'architecture de mon projet.
J'ai créé un projet de type WEB SERVICE WCF à partir de VS2010 (Win 7(x64)).
J'ai alimenté le fichier Interface :
Puis la CLASS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Interface IMBLib <OperationContract()> Function GetLangue(<br/> ByVal idLangue As Int32 _<br/>, ByVal ORDER As String, ByVal WHERE As String) As DataSet<br/> End Interface
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Option Explicit On Option Strict On Imports System Imports System.Data Imports System.Data.SqlClient Imports System.IO Imports System.IO.Compression Imports System.ComponentModel.Component Imports System.Drawing Imports System.Drawing.Drawing2D Imports MBThumb Public Class MBLib Implements IMBLib Dim acc As AccesBase Public Sub New() acc = New AccesBase(ConfigurationManager.ConnectionStrings("MBConnectionString").ConnectionString) End Sub Protected Overrides Sub Finalize() acc.Dispose() acc = Nothing MyBase.Finalize() End Sub Function GetLangue( _<br/> ByVal idLangue As Int32 _<br/> , ByVal ORDER As String, ByVal WHERE As String) As DataSet Implements IMBLib.GetLangue<br/> Dim strSQL As String<br/> strSQL = "SELECT * FROM Vtbl_AS_Langue"<br/> strSQL = strSQL & " WHERE 1=1 "<br/> If idLangue <> 0 Then<br/> strSQL = strSQL & " AND idLangue = " & idLangue<br/> End If If WHERE <> "" Then<br/> strSQL = strSQL & " AND " & WHERE<br/> End If<br/> If ORDER <> "" Then<br/> strSQL = strSQL & " ORDER BY " & ORDER<br/> Else<br/> strSQL = strSQL & " ORDER BY CodeLangue"<br/> End If<br/> Return acc.GetDataSet(strSQL)<br/> End Function<br/> End Class
Le WEB.Config du service est :
Côté client, j'ai utilisé un site WEB ASP.Net auquel j'ai ajouté une web référence sur le service précédent sous le nom "WCF_Lib".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 <?xml version="1.0"?> <configuration> <connectionStrings> <add name="MBConnectionString" connectionString="Data Source=MB-W764\SQLEXPRESS;Initial Catalog=Chastra_ADM;Integrated Security=True"/> </connectionStrings> <system.web> <compilation debug="true" strict="true" explicit="true" targetFramework="4.0"> <assemblies> <add assembly="System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation> <pages> <namespaces> <add namespace="System.Runtime.Serialization"/> <add namespace="System"/> <add namespace="System.ServiceModel"/> <add namespace="System.ServiceModel.Web"/> </namespaces> </pages> </system.web> <system.serviceModel > <behaviors> <serviceBehaviors> <behavior > <!-- Pour éviter la divulgation des informations sur les métadonnées, définissez la valeur ci-dessous sur false et supprimez le point de terminaison des métadonnées ci-dessus avant le déploiement --> <serviceMetadata httpGetEnabled="true"/> <!-- Pour recevoir les détails d'exception des erreurs à des fins de débogage, définissez la valeur ci-dessous sur true. Définissez-la sur false avant le déploiement pour éviter la divulgation des informations d'exception --> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>
A ce niveau, GetLangue n'a plus les mêmes paramètres que ceux déclarés dans le service.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs) Dim acc As New WCF_MBLib.MBLib Dim dsLngSite As DataSet = acc.GetLangue(0, False, "", "(Site=1)") ... dsLngSite.Dispose() acc.Dispose() : acc = Nothing End Sub
Dans l'explorateur de classe je vois ça :
idLangueSpecified a été ajouté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Public Function GetLangue(ByVal idLangue As Integer, ByVal idLangueSpecified As Boolean, ByVal ORDER As String, ByVal WHERE As String) As System.Data.DataSet
Pourquoi? et comment résoudre ce problème s'il vous plait?
Merci
Partager