Avatar billede tomjelen Nybegynder
27. februar 2004 - 14:10 Der er 5 kommentarer og
1 løsning

XML, webservice og database

Jeg er ved at lave et program som bare skal hente og sætte noget data i min database. Jeg ville gerne lave det så min GUI ikke er afhænigig af mine database metoder og omvendt, for at gøre det let at fjerne min asp.net gui, og skifte den ud med en anden hvis det ønskes.

Min tankegang er så at jeg gerne vil returnere min data fra databasen i XML format over en WebService, som jeg så benytter til at hente den data jeg skal bruge til at lave mine asp sider. Men jeg er i tvivl om hvad jeg skal bruge som retur type i WebServicen, som gør at modtageren ikke behøver at benytte c# for at få min data ud.

Min nuværende WebService ser sådan her ud:
  [WebMethod]
  public XmlDataDocument test()
  {
    DbControl dbc = DbControl.GetInstance();
    return dbc.getAllBugTypes();
  }

Det ser flot ud når jeg clicker invoke på metoden i IE, viser et fint XML dokument med den data jeg vil overfører, men når jeg så skriver en klasse i c# som benytter WebServicen, ser den retur typen som en XmlNode. Jeg regner med at både XmlNode og XmlDataDocument er nogle C# objekter som andre sprog man kunne forstille sig der benyttede WebServicen ikke fatter noget af.

Mit spørgsmål er så, hvilken retur type skal jeg benytte mig af hvis jeg gerne vil give mit XML resultat fra databasen i en form som alle kan benytte fra WebServicen.
Avatar billede donpedrodelavega Nybegynder
27. februar 2004 - 14:30 #1
en meget anvendt maade at goere det paa er at goere det gennem SOAP.

http://www.w3.org/TR/soap/
http://www.codeproject.com/soap/ (Godt sted at starte)

feks. er er her en artikel der umiddelbart omhandler det du spoerger om...
http://www.codeproject.com/useritems/WSfromJava.asp

/ DP
Avatar billede arne_v Ekspert
27. februar 2004 - 15:00 #2
Web Service bruger altid SOAP som transport, men det er ikke det samme
som XML som indhold.

Returner XML som en string, så kan alle programmerings sprog
hente det og parse det.

XmlDocument objekt property OuterXml indeholder en streng repræsentation.

Medmindre man har et meget specifikt ønske om at lave applet til MS JVM, så kan
det kraftigt frarrådes at skrive sin egen SOAP kode. Man kan bruge Apache Axis,
Sun JWSDP eller en anden pakke.
Avatar billede tomjelen Nybegynder
27. februar 2004 - 15:30 #3
Det var sådan noget jeg havde i tankerne, men kan ikke lige finde ud af hvordan jeg laver hele mit DataSet om til en enkelt XML-streng. Jeg har forsøgt med dette:

public string getAllBugTypes1()

{
  string result;
  DataSet ds = new DataSet("BugTypes");
  OleDbDataAdapter da = new OleDbDataAdapter("SELECT tblBugTypes.BugTypeDescription  FROM tblBugTypes", conn);

  da.Fill(ds,"BugType");
  XmlDocument doc = new XmlDocument();
  doc.LoadXml(ds.GetXml());

  result = doc.ToString();
  return result;
}

result kommer så til at indeholde noget lign "System.Xml.XmlDocument", hvilket nok ikke er helt optimalt, har du et forslag til hvordan det gøres?
Avatar billede arne_v Ekspert
27. februar 2004 - 15:36 #4
ds.GetXml() returnerer en string !
Avatar billede arne_v Ekspert
27. februar 2004 - 15:37 #5
public string getAllBugTypes1()

{
  DataSet ds = new DataSet("BugTypes");
  OleDbDataAdapter da = new OleDbDataAdapter("SELECT tblBugTypes.BugTypeDescription  FROM tblBugTypes", conn);
  da.Fill(ds,"BugType");
  return ds.GetXml();
}
Avatar billede tomjelen Nybegynder
27. februar 2004 - 15:40 #6
Oops, tak igen.. sender nogle flere af mine points din vej.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester