Crasch

Il blog di Carlo Folini
posts - 33, comments - 734, trackbacks - 253

Condividere i tipi nei proxy generati con WSDL.exe

Dovendo gestire le chiamate ad un numero elevato di servizi .asmx (sia che si chiamino da asp.net che da smartclient) nasce il problema di come gestire i casi in cui uno schema è condiviso da più servizi.

Per i casi 'semplici' con l'utilizzo del "add web references" di visual studio 2005 si ottiene un proxy che ingloba i tipi esposti da quel servizio. Avremo quindi inclusi sia i tipi semplici che 'entity object' e DataSet.

Nel primo caso sarà aggiunta la definizione nel file Reference.cs

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.26")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://myNamespace/")]
public partial class SalesOrderDetail {
    
    
private int salesOrderIdField;
    
    
private decimal unitPriceField;
    
    
private string carrierTrackingNumberField;
    
    
private System.DateTime modifiedDateField;
    
    
/// 
    
public int SalesOrderId {
        
get {
            
return this.salesOrderIdField;
        }
        
set {
            
this.salesOrderIdField = value;
        }
    }
    
    
/// 
    
public decimal UnitPrice {
        
get {
            
return this.unitPriceField;
        }
        
set {
            
this.unitPriceField = value;
        }
    }
    
    
/// 
    
public string CarrierTrackingNumber {
        
get {
            
return this.carrierTrackingNumberField;
        }
        
set {
            
this.carrierTrackingNumberField = value;
        }
    }
    
    
/// 
    
public System.DateTime ModifiedDate {
        
get {
            
return this.modifiedDateField;
        }
        
set {
            
this.modifiedDateField = value;
        }
    }
}

 

nel secondo oltre che al codice (un tipo che eredita da System.Data.DataSet) avremo anche l'xsd corrispondente al typed dataset.

La classe generata ha un namespace in cui 'vivono' i tipi.

Di default il namespace è composto dal namespace di default dell'applicazione (impostato nelle properties del progetto nel tab "Application") con il nome impostato in fase di "add web reference" (che di default è localhost).

Tale default può essere modificato andando a impostare la proprietà "Custom Tool Namespace" sul file .map.

Nei casi più complessi può capitare che un tipo sia condiviso da più asmx magari in progetti diversi.

Per poter gestire al meglio questo scenario magari avremo messo i tipi condivisi in una o più library aggiunta come reference ai progetti.

Per il meccanismo sopra descritto ogni volta che aggiungiamo un servizio al nostro client viene generato un nuovo proxy.

Fino alla versione 2.0 del framework le possibili soluzioni (che mi vengono in mente) erano lo scordarsi l'add web reference (e farsi qualcosa di custom per portarsi a spasso i tipi) oppure impostare lo stesso namespace per i proxy generati e togliere a mano i tipi ridondanti (operazione che bisognava ripetere ogni volta che si faceva una "update web reference").

Dalla 2.0 è stato aggiunto il supporto per questi scenari tramite lo switch /sharetypes del wsdl.exe.

Specificando i servizi che si vogliono utilizzare con lo switch impostato verrà generato un unico proxy che mette a fattor comune i tipi uguali (the namespace, name, and wire signature must be identical).

C:\cf3 >wsdl /sharetypes http://localhost:1032/SimpleObject/Service1.asmx http://localhost:1056/SimpleObject2/Service2.asmx /namespace:MyClientNamespace.MyObjects
Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 2.0.50727.26]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 
'C:.cs'.

(che io sappia ndr)Il supporto è disponibile attualmente solo con wsdl.exe, per cui per poterlo utilizzare dal vs2005 è necessario un po' di manovre con gli add-in o con qualche macro.

L'idea è di ciclare, ogni volta che viene richiesta una "update web reference", su tutte le Web References.

Per ogni reference prendere l'url, aggiungerlo alla comand line di wsdl.exe, cancellare i files sottostanti (*.map, xsd, wsdl, disco) eseguire il comando e prendersi la classe generata.

 

