Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema Web Service Datos y Esquema...

Estas en el tema de Problema Web Service Datos y Esquema... en el foro de .NET en Foros del Web. Hola amigos, sabrá alguien como puedo devolver los datos y el esquema de un solo golpe. Es decir, en mi web service: Regrese los datos ...
  #1 (permalink)  
Antiguo 01/04/2005, 15:05
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Problema Web Service Datos y Esquema...

Hola amigos, sabrá alguien como puedo devolver los datos y el esquema de un solo golpe.

Es decir, en mi web service: Regrese los datos y el XML en un solo XML (XML schema )

Alguien sabrá hacer esto?

ó forzosamente necesito regresar el esquema y los datos por separado?

Gracias!
  #2 (permalink)  
Antiguo 01/04/2005, 17:11
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Porque no mejor regresas un dataset... le puedes guardar los datos y ademas incluirle el esquema...

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 01/04/2005, 17:44
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
RootK, ya intente devolver, pero me sale un extraño error de que los namespaces son iguales..

Tengo una funcion que regresa un Dataset (Data_Cuentas) el cual es un dataset typeado, es decir, construyo el dataset agregandole tablas y campos...

Y regreso otro Dataset (Data_Facturas) tipeado tambien, No me marka error al compilar, pero al tratar de acceder al web servides me sale eso de "Namespace duplicado" y no entiendo por que, ya les pregunté a mis colegas programadores que podría ser pero tampoco supieron...

Tengo teoria,.. Al crear el proxy crea un xsd (Newdataset.xsd), pero como yo uso 2 ó más datasets typeados al tratar de mapearse en ese xsd no se puede y se conflictea...

Espero q alguien sepa... con respecto a mi pregunta, rootK, como le harías tu para regresar XML puro con el esquema incluido??

Ya intente tratar de pasar un parametro por referencia, pero los web services no lo soportan (byRef)

Espero sea de ayuda... ó nose se si a alguien le haya pasao.. como lo resolvieron???

Gracias!! (RootK, amigo. espero tu respuesta ;))
  #4 (permalink)  
Antiguo 01/04/2005, 18:05
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Mm... todavía no entiendo como tienes exactamente tu estructura.. pero lo que yo hago en esos casos es hacer 3 cosas..

1.- crear una clase que herede de un dataset y voy creando de forma dinámica mis tablas,relaciones y todo lo que necesite

2.- tener en otra parte mi esquema (xsd)

y finalmente

3.- tener mi XML haciendo referencia a su esquema:
por ejemplo:

<?xml version="1.0" standalone="yes"?>
<NameSpacePrincipal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/miarchivo.xsd">

Verifica bien que es lo que quieres que tu WS regrese.., puedes respetar algo del SOA para hacer una mejor abstracción de tus necesidades.

Espero haber sido claro..

Salu2
  #5 (permalink)  
Antiguo 01/04/2005, 23:35
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
OK, coincido con el paso 1, igual creo mis tablas, campos y relaciones dinamicamente, con respecto al paso 2 y 3 haré pruebas, al rato te cuento como me fué

Asias :D
  #6 (permalink)  
Antiguo 02/04/2005, 00:24
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
En efecto rootK, tenias razon...

Sabes.. tenia una clase que heredaba de Dataset..

Public Class Data_Cuentas
Inherits DataSet

Public Const TABLA_CUENTAS as string = "Cuentas"
Public Const FIELD_ID as string = "IDCuentas"
Public Const FIELD_IDMONEDA as string = "IDMoneda"
.....
.....
.....
Public Sub New()
MyBase.New()
BuildTables()
End Sub

Private Sub BuildTables()
...
...
...
End Sub
End Class

Bueno, el caso es que ya no usaremos DataSet tipeados en los webServices (Muchas broncas) ahora créo que es mejor usar xsd's para los datos...

Resumiendo: usando xsd ya tengo el esquema y los datos..

Muchas gracias man, he visto la luz (y eso que no soy cerrado).. nosé como antes no se me ocurrio, pero en fin, todos los dias se aprenden técnicas diferentes

Gracias, te devo una ;)
  #7 (permalink)  
Antiguo 02/04/2005, 00:30
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Cita:
Iniciado por RootK
<?xml version="1.0" standalone="yes"?>
<NameSpacePrincipal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/miarchivo.xsd">

Salu2
Por cierto, no fué necesario referenciar manualmente, el xsd se expone publicamente en el web service (como si fuese <WebMethod()> ) lo que ayuda bastante al recibir los datos en el cliente de WS...

De nuez, graciass
  #8 (permalink)  
Antiguo 02/04/2005, 08:48
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
el xsd se expone publicamente en el web service (como si fuese <WebMethod()> ) l
Que bueno que ya pudiste hacerlo... , en cuanto al esquema de forma natural se expone en el webservice porque ya lo estas definiendo en tu clase, por lo cual ya sabe lo que contiene, por eso siempre es bueno saber que es lo que pretende hacer uno y que es lo que va a viajar para ver que es lo mas conveniente hacer...

