Frage

Es gibt eine diskutierte Diskussion, die bei der Programmierung für SharePoint für serallale Jahre auftritt.

In Visual Studio können Sie eine SharePoint-Lösung hinzufügen, die in eine .wsp-Datei umgewandelt wird, um bereitzustellen. Diese .wsp-Datei enthält alle erforderlichen Montagedateien.

Wie behandelt ihr die Codebehind-Dateien für: Ereignisempfänger, Feature-Empfänger, Aspx-Seite?

Platzieren Sie diese .cs-Datei in Ihren SharePoint-Ordner? (Auf diese Weise müssen Sie eine .dll von Ihnen sharePoint Project Aswell bereitstellen)

oder verschieben Sie die gesamte Code-Logik auf ein (oder mehr) verschiedene Projekte (S) (Klassenbibliotheken)?

was Sie zum Beispiel im zweiten Beispiel tun:

    .
  • Klicken Sie mit der rechten Maustaste, fügen Sie einen neuen Artikel hinzu, Event-Empfänger
  • Verschieben Sie die .cs-Datei in ein anderes Projekt
  • Ändern Sie die Montageinformationen in der Elemente.xml-Datei

    Im ersten Beispiel verschieben wir diese Dateien nicht, halten sie einfach, wie VS2010 sie fügt.

    Ich sage nicht, auf welche Weise ich bevorzuge, ich möchte nur eine Menge der Eingabe erhalten. Sagen Sie nicht einfach "Option 2 ist schlecht." Ich würde wirklich gerne wissen, warum und warum nicht!

    danke

    edit:

    Meine Frage hier hat nichts mit Erweiterungen usw. zu tun usw.

    Ich spreche davon, dass Ihre SharePoint-Lösung keine Ascs-Datei enthält. Auf diese Weise muss für diese Lösung keine Montage im GAC sein.

    Beispiel: Ich habe customer.sps.intranet.olution (= die Lösung zum Generieren von WSP, also ein leeres SharePoint-Projektelement.

    Wenn ich einfach eine Funktion und einen Merkmalsempfänger hinzufüge, wird eine .cs-Datei generiert und (nach der Bereitstellung) eine customer.sps.intranet.solution.dll-Datei in den Global Assembly Cache platziert.

    Das wollen einige Leute nicht haben !!! (Ich verstehe nicht, warum, deshalb frage ich einige Meinungen).

    Um dies zu lösen, erstellen sie ein Projekt in dieser Lösung mit dem Namen: "customer.sps.intranet.logic" Diese Lösung enthält alle Feature-EmpfängercodeBind-Dateien.

    Dies bedeutet, dass wir die Datei Feature Template.xml bearbeiten müssen, um die Empfängerklasse im Projekt "Logic" zu verwenden. Auf diese Weise halten wir die "customer.sps.intranet.solution" sauber und wir verwenden es nur für die Verpackung. Es wird also keine Versammlung geben, die auf dem GAC mit dem Namen "customer.sps.intranet.solution.dll" eingesetzt wird

War es hilfreich?

Lösung

Aaah, die ewige Frage von Lösungen und DLLs. :-) Warum aufgeteilt, warum nicht, und wann? Ich arbeite nicht atm, ich bin im Urlaub, aber als du mich gebeten hast, einen Blick darauf zu werfen, werde ich nur ein paar Leute zusammenfassen und meine Nehmen Sie es an. Meine Antwort basiert also auf persönlicher Erfahrung und Ansicht. (sorry stackkexhange)

