Web Service Software factory
de l’installation au test de son premier projet
Web Service Software factory de l’installation au test de son premier projet
cet article a pour but d’être surtout un mémento au niveau de la démarche (chronologie) pour réaliser son web service avec web Software Service Factory
I télécharger et installer :
- - Guidance Automation Extensions Technology Preview (July 2007 Release for Visual Studio 2005 and Visual Studio 2008 Beta 2)
- Guidance Automation Toolkit Technology Preview (July 2007 Release for Visual Studio 2005 and Visual Studio 2008 Beta 2)
- Web Service Software Factory
II Créer un nouveau projet :
Guidance Packages .. Web Service Software Factory ..WCF Service

Sont générés
BusinessLogic
- WSSFDemo.BusinessEntities
- WSSFDemo.BusinessLogic
Resource Access
- WSSFDemo.DataAccess
Service Interface
- WSSFDemo.DataContracts
- WSSFDemo.FaultContracts
- WSSFDemo.ServiceContracts
- WSSFDemo.ServiceImplementation
Tests
- WSSFDemo.Host
- WSSFDemo.Client

1 Ajout d’une nouvelle connexion (projet WSSFDemo.Host)
2 Création des entités métiers (projet BusinessEntities)
3 Création classes data repository (projet DataAccess)
4 définition d’une classe « façade » Repositories(projet BusinessLogic)
5 définition d’un DataContract (projet DataContracts)
6 Création des messages : Request ,Response (projet ServiceContracts)
7 Création de l’interface de service du contrat (projet ServiceContracts)
8 Implémentation de l’interface de service (projet ServiceImplementation)
9 Remplir le corps de la méthode
10 Exposer le service (projet Host)
11 Ajouter une référence au service web (projet test)
1 Ajout d’une nouvelle connexion (projet Host)

La connexion est ajoutée dans Web.config
<connectionStrings>
<add name="ContactDBConnectionString" connectionString="Data Source=.;Initial Catalog=ContactDB;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
|
2 Création des entités métiers (projet BusinessEntities)

Sélection du nom de connexion

.. des tables

3 Création classes data repository (projet DataAccess)

… définition des différentes méthodes

Sélection du nom de la procédure stockée correspond à l’opération désirée + définition du mapping

… voila à quel niveau on se retrouve actuellement les entités métiers et les classes accès aux données

Pour mieux comprendre les classes générées vous pouvez regarder cet article en 3 parties (document word et sources)
- Partie 1
- Partie 2
- Partie 3
4 projet BusinessLogic définition d’une classe « façade » Repositories
public static class Repositories
{
private const string databaseName = "ContactDBConnectionString";
private static ContactRepository contactRepository = new ContactRepository(databaseName);
private static CategoryRepository categoryRepository = new CategoryRepository(databaseName);
// autres fields et properties
public static ContactRepository Contacts
{
get { return contactRepository; }
}
public static CategoryRepository Categories
{
get { return categoryRepository; }
}
}
|
5 définition d’un DataContract (projet DataContracts)


6 Création des messages : Request ,Response (projet ServiceContracts)

7 Création de l’interface de service du contrat (projet ServiceContracts)

On affecte le nom de la méthode,la classe que l’on vient de créer Request et response …

8 Implémentation de l’interface de service (projet ServiceImplementation)

9 Remplir le corps de la méthode
- Attribut : nom service ,Namespace
- Classe nomclassService(dans projet ServiceImplementation) hérite d’une interface(interface dans projet ServiceContracts)
- Méthode : reçoit un objet de classe request ,retourne un objet de classe response
[ServiceBehavior(Name = "CategoryService", Namespace = "http://WSSFDemo.ServiceContracts/2007/09")]
public class CategoryService : WSSFDemo.ServiceContracts.ICategoryService
{
#region IGetCategoryService Membres
public GetCategoryResponse GetCategory(GetCategoryRequest request)
{
GetCategoryResponse response = new GetCategoryResponse();
Category category = Repositories.Categories.GetCategory(request.CategoryID);
response.CategoryID = category.CategoryID;
response.CategoryName = category.CategoryName;
return response;
}
#endregion
}
|
10 Exposer le service(projet Host)

Important : cocher la case « Include metadata extension »

11 Ajouter une référence au service web (projet test)

Exemple de code de test depuis la form
private void button1_Click(object sender, EventArgs e)
{
ICategoryService service = new CategoryServiceClient();
GetCategoryRequest request = new GetCategoryRequest();
request.CategoryID = Convert.ToInt32(textBox1.Text);
GetCategoryResponse response = service.GetCategory(request);
MessageBox.Show(response.CategoryID.ToString() + " " + response.CategoryName);
}
|

http://msdn2.microsoft.com/en-us/library/aa480534.aspx
http://www.codeplex.com/servicefactory