Salu2
  #9 (permalink)  
Antiguo 02/04/2005, 14:24
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Option Strict On
Option Explicit On

Imports System
Imports System.Data
Imports System.Runtime.Serialization

Namespace Componentes.Common
<System.ComponentModel.DesignerCategory("Code"), SerializableAttribute()> _
Public Class Data_Cargos
Inherits Data_Common

Public Const TABLE_Cargos As String = "Cargos"
Public Const FIELD_IDCargo As String = "IdCargo"
Public Const FIELD_IDCuenta As String = "IdCuenta"
Public Const FIELD_IdConcepto As String = "IdConcepto"
Public Const FIELD_Importe As String = "Importe"
Public Const FIELD_TipoCambio As String = "TipoCambio"
Public Const FIELD_FechaCaptura As String = "FechaCaptura"
Public Const FIELD_Descuento As String = "Descuento"
Public Const FIELD_Observaciones As String = "Observaciones"
Public Const FIELD_Referencia As String = "ReferenciaRest"
Public Const FIELD_Fecha As String = "Fecha"
Public Const FIELD_Estado As String = "Estado"
Public Const FIELD_Cantidad As String = "Cantidad"
Public Const FIELD_IdUsuario As String = "IdUsuario"

'//Tabla Cargos Impuestos
Public Const TABLE_CargosImpuestos As String = "CargosImpuestos"
Public Const FIELD_IdImpuesto As String = "IdImpuesto"
Public Const FIELD_Porcentaje As String = "Porcentaje"

Public Const Pk_RelImpuestos As String = "RelImpuestos"

Public Const INVALID_NAME_NOT_UNIQUE As String = "Nombre Existente"
Public Const INVALID_FIELD As String = "Invalid Field"
Public Const INVALID_FIELDS As String = "Invalid Fields"
Public Const INVALID_NOTEXIST As String = "Not exist "

Public Sub New()
MyBase.New()
InitClass()
MyClass.BuildDataTables()
End Sub

Private Sub InitClass()
Me.DataSetName = "Data_Cargos"
Me.Prefix = ""
Me.Namespace = "http://tempuri.org/Data_Cargos.xsd"
Me.Locale = New System.Globalization.CultureInfo("en-US")
Me.CaseSensitive = False
Me.EnforceConstraints = True
End Sub

Private Sub BuildDataTables()
Dim table As DataTable = New DataTable(Me.TABLE_Cargos)
With table.Columns
With .Add(FIELD_IDCargo, GetType(System.Int64))
.AutoIncrement = True
.Unique = False
End With
.Add(FIELD_IDCuenta, GetType(System.Int32))
.Add(FIELD_IdConcepto, GetType(System.Int32))
.Add(FIELD_Importe, GetType(System.Single))
.Add(FIELD_Descuento, GetType(System.Single))
.Add(FIELD_Observaciones, GetType(System.String))
.Add(FIELD_TipoCambio, GetType(System.Single))
.Add(FIELD_Referencia, GetType(System.String))
.Add(FIELD_Estado, GetType(System.Int16))
.Add(FIELD_Cantidad, GetType(System.Int16))
.Add(FIELD_IdUsuario, GetType(System.Int32))
.Add(FIELD_Fecha, GetType(System.DateTime))
.Add(FIELD_FechaCaptura, GetType(System.DateTime))
End With
Me.Tables.Add(table)

table = New DataTable(Me.TABLE_CargosImpuestos)
With table.Columns
.Add(FIELD_IDCargo, GetType(System.Int64))
.Add(FIELD_IdImpuesto, GetType(System.Int64))
.Add(FIELD_Porcentaje, GetType(System.Double))
End With
Me.Tables.Add(table)

Me.Relations.Add(New DataRelation(Me.Pk_RelImpuestos, Me.Tables(Me.TABLE_Cargos).Columns(Me.FIELD_IDCarg o), Me.Tables(Me.TABLE_CargosImpuestos).Columns(Me.FIE LD_IDCargo)))
End Sub
End Class

End Namespace

Última edición por Stream; 04/04/2005 a las 08:30
  #10 (permalink)  
Antiguo 02/04/2005, 14:30
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Ya funciono!!, con solo agregar la rutina InitClass se mapea el nombre del dataset y asi genera el xsd por separado...

me costó un buen rato arreglar esto (por que ya estabamos usando xsd's, y zaz.. se me ocurrio copiar ese codigo que se genera al crear un xsd (.vb) ya ya funciona!!

Ahora si regreso cualquier tipo de dataset tipeado... Muchisimas gracias por la ayuda...

PD: Esto devería estar en las faq's como "Web services, regresar dataset's tipeados usando datasets dinamicos"

Asias por todo..!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:44.