2016-05-10 2 views
0

Ich habe ein Szenario, in dem in der Datenbank Methodennamen zur Laufzeit in einer bestimmten Reihenfolge aufgerufen werden müssen. Denkst du, Reflexion ist hier die beste Option?Ist es richtig, Reflektion zu verwenden, um eine Methode in der Webanwendung aufzurufen

DB-Tabelle enthält die Logik der Methoden, die an einem bestimmten Punkt aufgerufen werden sollen. Da es mehrere Klassen mit unterschiedlichen Methoden geben würde. Basierend auf der Abfrage erhalte ich den Klassennamen und den Methodennamen, der aufgerufen werden soll.

Ich bin wenig besorgt, Reflexion in Web-Anwendung am Frontend/.Net-Code hinter zu verwenden.

Ist es besser, diese Aufrufe in einen Hintergrunddienst/WCF-Dienst zu verschieben?

Ich bin auf der Suche nach verschiedenen Optionen, die verfügbar sind.

+2

Können Sie weitere Details angeben? (ein Beispiel mit 3-4 Methoden) Es ist nicht ganz klar, was Sie erreichen wollen? – Alexei

+1

Denke er meint, dass in der Datenbank Methodennamen als Strings gespeichert sind ... –

+1

Wie sonst würdest du das ohne Reflektion machen? –

Antwort

1

vom Telefon gesendet!

  1. Für den Fall, dass es sich um eine geschlossene Gruppe von Operationen handelt, verwenden Sie besser Enumeration und Switch-Case.

  2. vermeiden Nachdenken über alles, was jede Nähe zur Benutzereingabe muss Injection-Angriffe von einer Art

  3. zu vermeiden, wenn Sie können, Reflexionen ganz vermeiden ... wenn Sie heucheln:

    3.1. Überprüfen Sie die Datenbasiswerte.

    3.2. Ziehen Sie in Erwägung, Methoden in einer Sandbox auszuführen und nur bereinigte Ergebnisse zu erhalten.

P.S. vor allem wenn man über komplizierte Lösungen nachdenkt, gibt es eine einfachere Lösung um die Ecke. Vielleicht möchten Sie das Problem überprüfen, das Sie dazu gebracht hat, über diese Lösung nachzudenken.

2

Wenn die Absicht der Reflexion darin besteht, Ihre Anwendungsschicht für dynamische Methodenaufrufe flexibel zu halten, ist dies sinnvoll.

Beachten Sie, dass nicht alle nicht-funktionalen Anforderungen erfüllt werden können & einige architektonische Prinzipien widersprechen sich. In diesem Fall Leistung & Flexibilität sind zwei solche Extreme und mehr Flexibilität wird Auswirkungen auf die Leistung haben.

zu Ihrem Szenario Kommen wir zurück, Empfehlung auf sicher sein, weshalb Reflexion erforderlich ist, und, wenn es unbedingt sein muss (es nicht unnötig kompliziert zu machen), müssen Sie über andere Strategien wie Caching Reflexion Anrufungen denken, Cache-Response, usw., um sicherzustellen, dass die Auswirkungen auf die Leistung minimiert werden.

Verwandte Themen