Frage

Es ist ein alter Kampf zwischen ITPRO und Entwickler. ItPros hasst sie aufgrund von Upgrade -Problemen, Entwickler wie die Freiheit, die sie ihnen gibt, ohne dass Hausreinigung mit Feature -Stapeln durchgeführt werden muss.

Was sind Sie bevorzugt und wann benutzt du was?

Wenn Sie bei OOTB SDT bleiben, wie fügen Sie Ihre Anpassungen hinzu?

Persönlich neige ich dazu, nur beim WCM (um ID) benutzerdefinierte SDT zu verwenden, oder in seltenen Fällen, wenn eine Intranet -Unterortsammlung für übermäßige Artefakte gereinigt werden muss.

In letzter Zeit bevorzuge ich, wenn ich Customie OOTB STD habe, benutzerdefinierte Bereitstellungsanbieter (sowohl auf Root -Site als auch auf Sub -Sites) in Kombination mit Feature -Empfängern für maximale Flexibilität. Bei meinem neuesten Projekt haben wir sogar ein allgemeines CPP durchgeführt, das mit XML konfiguriert werden könnte, auf dem Sie Standardseiten einrichten können, welche Unterwebungsvorlagen und Seitenlayouts sichtbar sein sollten, sofortige Listen und Listenelemente programmgesteuert, welche Webteile für die Bereitstellung, verschiedene Konfigurationen Wie Audit -Aktivierung, Navigationskonfiguration, Rollendefinitionen usw.

Lassen Sie mich Ihre bevorzugte Art und Weise wissen, wie Sie es bevorzugen.

Markiertes Gemeinschafts -Wiki

War es hilfreich?

Lösung 6

Ok, in SharePoint 2010 gibt es einen neuen Spieler auf dem Feld: benutzerdefinierte Webvorlagen.

Ich verwende sie jetzt fast ausschließlich anstelle von benutzerdefinierten Site -Definitionen.

Webvorlagen bieten einige Vorteile gegenüber benutzerdefinierten Site -Definitionen:

Profis

  • Manifests können aktualisiert werden (dies wird vor Ort DEFs nicht unterstützt!)
  • kann innerhalb der Sandbox laufen und daher für SharePoint Online verwendet werden (Site Defs können nicht!)
  • Unterstützen Sie sowohl Farm-
  • Besseres Upgrade -Versprechen, da die Website mit OOB -Site -Definitionen erstellt wurde

Nachteile

  • Immer noch ein bisschen fehlerhaft! Gebietsschema- und Subweb -Attribute funktionieren derzeit nicht
  • Feature Stapling funktioniert nicht (da es keine ID gibt, die es anpinten), ist dies kein Problem, da Sie Onet.xml auf unterstützte Weise bearbeiten können ...
  • Keine OOB -Möglichkeit, zu bestimmen, mit welcher Webvorlage eine Website bereitgestellt wurde (setzen Sie eine ID selbst auf Webeigenschaften)
  • Nicht unterstützt für Site -Variationen

Für SharePoint 2010 sollten benutzerdefinierte Webvorlagen Ihre Standardauswahl sein! Es gibt Situationen, in denen Sie weiterhin benutzerdefinierte Site -Definitionen verwenden würden, aber die Liste ist kurz.

Um mehr über benutzerdefinierte Webvorlagen zu erfahren, lesen Sie diese beiden Artikel von Vesa Juvonen:
Site -Definitionen gegen Webvorlagen
SharePoint 2010 und Webvorlagen

Andere Tipps

Die perfekte Site -Definition ist leer. Die eingebauten Vorlagen sind in allem als die einfachsten Lösungen nutzlos. Auch wenn der Kunde genau das wünscht, was sich in der Team -Site -Vorlage befindet, baue ich diese als WSP -Lösung wieder auf und verwendete Code.

Code ist Der Weg zu gehen, weil es eine Mischung aus dem gibt, was die Administratoren wollen und was die Entwickler brauchen. Letzteres ist wichtiger, da ein guter Entwickler den Administratorjob erleichtert.

Upgradierbarkeit ist auch selten ein echtes Problem, da es einfacher ist, eine neue Lösung zu erstellen, als die Probleme von Upgrades in WSS3 zu betreiben. WSS4 verbessert jedoch erheblich die Upgradbarkeit und führt die Funktionsversionierung ein, um mehrere Versionen derselben Funktion zu ermöglichen, die auf verschiedenen Websites gleichzeitig ausgeführt wird.

Ich denke, ich werde tatsächlich einen Blog -Beitrag darüber schreiben ...

.b

Ich bin den ganzen Weg programmatisch. Bei Teched Australia 2009 präsentierte ich dieses Thema und wartete immer noch darauf, dass die Web -Besetzung live wird. Ich würde empfehlen, es anzuschauen, meinen Blog für die Ankündigung ansehen.

Nur um diese Diskussion hinzuzufügen, hat das SharePointDevwiki zwei relevante Seiten:CAML vs programmatischer Code Websites Vorlagen gegen Site -Definitionen im Vergleich zu Funktionen

Derzeit arbeite ich lieber mit der "Minimal Site Def", nur um eine ID zu erhalten, und verwenden dann Empfänger, um das coole Material hinzuzufügen. Dies liegt hauptsächlich an der Tatsache, dass ich denke, dass ich die Arbeit schneller erledige und die Lösung leichter (und auf unterstützte Weise) aktualisieren kann.

