Laden...

WCF Webservice erstellen mit dynamischer Struktur

Erstellt von Pedro_15 vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.743 Views
P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 11 Jahren
WCF Webservice erstellen mit dynamischer Struktur

Hallo,

ich würde gerne einen neuen Webservice programmieren der dynamisch aus einer Datenbank seine Definition bezieht.

Zum Beispiel (nur einfaches Beispiel):
Tabelle webservice
ID; Name
1; Summe
2; Produkt

Tabelle webservice_param
ID;Feldname;Datentyp
1;Feld1;int
1;Feld2;int
1;Feld3;int
2;Feld1;float

Das wsdl muss also dynamisch erstellt werden.

Geht das?

Danke für die Hilfe!

Pedro

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo Pedro_15,

geht schon, ist aber umständlich und fehleranfällig da Code zur Laufzeit erzeugt und kompiliert werden muss (z.B. per CodeDOM od. du erstellt eine *.cs-Datei zur Laufzeit und kompilierst diese dann direkt mit csc.exe).

So extrem dynamisch wird es aber wohl kaum Sinn machen, denn es soll ja irgendwann auch ein Client auf den Service zugreifen können und diese müsste dann auch dynamisch erstellt werden.

Was ist das übergeordnete Vorhaben? Vllt. findet sich eine besser Lösung dafür.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 11 Jahren

Ich habe ein Entwicklungsframework mit dem man Formulare und Funktionen erstellt werden. Der Webservice soll Formulare bedienen und Feldinhalte eintragen und Ergebnisse zurückgeben.

Im Framework wird also ein neuer Webservice definiert, welches Formular mit welchen Feldern und welchen Funktionen aufgerufen werden.

Zur Zeit gibt schon einen .Net Webservice der nur aus zwei Felder besteht.

  1. Name des Webservice (String)
  2. Prozessdaten (XML Type) - die Speziellen Daten des Webservice (Feld1, Feld2)

So funktioniert es, aber Nachteil ist, dass der User nicht weiss welche Webservice überhaupt angeboten werden und auch nicht welche Werte erwartet werden.
Und es kann aus dem WSDL kein Client automatisch erstellt werden, was die Kunden sehr stört.
Also soll es jetzt anders umgesetzt werden.

Man müsste also das WSDL irgendwie automatisch zusammenbauen oder er müsste es aus der Datenbank ziehen.

Aber keine Ahnung wie das gehen soll.

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo Pedro_15,

ich würde mich nicht auf das WSDL sondern auf die Service-Implementierung stützen. WCF erzeugt das WSDL glücklicherweise dann von selbst.

Die Methoden-Signatur des Service zu erstellen ist noch relativ einfach, aber erstellt den Rumpf der Methode? Am Beispiel aus deinem ersten Post: Wer bzw. woher soll die Implementierung von Summe und Produkt kommen? Sollte das ein Programmierer machen, so kann dieser den Service normal erstellen und es ist nichts dynamischen nötig. Geht das über einen visuellen Designer, so ist ein Code-Generator nötig (siehe oben - CodeDOM, etc).

Mach dir eine Plug-In-fähige Service-Hostanwendung und somit kannst du in diesem die Services einfach registrieren und veröffentlichen. Dazu ist es im Grunde nur nötig den Type des Services, die Basis-Adresse und das Binding bekannt zu machen um daraus die jeweiligen SeviceHost-Instanzen zu erstellen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 11 Jahren

Danke, hast du zum letzten Punkt einige Informationsseiten oder Bücher die du empfehlen kannst.

Wer bzw. woher soll die Implementierung von Summe und Produkt kommen?

Es gibt eine Interface Programmierung die immer genauso vom Webservice aufgerufen wird. Was passiert steht in der Datenbank und wird dynamisch von der internen Webserviceprogrammierung aufgerufen. Das ist nicht das Problem.

Ich muss nur irgenwie hinbekommen, dass der Aufrufer weiss welche Methoden und Parameter intern aufgerufen werden können.

Danke

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo Pedro_15,

zum letzten Punkt findet sich eigentlich alles in :rtfm: unten den Stichworten "ServiceHost" und "Hosting" in Zusammenhang mit WCF.

Wenn das mit der Service-Implementierung kein Problem ist, so verstehe ich nicht warum das (automatische) Generieren der WSDL ein Problem sein soll? Od. denke ich jetzt zu kompliziert, denn

Ich muss nur irgenwie hinbekommen, dass der Aufrufer weiss welche Methoden und Parameter intern aufgerufen werden können. liese sich auch so umsetzen, dass die Infos aus der Datenbank per Webseite od. eigenen Webservice (unabhängig von den Webservices die angeboten werden) veröffentlicht werden.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 11 Jahren

Wenn das mit der Service-Implementierung kein Problem ist, so verstehe ich nicht warum das (automatische) Generieren der WSDL ein Problem sein soll?

Ich denke nicht das es ein Problem ist, sonder ich muss mich erstmal in WCF einarbeiten, dann wird es schon funktionieren, wenn du es sagst.

Danke!

Pedro