Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Web Api Plugin Controller soll aufwärtskompatibel sein
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

Web Api Plugin Controller soll aufwärtskompatibel sein

beantworten | zitieren | melden

Guten Morgen,

ich habe eine ASP.NET Web Api Lösung die z.B. mit der Assembly Version 1.0 markiert wurde. Für diese Basis Dll wurden nun Plugin Controller entwickelt. Die Plugins verweisen auf die Basis Dll. Wenn ich nun eine neue Version 2.0 der Web Api veröffentliche, wie kann ich dann sicher stellen, dass die alten Plugins weiterhin funktionieren?

Eine Neukompilierung aller Plugins kommt nicht in Frage.

Gruß
wax
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

Warum kennt eine PluginDLL die ApplikationsDLL? Oder was meinst Du mit Basis DLL?
Und ist das Plugin System selbst gebastelt oder zB MEF?
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

beantworten | zitieren | melden

Die Plugin Controller erben von einem Basis-Controller und dieser ist in einer "Basis-Dll" definiert.
Wenn nun diese Basis-Dll-Version aus z.B. firmenpolitischen Gründen erhöht wird, was geschieht dann mit abhängigen Assemblies?

Mir fallen zwei Lösungen spontan ein:
1. Die Plugin-Hersteller zwingen neu zu kompilieren.
2. Den Plugins sagen, dass sie nicht eine spezifische Basis-Dll referenzieren sollen.

Wie macht man so etwas im .NET Bereich?

Gruß
wax

edit: Das Plugin System wurde selbst entwickelt.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

Mir ist immer noch nicht klar, was diese BasisDLL sein soll. Ist das nachher die WebAPI DLL oder ist das ein drittes Projekt?
Wenn ein Plugin ein WebAPI kennt, dann ist das ein Architekturfehler.

Eine Änderung der AssemblyVersion löst immer ein Konflikt aus, sodass referenzierte DLLs neu kompiliert werden müssen.
Deswegen gibt es Pluginsysteme wie MEF, die sowas einem abnehmen. Wenn das euer Pluginsystem nicht kann, dann ist das meines Erachtens ein Designfehler.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

beantworten | zitieren | melden

Hi,

ja die BasisDLL ist meine WebAPI. In dieser sind "Haupt" Controller der Anwendung implementiert und eben auch ein PlugInBaseController.

Von diesem PlugInBaseController leiten PlugIn-Controller ab.

Anscheinend war das nicht die beste Idee....

Gruß
wax
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

Jop, war keine gute Idee.
Das wäre eine Circular Reference - und das geht in .NET nicht.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers