27. februar 2004 - 14:10Der 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.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
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.
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?
{ DataSet ds = new DataSet("BugTypes"); OleDbDataAdapter da = new OleDbDataAdapter("SELECT tblBugTypes.BugTypeDescription FROM tblBugTypes", conn); da.Fill(ds,"BugType"); return ds.GetXml(); }
Oops, tak igen.. sender nogle flere af mine points din vej.
Synes godt om
Ny brugerNybegynder
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.