Disclaimer:

questa soluzione non è stata testata in maniera 'esaustiva' (come peraltro si desume dal progetto di esempio).

Viste le lamentele sul formato del mio ultimo post (come potete vedere) mi sono munito di IMHO.

Qualcuno ha idea del perchè in fase di aggiunta immagini clickando sul tasto browse mi becco

---------------------------
Microsoft Internet Explorer
---------------------------
An error has occurred in this dialog.

Error: 73
Object doesn't support this property or method
---------------------------
OK  
---------------------------

Riferimenti:

http://blogs.thinktecture.com/cweyer/archive/2004/08/11/212843.aspx

powered by IMHO 1.2

Print | posted on martedì 18 ottobre 2005 00:57 | Filed Under [ .Net ]

Feedback

Gravatar

# 

28/04/2008 00:11 | Pingback/TrackBack
Gravatar

# hp special edition laptop

hp special edition laptop
03/05/2008 22:43 | hp special edition laptop
Gravatar

# crissy m

crissy m
03/05/2008 23:57 | crissy m
Gravatar

# haptonomists

haptonomists
04/05/2008 07:31 | haptonomists
Gravatar

# mtsu

mtsu
06/05/2008 00:30 | mtsu
Gravatar

# mv sam houston

mv sam houston
06/05/2008 03:09 | mv sam houston
Gravatar

# vince carter dunk pics

vince carter dunk pics
15/05/2008 02:39 | vince carter dunk pics
Gravatar

# alt chart

alt chart
15/05/2008 04:48 | alt chart
Gravatar

# neck coolers

neck coolers
17/05/2008 23:46 | neck coolers
Gravatar

# paul stephen habig vietnam veteran

paul stephen habig vietnam veteran
Gravatar

# mattel

mattel
23/05/2008 15:43 | mattel
Gravatar

# verde pinho

verde pinho
23/05/2008 16:57 | verde pinho
Gravatar

# scavanger hunt riddles

scavanger hunt riddles
23/05/2008 21:24 | scavanger hunt riddles
Gravatar

# connecticut

connecticut
28/05/2008 10:06 | connecticut
Gravatar

# cheju

cheju
29/05/2008 07:44 | cheju
Gravatar

# gamo big cat

gamo big cat
30/05/2008 14:29 | gamo big cat
Gravatar

# western decor

western decor
30/05/2008 17:32 | western decor
Gravatar

# what is an emotional healing

what is an emotional healing
30/05/2008 22:44 | what is an emotional healing
Gravatar

# jade plant

jade plant
31/05/2008 04:07 | jade plant
Gravatar

# pretty pink

pretty pink
31/05/2008 17:48 | pretty pink
Gravatar

# murray bicycle index

murray bicycle index
03/06/2008 22:20 | murray bicycle index
Gravatar

# secor roswell ga

secor roswell ga
04/06/2008 04:41 | secor roswell ga
Gravatar

# counseling dallas ga

counseling dallas ga
04/06/2008 06:28 | counseling dallas ga
Gravatar

# blick

blick
04/06/2008 16:44 | blick
Gravatar

# how to do pyrokinesis

how to do pyrokinesis
06/06/2008 17:16 | how to do pyrokinesis
Gravatar

# dot

dot
11/06/2008 02:54 | dot
Gravatar

# synaps

synaps
11/06/2008 10:07 | synaps
Gravatar

# symptoms of dry drowning

symptoms of dry drowning
12/06/2008 03:11 | symptoms of dry drowning
Gravatar

# hip hop saved my life lupe fiasco ft nikki jean lyrics

hip hop saved my life lupe fiasco ft nikki jean lyrics
Gravatar

# physiological basis of nonverbal cues

physiological basis of nonverbal cues
Gravatar

# how easy is it to fire someone

