Einige Dinge sind einfacher von Hand zu implementieren (Code), aber andere sind durch WF einfacher. Anscheinend kann mit WF (fast) jeder Algorithmus erstellt werden. (Theoretisch) Ich kann meine gesamte Logik in WF anwenden, aber es ist wahrscheinlich eine schlechte Idee, dies für alle Projekte zu tun.
In welchen Situationen ist es eine gute Idee, WF zu verwenden, und wann wird es schwieriger, als es sein muss? Was sind Vor- und Nachteile/Kosten von WF gegenüber der manuellen Kodierung?
Möglicherweise benötigen Sie WF nur, wenn eine der folgenden Bedingungen erfüllt ist:
Weitere Informationen finden Sie in dem Beitrag von Paul Andrew: Wofür wird Windows Workflow Foundation verwendet?
Bitte verwechseln Sie WF nicht mit visueller Programmierung jeglicher Art. Dies ist falsch und kann zu sehr schlechten Architektur- und Designentscheidungen führen.
Noch nie. Sie werden es wahrscheinlich bereuen:
Das einzige Mal, an das ich mir die Verwendung von WF vorstellen konnte, ist, wenn ich den Designer für einen Endbenutzer hosten wollte und wahrscheinlich auch nicht.
Vertrauen Sie mir, nichts wird so einfach, kraftvoll oder flexibel sein wie der Code, den Sie schreiben, um genau das zu tun, was Sie benötigen. Bleiben Sie weg von WF.
Natürlich ist dies nur meine Meinung, aber ich denke, es ist verdammt gut. :)
Der von WF generierte Code ist unangenehm. Der Wert, den WF bringt, liegt in der visuellen Darstellung des Systems, obwohl ich bisher noch nichts gesehen habe (6-7 Projekte bei der Arbeit mit WF, an denen ich beteiligt war) Ich habe kein einfacheres handcodiertes Projekt vorgezogen.
Wenn Sie die Persistenz- und Nachverfolgungsfunktionen (die meiner Meinung nach die Hauptmerkmale sind) nicht benötigen, sollten Sie im Allgemeinen keine Workflow Foundation verwenden.
Hier sind die Vor- und Nachteile von Workflow Foundation, die ich aus meiner Erfahrung gesammelt habe:
Vorteile
Nachteile
Der Hauptgrund, den ich für die Verwendung der Workflow-Grundlagen gefunden habe, ist, wie viel Sie in Bezug auf Nachverfolgung und Beständigkeit aus dem Stand bringen. Es ist sehr einfach, den Persistenzdienst in Betrieb zu nehmen, wodurch Zuverlässigkeit und Lastverteilung zwischen mehreren Instanzen und Hosts erreicht werden.
Auf der anderen Seite, genau wie bei Formular-Apps, sind die Codemuster, auf die Sie der Workflow-Designer drängt, schlecht. Sie können jedoch Probleme vermeiden, indem Sie keinen Code in den Workflow schreiben und die gesamte Arbeit an andere Klassen delegieren, die organisierter und einheitlicher getestet werden als der Workflow. Dann bekommen Sie den coolen visuellen Aspekt des Designers, ohne den Spaghetti-Code hinter sich zu lassen.
Persönlich bin ich nicht bei WF verkauft. Ihre Nützlichkeit war mir nicht so offensichtlich wie andere neue MS-Technologien wie WPF oder WCF.
Ich denke, WF wird in der Zukunft in Geschäftsanwendungen stark eingesetzt, aber ich habe nicht vor, es zu verwenden, weil es für meine Projekte nicht das richtige Werkzeug für den Job ist.
Das Unternehmen, für das ich zurzeit arbeite, hat eine Windows Workflow Foundation (WF) eingerichtet. Die Gründe, aus denen sie sich entschieden haben, waren, dass sich die Regeln häufig ändern würden und dies dazu führen würde, dass die verschiedenen DLLs usw. neu kompiliert werden mussten war, die Regeln in der DB zu platzieren und von dort aufzurufen. Auf diese Weise könnten sie die Regeln ändern und die DLLs usw. nicht neu kompilieren und umverteilen müssen.
Windows-Workflows verführen nichtcodierende IT-Manager, BAs und dergleichen wie ihr Vetter BizTalk, aber in der Praxis sind Unit-Tests, Debugging und Codeabdeckung nur drei der vielen Fallstricke. Sie können einige von ihnen überwinden, aber Sie müssen viel dafür investieren, während Sie mit reinem Code das nur bekommen. Wenn Sie wirklich eine langfristige Anforderung haben, benötigen Sie wahrscheinlich etwas anspruchsvolleres. Ich habe das Argument gehört, neue XAML-Dateien in der Produktion ablegen zu können, ohne DLLs neu zu kompilieren, aber ehrlich gesagt könnte die Zeit, die Workflows benötigen, besser dazu verwendet werden, die Continuous Integration so zu verbessern, dass kompilierte Bereitstellungen kein Problem darstellen.
Ich würde es in jeder Umgebung einsetzen, in der ich mit Workflow arbeiten muss. Wenn es jedoch in Verbindung mit K2 oder sogar SharePoint 2007 verwendet wird, ist die Leistungsfähigkeit der Plattform wirklich nützlich. Bei der Entwicklung von Geschäftsanwendungen mit BI-Spezialisten wird die Verwendung der Plattform empfohlen. Dies wäre normalerweise nur für die Rationalisierung und Verbesserung der Geschäftsprozesse relevant.
Für die Aufzeichnung WF wurde in Zusammenarbeit mit dem Entwicklungsteam von K2 entwickelt, und der neue K2 Blackpearl basiert auf WF, also MOSS 2007 und Workflow-Engines von WSS 3.0.
Wenn Sie nicht alle Codes manuell schreiben möchten, um die visuelle Schnittstelle, das Tracking und die Persistenz zu erhalten, ist es eine gute Wahl, für WF zu stimmen.
Ich verwende den Windows-Workflow seit Monaten, um benutzerdefinierte Aktivitäten zu entwickeln, und einen neu gehosteten Designer, den Nicht-Entwickler zum Erstellen von Workflows verwenden können. WF ist sehr mächtig, aber es ist nur so gut wie die benutzerdefinierten Aktivitäten, die von Entwicklern erstellt werden. Im Endeffekt muss ein Entwickler Workflows prüfen, die von Nicht-Entwicklern erstellt wurden, um zu testen und zu debuggen, aber ab dem Punkt, an dem sie Entwurfsworkflows erstellen können, ist das fantastisch.
In Fällen, in denen Prozesse lange ausgeführt werden WF, ist dies ein guter Tech-Stack, wenn Sie Prozesse dynamisch aktualisieren müssen Ihre Architektur sollte mit Versionierung eingerichtet sein, um die alte zu verwerfen und die neue zu verwenden.