Laden...

Plugins / DLLs in Xamarin.Forms nachladen

Erstellt von chr.pie vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.155 Views
C
chr.pie Themenstarter:in
8 Beiträge seit 2016
vor 7 Jahren
Plugins / DLLs in Xamarin.Forms nachladen

Hallo!
Ich hab eine nicht ganz leichte Frage (wie ich glaube). Ich habe eine .Net Anwendung, die Module als Plugins in Form von DLLs nachlädt.
Ich möchte jetzt die Anwendung unter Xamarin den Mobilen Kunden verfügbar machen. Aber wie binde ich die Plugins in die Xamarin App ein (Xamarin.Forms PCL)?

Geht das überhaupt?

Danke!

16.834 Beiträge seit 2008
vor 7 Jahren

So ganz, was Du willst, ist mir nicht klar.

Die App auf dem Handy kann keine DLLs runterladen und so die Features erweitern.
Diese muss bereits im vollen Umfang im Store hinterlegt sein; kann hier aber durchaus als einzelne DLLs aufgebaut sein.

Man versucht aber bei Apps so wenig DLLs die Möglich zu haben, da viele DLLs die Ladezeit der App negativ beeinflusst.
Das wirkt sich aber nicht auf die Entwicklungszeit aus, sondern man macht das mit einem Build-Task via Continuous Integration (zB ILmerge am Ende des Builds).

Oder geht es Dir nur um eine Plugin Architektur bei einer Xamarin App an für sich?

C
chr.pie Themenstarter:in
8 Beiträge seit 2016
vor 7 Jahren

Hallo! Erstmal herzlichen Dank für die Antwort!

Ich habe mir das folgendermaßen vorgestellt:

Ich habe ein Solution, wo die ganzen Xamarin Projekte als PCL drin sind, und zusätzlich dazu eine normale .net Windows Forms Anwendung. In der Windows Forms Anwendung sollen Plugins als DLLs nachgeladen werden.
Bei den Apps also iOS, Android und Windows Phone ist das nicht nötig. Dort kann ich die externen Module manuell hinzufügen. Sie können zur Laufzeit also schon integriert sein, weil ich ja das Veröffentlichen in den jeweiligen App Stores persönlich manage.

Jetzt sollen aber die externen Module, die von möglicherweise fremden Entwicklern stammen (und wie ich mir das vorstelle als DLLs), und deren Quellcode mir, wenn diese das nicht wollen nicht vorliegt, aber bei den jeweiligen Entwicklern vorgetestet werden. Dazu habe ich die Winforms Anwendung vorgesehen.

Zusätzlich sollen UIs in Form von XAML in die DLLs integriert sein, wenn möglich.

Ich bin noch Anfänger was Plugins angeht. Deswgen bin ich etwas ratlos, welcher Teil der Anwendung welches Projekttyp hat, damit ich das realisieren kann, was ich will.

Ich hatte schonmal ein MEF Plugin als Xamarin PCL in Form einer DLL erzeugt, war dann aber nicht in der Lage dies in der Winforms Anwendung einzubinden.

Die Frage, die sich mir Konkret stellt ist: Wenn meine Hostanwendung als Xamarin PCL mit dem Zusätzlichen Winforms Projekt vorhanden ist:

  • Welche Form soll das Plugin Projekt haben (Xamarin.Forms PCL, normale .Net PCL, usw usw?)
  • Wie wird die UI dann realisiert, sodass sie sowohl in der Winforms Anwendung als auch in den einzelnen App Projekten angezeigt wird?
  • Welche Form hat das Plugin Framework? MEF? MEF2? usw. (z.b. steht MEF nicht wirklich in einer Xamarin.Forms PCL zur verfügung)
  • Wenn ich von einem externen Entwickler einer DLL bekomme, die er mit der Winforms Anwendung getestet hat, wie integriere ich die dann in die App Projekte?

Also Fragen übder Fragen. Wäre für einen Leitfaden wirklich sehr, sehr dankbar!

Christoph

P
1.090 Beiträge seit 2011
vor 7 Jahren

Hi chr.pie,

mir ist auch noch nicht ganz so klar was du willst.

Wenn du möchtest, das andere Plugins für dich Programmieren können. Ist es am einfachsten ihnen ein Interfache (z.B: IMyAppPlugin) zu Verfügung zu stellen. Da kann dann z.B. ein IOC-Container die Abhängigkeiten auflösen.

Unterschiedliche UI Technologien zu Kombinierern (WindowsFormas / IOS) geht nicht. Hier werden die „Zuliferer“ Passende Technologien Verwenden müssen.

Trenne doch erst mal die Themen von einander Probiere schau dir auf der einen Seite mal an wie man Plugins realisiert und dann noch mal in Ruhe wie man Software für verschiedene Systeme Entwickelt. (Bei Google wirst du schon einiges, dazu finden. Am besten Englische Begriffe benutzen). Wenn du das machst werden sich schon viele Fragen von alleine klären.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

16.834 Beiträge seit 2008
vor 7 Jahren

Werf mal die PCLs aus Deinem Gedankengut.
Der Nachfolger und die Zukunft heisst .NET Standard Library.

Mit PCLs setzt Du aufs falsche Boot.

C
chr.pie Themenstarter:in
8 Beiträge seit 2016
vor 7 Jahren

OK. Aber ich muss mich doch irgendwie an das halten, was Xamarin mir bietet. Das ist doch das Mittel der Wahl im Prinzip Xamarin.Forms Portable Class Library.

Wie würdet ihr das ganze denn aufziehen um die Anfoderungem zu erfüllen?

5.658 Beiträge seit 2006
vor 7 Jahren

Hi chr.pie,

ich würde die Anforderungen überdenken. Welchen Sinn sollte es denn haben, eine Xamarin-Anwendung in einer WinForms-Anwendung zu testen?

Mach dich doch erstmal mit den Möglichkeiten und Grenzen der Technologien vertraut, die du einsetzen willst. Dann merkst du relativ schnell, daß WinForms keine XAML-Oberflächen darstellen kann, und umgekehrt.

Weeks of programming can save you hours of planning

16.834 Beiträge seit 2008
vor 7 Jahren

Auch Xamarin geht den .NET Standard Platform-Weg. Einfach mal ein wenig recherchieren 😉
.NET Standard Library Support for Xamarin

Es gibt aber derzeit kein UI-Framework für alle Plattformen, PC und Mobile.
Das ist immer noch ein offener Punkt in der .NET Welt.