how easy is it to fire someone
12/06/2008 12:16 | how easy is it to fire someone
Gravatar

# brett glasby

brett glasby
12/06/2008 12:18 | brett glasby
Gravatar

# jewel nipple slip

jewel nipple slip
12/06/2008 18:40 | jewel nipple slip
Gravatar

# bible dictionary

bible dictionary
12/06/2008 19:56 | bible dictionary
Gravatar

# ryan and trista

ryan and trista
13/06/2008 02:53 | ryan and trista
Gravatar

# san francisco bart system

san francisco bart system
13/06/2008 03:44 | san francisco bart system
Gravatar

# dr richard saunders

dr richard saunders
13/06/2008 07:06 | dr richard saunders
Gravatar

# stoger

stoger
13/06/2008 12:59 | stoger
Gravatar

# definition of non ferrous tool

definition of non ferrous tool
27/06/2008 11:20 | definition of non ferrous tool
Gravatar

# descartes

descartes
27/06/2008 19:42 | descartes
Gravatar

# vinal tarps

vinal tarps
28/06/2008 12:04 | vinal tarps
Gravatar

# andy heffle

andy heffle
28/06/2008 19:33 | andy heffle
Gravatar

# speaker grills

speaker grills
29/06/2008 03:44 | speaker grills
Gravatar

# star grounding electric guitar

star grounding electric guitar
09/07/2008 15:21 | star grounding electric guitar
Gravatar

# hookers at the point

hookers at the point
09/07/2008 19:27 | hookers at the point
Gravatar

# leo man aries woman

leo man aries woman
09/07/2008 22:18 | leo man aries woman
Gravatar

# history motor vehicle stability

history motor vehicle stability
10/07/2008 06:47 | history motor vehicle stability
Gravatar

# superga

superga
10/07/2008 15:30 | superga
Gravatar

# largmann

largmann
15/07/2008 04:17 | largmann
Gravatar

# ano nuevo island

ano nuevo island
30/07/2008 21:11 | ano nuevo island
Gravatar

# uncle jimmy

uncle jimmy
01/08/2008 10:04 | uncle jimmy
Gravatar

# essential question for science matter unit

essential question for science matter unit
Gravatar

# central berkshire ambulance

central berkshire ambulance
01/08/2008 12:33 | central berkshire ambulance
Gravatar

# planter strip sprinklers

planter strip sprinklers
01/08/2008 13:13 | planter strip sprinklers
Gravatar

# avenue plus size

avenue plus size
01/08/2008 15:10 | avenue plus size
Gravatar

# ruby tuesday

ruby tuesday
01/08/2008 20:09 | ruby tuesday
Gravatar

# lake point grille springfield

lake point grille springfield
02/08/2008 03:03 | lake point grille springfield
Gravatar

# Can i shoot up klonopin.

Order klonopin without prescription. Klonopin addiction. Klonopin interactions. Klonopin lethal dose. Klonopin. Klonopin ocd. Shootin up klonopin. Klonopin depersonalization derealization.
Gravatar

# Klonopin sr prescribing information.

Buy klonopin online. Lethal dose klonopin. Klonopin.
24/10/2009 08:08 | Klonopin ocd.
Gravatar

# Klonopin withdrawl symptoms.

How can i kill myself with klonopin. Shootin up klonopin. Klonopin overnight delivery. Klonopin. Klonopin withdrawl symptoms.
24/10/2009 23:07 | Klonopin side effects.
Gravatar

# Klonopin order without rx.

Effects klonopin. Side effects of klonopin. Buy klonopin. Klonopin.
31/10/2009 14:58 | Klonopin.
Gravatar

# Lorazepam.

Longterm consequences of lorazepam use. Lorazepam 1 mg. Apo-lorazepam. Lorazepam order online consultation. Lorazepam 0.5mg - side effects. Diaepan to lorazepam conversion.
06/04/2010 03:43 | Lorazepam.
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET