Wie würde eine Person dazu übergehen, die Methode pro Methode einer API aus mehreren Klassen über WCF auszusetzen, ohne ein WCF-Projekt zu verwenden.Server-seitigen WCF-Dienst automatisch aus vorhandener API generieren
Zum Beispiel sagen sie, ich habe folgende
public interface RainfallMonitor
{
[ExposeToWeb]
void RecordRainfall(string county, float rainfallInches);
[ExposeToWeb]
float GetTotalRainfall(string county);
void ClearRainfall(string county);
}
Ich verstehe, konnte ich eine WCF-Dienst-Bibliothek wie gewohnt erstellen und nur einen WCF-Dienst namens „RainfallMonitor“ hinzufügen.
Was ich erforsche ist ... ist es möglich/vernünftig, irgendwie den gesamten WCF-bezogenen Code zur Kompilierzeit für eine gesamte API zu generieren, ohne die Klassen WCF-Dienste zu machen. Möglicherweise unter Verwendung von Attributen wie ExposeToWeb
, um anzugeben, welche Methoden über die Dienste verfügbar gemacht werden sollen. Die sich ergebende würde so funktionieren:
- Klassen in Projekt
RainfallAPI
- Compile und haben ein weiteres Projekt/dll
RainfallService
genannt wird automatisch aufgerufen erstellen/ändern.
Im Wesentlichen:
- Wenn dies möglich ist, was Ansatz könnte ich tatsächlich es umsetzen?
- Mit welchen schwerwiegenden Fallgruben könnte ich konfrontiert werden?
- Gibt es eine vorhandene Codebasis, die etwas Ähnliches tut ich in für Inspiration
Zur Klarstellung aussehen könnte: Ich bitte nicht über Auto-Erzeugung des Client-Stub, über die ich fragen Dienste auf der Serverseite zu schaffen.
Ich kann mir zwei mögliche Probleme vorstellen: 1) Methodenüberladungen können nicht 1: 1 auf mehrere OperationContracts abgebildet werden (Namen müssen unterschiedlich sein). 2) Alle in der API verwendeten komplexen Typen müssen serialisierbar sein (z. B. als [DataContracts]), sodass API-Autoren beachten müssen, dass ihre API als WCF-Services verfügbar gemacht wird. – nodots