x nicht aufteilen "Code hinter" und ui führt zu einem Code, der schwer zu pflegen ist. Etwas, was ich auf verschiedenen Projekten sah, ist, dass unerfahrene Entwickler nicht gut mit "Code hinter" (C # -Kläden neben XML / ASPX) nicht gut fertig werden, sie neigen dazu, mehr Logik in den Code zu schreiben, da sie direkten Zugang zur UI haben. Bei einem bestimmten Projekt sah ich eine "neue" Seite von 1500 Zeilen (was bereits riesig ist) und die Seite "Bearbeiten" war im Wesentlichen eine Kopie und einfügen der neuen Seite. Sicher ist dies "schlechte Programmierung", es ist nicht innewohnt, Code hinter den Artefakten hinter sich zu setzen. Aber schlechte Gewohnheiten sind schwer zu änderend und dieses Modell der Arbeit kann dazu beitragen, die Dinge schlechter zu machen. In diesem Fall wäre die CS-Klasse zunächst als Kontrolle und eine Art ererbtere Klasse für die Bearbeitungsklasse mit einer Art ererbteren Klasse gewesen, um aufrechtzuerhalten. Sobald er erstellt hat, könnten Sie Ihre ASPS-Seiten von diesen Klassen erben.

x nicht aufteilen "Code hinter" und ui führt zu Unterricht mit viel zu viel Logik. Eine andere Sache in diesem Projekt ist, dass sowohl die neue Seite als auch die Edit-Seite direkte Verbindungen zu externen SQL-Datenbanken hatten. Sie verwendeten direkte SQL-Verbindungen, die einen Overhead in Code und Wartung erstellt haben. Ein geschichteter Ansatz hätte stark geholfen.

x Eine geschichtete Anwendung benötigt separate Baugruppen. Nun, die Schichtung ist gut! Benötigen Sie eine separate Montage dafür? Nicht unbedingt. Sie können Ihre Logik, Datenangriffe-Ebene usw. in separaten Ordnern / -Namespaces in Ihrer Baugruppe gruppieren. Das sind auch Schichten. "Aber warum sollte ich sie aufteilen?" Es neigt dazu, gute Praxis zu sein. Warum? Nun, Sie vermeiden den versehentlichen Gebrauch von tiefererer Logik (z. B. SQL-Verbindungen), da diese Logik nur in einer DA-Ebene referenziert wird. Ein weiterer Vorteil ist, dass es möglicherweise einfacher ist, die oberen Schichten durch eine andere Schicht zu ersetzen. Sagen Sie eine andere Benutzeroberfläche oder eine mobile Benutzeroberfläche. Sie können es noch weiter drängen und untere Schichten generell generell herstellen, sodass Sie sie später erneut verwenden können. So können NHibernate- und EF-Frameworks erstellt werden.

x "Das ist schön, aber das ist nur die ASP.NET-Entwicklung." Recht, aber die gleichen Prinzipien und Ideen können verwendet werden, wenn SharePoint-Artefakte wie Empfänger entwickelt werden. Warum arbeiten Sie nicht auf den Weg zu den generischen Empfängern, die mit den Eigenschaften von Funktionen oder Ordnereigenschaften parametriert werden können? Die Wiederverwendung der Logik führt hauptsächlich zu stabileren Lösungen.

X-Trennen fördert (Einheit) -Tests. Sobald Sie mit dem Trennen und Erstellen einer generischen Klasse beginnen, ist es keine lange Strecke mehr, um Schnittstellen und Modelle zu verwenden. Dies bedeutet, dass die Einheitsprüfung einfacher implementierender ist (obwohl wir tatsächlich TDD verwenden sollten), wie wir leichter verspottet werden können. Schauen Sie sich den MVC-Framework an und wie die Dinge hübsch getrennt sind. Dies funktioniert auch für SharePoint.

Um meine 2C (und eine Änderung ;-)) zusammenzufassen, können Sie Code mit direkter FIDE zu Ihrem Artefakt verwenden, aber ich bevorzuge nicht. Ich gehe eher zur Wiederverwendung, den generischen und überprüfbaren Code, als automatische Übereinstimmungsempfänger und -code an Artefakte zu haben (obwohl Sie die Funktionsvorlage XML nicht ändern müssen, da Sie einfach den Feature-Empfänger in den Eigenschaften hinzufügen) und Leichtigkeit zu lokalisieren (ich benutze den sofortigen GO von VS2010), aber am Ende geht es darum, was Sie und Ihr Projekt bevorzugen. : -)

Andere Tipps

eigentlich persönlich ist nie eine Lösung angetroffen, bei der Dateien aus einer SharePoint-Lösung außerhalb eines Projekts verschoben wurden, außer vielleicht für Situationen, in denen Sie wiederverwendbare Teile identifiziert haben: z.B. Erweiterungsmethoden, Base Event-Handlercode. Es gibt auch einen Grund, es nicht herauszuziehen, z. Normalerweise verwendet VS 2010 die GUID, mit der die Klassen für das interne Arbeiten dekoriert werden, an der es den Handler verbindet, sodass der Handler verbindet wird, sodass sie Abhängigkeiten richtig aufbauen können. Auch alle Binärdateien sind sowieso eingebaut, daher ist Code-neben (nicht mehr Code-hinter in SP2010) ist bereits eingebaut. Neben der Registrierung von SafeControls (Webteile, benutzerdefinierte Steuerungen usw.) würden nicht ordnungsgemäß als Visual Studio registriert sein, da das Visual Studio externe Baugruppen in Ihr Paket enthalten kann, aber er würde diese Baugruppen nicht unbedingt für den eigentlichen Code erkunden - Sie müssen das alles tun manuell - schlecht für die Produktivität.

Dies sind anfängliche Reflexionen, könnten mit noch mehr zurückkommen, aber die untere Regel: Sie wiederverwendet diese Stücke - lassen Sie sie besser, woher der VS vorschlägt. Planen Sie eher, welche Art von Funktionalität Sie bereitstellen, welche Abhängigkeiten Sie haben, verfügen über Scopes, Aktivierungsreihenfolge usw.

hoffe es hilft, C: \ Marius

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top