Ich habe vor ein paar Tagen ein Stück darüber geschrieben Vermeiden von XML -basierten SharePoint -Funktionen - Verwenden Sie den API -Weg.

Wenn Sie Publishing Sites (WCM) durchführen der Arbeit.

Im Sommer begann ich mich von einigen sehr intelligenten SharePoint-Designern davon überzeugen, dass es einige Vorteile gibt, wenn sie Onet hacken und viel deklarativ Feature -Empfänger, im Zusammenhang mit einem Designer-/Branding -Experten, das Veröffentlichungsseiten durchführt, kann es für ihn tatsächlich einfacher sein, die Dinge deklarativ zu ändern, als C# -Codes zu schreiben. Ich weiß nicht, habe diese Theorie noch nicht getestet.

Was ich jedoch nicht kaufe, ist die Vorstellung, dass Sie keine Site defs verwenden sollten, da sie das Upgrade härter erfassen. Obwohl dies in der Vergangenheit wahr gewesen sein mag, gab es alle möglichen Dinge, die sich härter aufrüsten, die nicht annähernd ihren fairen Anteil geschlagen wurden.

Ich benutze gerne sowohl Site -Definitionen als auch Funktionen, um Inhalte zu liefern. Ich muss nur abwägen, was für den Job benötigt wird. Wenn ich weiß, dass die Anforderungen für das Web in einigen Listen enthalten sind, würde ich eine Funktion entscheiden und die OTB -Site def verwenden. Wenn das Web vollständig angepasst ist oder viele Funktionen benötigt, würde ich mit einer Site def beginnen, die meine Basisfunktionen genau entspricht, und dann einige Funktionen schreiben, um den Rest zu liefern. Die Site -Definition sollte verwendet werden, um Dinge zu liefern, dass eine Funktion schwieriger zu tun ist, wie verschiedene Master -Seite, Thema, Standard.aspx usw. und in welcher Reihenfolge. Mit den Features ist der CAML- und Empfängercode ein Balanceakt. Manchmal können Sie es in CAML machen, aber es ist schneller, in Code zu schreiben oder umgekehrt. Ich glaube, deklarative CAML ist einfacher zu erfassen für die Quellensteuerung und die Server -Optimierung, aber nicht alles kann in CAML wie Web -Teil -Verbindungen erfolgen und einige Web -Teile instanzieren. Immer wenn Sie die Möglichkeit haben, Ihre eigene ID zu definieren, tun Sie dies - es macht Unterstützung und Extensiblity so viel einfacher.

Persönlich ziehe ich es vor, mit einer mageren Site -Vorlage zu gehen und dann das Feature -Stapling zu verwenden. Normalerweise erstelle ich eine übergeordnete Funktion mit Aktivierungsdepedenzen für mehrere Kinderfunktionen. Ich hefte diese übergeordnete Funktion auf jeder Site -Definition. Der Grund, warum ich dies mag, ist, dass ich die Funktion deaktivieren und reaktivieren kann, um die vorhandene Site zu aktualisieren. Es ermöglicht mir auch, mit CAML und minimaler Codierung einiges zu erstellen.

Ich benutze SPWebProvisioningProvider die ganze Zeit, um die Kontrolle zu haben, um die Funktionen zu aktivieren, wann und in der Reihenfolge, die ich möchte. Ist einfacher, denke ich, um die Seite zu entwickeln und zu debuggen und die Bereitstellung aufzulisten und dann mit Onet.xaml und CAML.

Ein Grund, warum ich Site -Vorlagen verwende (und ich wiederhole die oben genannten Details, um sie sauber zu halten, und den Linkfunktionen), ist, dass mir die Endbenutzererfahrung bei der Auswahl meiner benutzerdefinierten Vorlage auf der Seite "Sites Create" ausgewählt wird. Das Hinzufügen neuer WebTemp -Dateien ist einfach, kopiert eine leere Site -Vorlage und das Modifieren einfach. Es ermöglicht das Projekt (falls es eine benutzerdefinierte Vorlage benötigt) aufzustehen und schnell zu fahren. Sie erhalten die erste WSP -Automatisierung schnell und arbeiten Sie den gesamten Entwicklerlebenszyklus durch, bevor Sie sich in einen C# -Codus eingraben müssen.

Wenn das Projekt erforderlich ist, dass ich die OOB -Site beispielsweise mySite ändern muss, dann würde ich immer die Feature -Stapling -Route gehen.

Ich habe mein eigenes kleines Framework (zu großes Wort) entwickelt, um meine Lösungen vollständig aufzubauen. Dies war für die meisten meiner Kunden ein Hauptproblem.

Kurz gesagt: Ich füttere mein Framework on Feature -Aktivierung (DE) mit einigen sehr vereinfachten CAML -Definitionen und habe die meisten der häufig benötigten Dinge mit dem Code behandelt (Hinzufügen/Upgrade Listen, Empfänger, Inhaltstypen, Site -Spalten usw.). Durch die Änderung meiner Definitionen und durch Reaktivierung der Funktion kann ich die erforderlichen Upgrades auf bereits bereitgestellte Lösung leicht erstellen (das war eines der Hauptziele). Ich verwende zusätzlichen Code im Feature -Empfänger, um alle anderen "Dinge" zu machen, die nicht von meinem Framework abgedeckt werden.

Ich mag es, so zu tun, dass ich durch die Verwendung von Code in voller Ladung alles, was ich leicht zu Fehlern finden kann, selbst einige komplexe Szenarien in sehr kurzer Zeit lösen kann und jede Lösung problemlos wiederverwenden kann.

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