2 Stimmen

Wie lässt sich eine Factory-Methode bei der Verwendung von WCF am besten erstellen?

Ich habe einen komplexen Abfragemechanismus entwickelt, für den ich eine Fabrik bereitstellen möchte, um Menschen mit gängigen Abfragemustern zu unterstützen. Meine Methoden werden alle über WCF als SOAP-Webdienst offengelegt. Wie kann ich am besten sicherstellen, dass meine Factory für alle Clients, die meinen Dienst nutzen möchten, einfach zu verwenden ist (da ich nicht erwarte, dass alle meine Kunden .net verwenden)?

Update: Ich möchte einige Factory-Methoden zu schreiben, um mit gemeinsamen Mustern gegen eine "Abfrage-System" zu unterstützen, die ich geschrieben habe. Ich habe derzeit mehrere OperationContracts von meinem Service und mehrere DataContracts ausgesetzt sowie ausgesetzt. Ich habe eine geistige Blockade in Bezug auf den besten Weg, etwas von einer Fabrik zu bauen, um meine benutzerdefinierte Abfrage-Objekte zurückgeben, um gemeinsame Muster zu unterstützen, die ich annehme, dass sie wünschen.

Ein konkretes Beispiel hierfür wäre eine Methode gibt Treffer in meiner Datenbank auf der Grundlage einer Suchanfrage Objekt, das mehrere Gruppen von mehreren Match-Konzepte hat, mein Code übersetzt all dies in LINQ Ausdruck Bäume, eine gemeinsame Gruppe in dieser Suchanfrage Objekt wäre, um die Ergebnisse nur Quellen der US-Ursprung zu begrenzen, die eigentlich eine Gruppe von etwa 20 Übereinstimmungen ist und verschieben kann, so dass anstelle von einem hart codierten Code-Beispiel, ich würde es vorziehen, nur die Gruppe Objekt auf der Grundlage der Daten über wo die Elemente stammen, die sie dann in ihre Suchanfrage Objekt verwenden können zurückgeben. Dies klingt ideal für eine Factory-Methode wie "GroupFactory.CreateGroupOfSomethingOrOther", aber was ist der beste Ort für mich, dies zu tun? Oder mache ich das Ganze nur in meiner Vorstellung viel komplizierter, als es sein sollte?

1voto

jezell Punkte 2522

Sie können Fabriken nur dann wirklich anbieten, wenn Sie Bibliotheken für jeden Ihrer Kunden in dessen Muttersprache bereitstellen. Anstelle einer Fabrik, die ein Gruppierungsobjekt zurückgibt, sollten Sie Filterobjekte hinzufügen, die eine weniger granulare Konfiguration erfordern.

Zum Beispiel anstelle von:

GetMatches(new GetMatchRequest() { 
        Filter = new FilterByState() { 
            "AZ", "CA", "OH", ... }});

Bedenken Sie:

GetMatches(new GetMatchRequest() { Filter = new FilterByCountry("USA") });

Alle gängigen Filter leiten sich von etwas wie FilterBase oder umsetzen IFilter . Auf der Serverseite rufen Sie etwas auf wie FilterBase.ConstructQueryObject() um die detaillierteren Objekte zurückzugeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X