Hallo,
zunächst will ich meine Situation erklären:
Ich habe eine MS SQL Datenbank 2005, welche im Internet gehostet wird.
Ich habe mir nun ein Windows Forms-Client erstellt werlcher auf diese SQL Datenbank zugreifen soll, da diese Datenbank aber durch externe Zugriffe geschützt ist muss ich wohl Web Services benutzen. Meine frage ist nun wie ich so eine Verbindung durch ein Webservice hinkriege und was muss ich da machen?
Du findest bei MS diverse Webcasts zum Thema Webservices und wie man mehrschichtige Anwendungen erstellt. Auch Beispielanwendungen solltest du finden. Letztlich läuft das Ganze darauf hinaus, dass du einen sogenannten ApplicationServer bastelt, der die gesamte Business-Logik enthält und den Client via WebServices Funktionen wie GetCustomer() bereitstellt. Komme besser gar nicht erst auf die Idee, DataSets via Webservices durch die Gegend zu schaufeln.
Warum, steht hier:
http://www.theserverside.net/tt/articles/showarticle.tss?id=Top5WSMistakes
Das heisst nicht, dass es nicht möglich wäre, aber der Sinn von Webservices wird damit ad absurdum geführt. Wenn du aber die WS wirklich nur brauchst um eine Firewall zu überwinden, dann würde ich
dem Kunden klar machen, dass die Weigerung ihres SysAdmins, deiner Anwendung direkten Zugang zum DB-Server zu gewähren, ihm Mehrkosten in fünfstelliger Höhe beschert (soviel wird dein AppServer sicher kosten wenn du es per Hand machst). Vermutlich ist dieser Ansatz aber sinnlos.
eventuell doch DataSets schaufeln, mit dem Bewußtsein, dass diese WS ausschließlich mit .NET funzen
Für Lösung 2 nach einem Codegenerator zu suchen, der dir den gesamten AppServer aus deinen DB-Anfragen generiert. Sollte es geben, auch wenn ich dir gerade keinen nennen kann.
Das es nur mit .Net funktioniert ist ok.
Aber ich habe noch keine Vorstellung wie ich soetwas realisiere.
Auf codeprojekt.com habe ich auch kein passendes Beispiel gefunden.
MS, nicht Codeprojekt. Google doch mal nach WebCast in Kombination mit WebService. Und nimm dir ein paar Stunden Zeit für die Vorträge. Ist kein Thema, das man mal eben mit 10 Zeilen Code vorführt.
Ich vergaß: Mit MS SQL Server 2005 geht das ganz einfach und ohne Coding. Guckst du hier:
http://www.devx.com/dbzone/Article/28577
http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032296051&EventCategory=3&culture=de-CH&CountryCode=CH
Das Problem jedoch ist, dass ich keinen Endpunkt auf der Datenbank erstellen kann, da mir dafür die Rechte fehlen und diese Rechte zu bekommen nicht möglich ist.
Aber danke für Beiträge, wenn auch mein Problem nicht gelöst ist, hab ich was gelernt 🙂
Eine Beispielmethode:
public int UpdateRow(MyDataRow pRow)
{
MyTableAdapter aAdapter = new MyTableAdapter();
return aAdapter.Update(pRow);
}
Ich kann den Webservice nicht erstellen weil der mir sagt: "MyDataRow kann nicht serialisiert werden, weil dafür kein parameterloser Konstruktor verfügbar ist".
Warum muss denn hier etwas serialisierbar sein?
Und wie kann ich dieses Problem umgehen, oder muss ich für die Klasse MyDataRow zwangsweise einen sinnlosen parameterloser Konstruktor definieren?
eine DataRow ist ein spezifischer Dot.net Typ, der nicht die Serialisierung unterstützt.
Wenn du es richtig machen möchtest dann musst du dir Business Objekt erzeugen und die übergeben.
Das ist auch das was im den Serverside.net Artikel von Svenson steht.
lg
LG.
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
Was ist ein Business Object 🤔
Muss ich mich auf Serverside.net regestrieren um den Artikel lesen zu können?
Ich nicht. Nach dem anklicken von dem Link öffnet er die Seite mit dem Content.
Bezüglich den Buisness Objekten schau dir mal Contract Frist an
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein