Compartilhar via


Walkthrough: criar um objeto do Serviço de conteúdo

Esta explicação passo a passo explora como definir a lógica para um personalizado serviço para gerenciar site de conteúdo em uma implantação Windows SharePoint Services wssnoversshort. O exemplo mostra como criar classes que derivar de classes do espaço para nome Microsoft.SharePoint.Administration N:Microsoft.SharePoint.Administration para persistir personalizado administrativo configurações na banco de dados. O exemplo inclui arquivos classe que dados implementar estruturas que contêm metadados sobre uma lista de locais. Cada de conteúdo localidade especifica um URL que deve ser preservado.

O exemplo inclui criando codificar arquivos para o seguinte classes:

  • ContentService define o de alto nível objeto, que é derivado do SPService T:Microsoft.SharePoint.Administration.SPService classe e fornece a lógica para gerenciar de conteúdo locais em uma implantação. Essa classe inclui os construtores para inicializar o objeto ContentService ContentService, bem como membros para recuperar o de conteúdo serviço e sua coleção de de conteúdo locais.

  • ContentLocationCollection define uma classe coleção que herda o SPPerisistedChildCollection T:Microsoft.SharePoint.Administration.SPPerisistedChildCollection classe e fornece um objeto para conter de conteúdo locais. Esta classe contém um construtor e um Add Adicionar método.

  • ContentLocation herda de SPPersistedObject e define um de conteúdo localidade. Essa classe inclui os construtores e membros para personalizado propriedade configurações.

Bem como criar um assembly com os arquivos codificar anterior, o exemplo mostra como usar um ação personalizada de recursos para adicionar um link na página de operações para que os administradores possam acessar o serviço. O exemplo também descreve como usar personalizado páginas .ASPX para fornecem interface de usuário que é exigido para gerenciar o de conteúdo serviço e sua de conteúdo itens localidade. Para obter informações sobre como criar um projeto Windows SharePoint Services wssnoversshort em Microsoft Visual Studio 2005, consulte Guia de Introdução Com programaticamente personalizar uma Web Site SharePoint em Visual Studio Programmatically Customizing.

Arquivo de classe ContentService

O seguinte exemplo de código define uma enumeração FormatType FormatType e o de alto nível ContentService classe, que inclui o seguinte e construtores membros:

  • Local A propriedade estática para recuperar o atual de conteúdo serviço localidade.

  • Locais A propriedade estática para acessar o de conteúdo coleção localidade.

  • GetAllContentLocations um método para retornar todos os de conteúdo locais fornecidas através de serviço.

  • A propriedade Formato para get ou definir o tipo de formato para o de conteúdo serviço.

Na parte superior de cada arquivo codificar que é apresentado posteriormente, adicionar uma diretiva para importação de Microsoft.SharePoint.Administration espaço para nome, as in o seguinte exemplo. Use o atributo Persisted persistente para tornar propriedade persistir configurações no banco de dados. O personalizado espaço para nome que contém objetos em de exemplo é nomeado MS.Samples.SharePoint.ContentManager.

                    Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SharePoint.Administration

Namespace MS.Samples.SharePoint.ContentManager

    Public Enum FormatType
        HTML
        XML
    End Enum 'ContentLocationType

    <System.Runtime.InteropServices.Guid("BB69A6EB-3230-43ca-B4F5-752EAC39C74A")>  _
    Public Class ContentService
        Inherits SPService

        <Persisted()>  _
        Private formatType As FormatType

        Private Shared locations As ContentLocationCollection
        Private Shared local As ContentService = Nothing
      
        ' A static property that retrieves the content service. 
        Public Shared ReadOnly Property Local() As ContentService
            Get
                If ContentService.local Is Nothing Then
                    ContentService.local = _
                      SPFarm.Local.Services.GetValue < ContentService > "ContentService"
                End If

                Return ContentService.local
            End Get
        End Property

        ' A static property for accessing the location collection. 
        Public Shared ReadOnly Property Locations() As ContentLocationCollection
            Get
                If Me.locations Is Nothing Then
                    Me.locations = New ContentLocationCollection(Me)
                End If

                Return Me.locations
            End Get
        End Property

        ' An empty public constructor required for serialization. 
        Public Sub New()
        End Sub 'New

        Public Sub New(farm As SPFarm)
            MyBase.New("ContentService", farm)
            ' Add code to initialize as needed. 
        End Sub 'New

        ' A method to retrieve the content location collection. 
        Public Function GetAllContentLocations() As ContentLocationCollection
            Dim service As ContentService = ContentService.Local
            If service Is Nothing Then
                Return Nothing
            End If

            Return service.Locations
        End Function 'GetAllContentLocations

        Public Property Format () As FormatType
            Get
                Return Me.formatType
            End Get
            Set
                Me.formatType = value
            End Set
        End Property 
    End Class 'ContentService
End Namespace 'MS.Samples.SharePoint.ContentManager
                    using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Administration;

namespace MS.Samples.SharePoint.ContentManager
{
    public enum FormatType
    {
        HTML,
        XML
    }
    [System.Runtime.InteropServices.Guid("BB69A6EB-3230-43ca-B4F5-752EAC39C74A")]
    public class ContentService : SPService
    {
        [Persisted]
        private FormatType formatType;

        private static ContentLocationCollection locations;
        private static ContentService local = null;

        /* A static property that retrieves the content service. */
        public static ContentService Local
        {
            get
            {
                if (ContentService.local == null)
                {
                    ContentService.local = 
                      SPFarm.Local.Services.GetValue<ContentService>("ContentService");
                }

                return ContentService.local;
            }
        }

        /* A static property for accessing the location collection. */
        public static ContentLocationCollection Locations
        {
            get
            {
                if (this.locations == null)
                {
                    this.locations = new ContentLocationCollection(this);
                }

                return this.locations;
            }
        }

        /* An empty public constructor required for serialization. */
        public ContentService()
        {;}

        public ContentService(SPFarm farm)
            : base("ContentService", farm)
        {/* Add code to initialize as needed. */}

        /* A method to retrieve the content location collection. */
        public ContentLocationCollection GetAllContentLocations()
        {
            ContentService service = ContentService.Local;

            if (service == null)
            {
                return null;
            }

            return service.Locations;
        }

        public FormatType Format
        {
            get 
            {
                return this.formatType; 
            }
            set 
            { 
                this.formatType = value; 
            }
        }
    }
}

Definir um personalizado fornecer método para adicionar o objeto ContentService para o banco de dados, como as in o seguinte exemplo. Esse método pode estar contido na classe ContentService anterior, ou ele pode ser contido separadamente para ser mais modular e que pode ser chamado de contextos diferentes, como as from um instalador de recursos que você pode criar para instalar o serviço, ou de uma linha de comando operação. O método Criar adiciona o objeto ContentService para o banco de dados, sem exigir que você especificar o assembly e classe.

Observação

The custom Provision method that you define is not the Provision method of the base SPPersistedObject class.

                    Public Sub Provision()
  ' Add the ContentService administration object to the database.
  Dim contentService As ContentService = ContentService.Local
  
  If contentService Is Nothing Then
    contentService = New ContentService(SPFarm.Local)
    contentService.Update()
  End If
End Sub
                    public void Provision()
{
    /* Add the ContentService administration object to the database. */
    ContentService contentService = ContentService.Local;

    if (contentService == null)
    {
        contentService = new ContentService(SPFarm.Local);
        contentService.Update();
    }
}

Arquivo de classe ContentLocationCollection

O seguinte exemplo define a classe ContentLocationCollection, que inclui os construtores e um método Add para adicionar novo de conteúdo locais para a coleção.

                    Public Class ContentLocationCollection

  Public Sub New(parent As SPPersistedObject)
    MyBase.New(parent)
  End Sub
  
  Public Sub Add(url As String)
    Dim location As New ContentLocation(String.Empty, Me.Parent)
    
    location.Url = url
    
    location.Update()
  End Sub
End Class
                    public class ContentLocationCollection : SPPersistedChildCollection<ContentLocation>
{
    public ContentLocationCollection(SPPersistedObject parent) : base(parent)
    {;}

    public void Add(String url)
    {
        ContentLocation location = new ContentLocation(String.Empty, this.Parent);

        location.Url = url;

        location.Update();
    }
}

Arquivo de classe ContentLocation

O seguinte exemplo define uma enumeração, ContentLocationType, que especifica o tipo de de conteúdo localidade e uma classe, ContentLocation, que define as propriedades de um de conteúdo localidade, incluindo seus exibir nome, tipo, URL e caminho saída. Especificando o Persisted atributo torna um configuração de propriedade persistir no banco de dados.

A classe ContentLocation inclui o seguinte membros:

  • DisplayName Propriedade ao nome da localidade exibir get.

  • URL propriedade get ou conjunto de URL de um de conteúdo localidade.

  • LocationType propriedade get ou definir o tipo localidade.

  • ContentOutputPath propriedade get ou definir um caminho saída.

                    Public Enum ContentLocationType
    Web
    List
End Enum 'ContentLocationType

Public Class ContentLocation
  Inherits SPPersistedObject
    <Persisted()>  _
    Private locationType As ContentLocationType

    <Persisted()>  _
    Private contentOutputPath As String

    <Persisted()>  _
    Private url As String

    Public Sub New()
    End Sub 'New

    Public Sub New(name As String, parent As SPPersistedObject)
        MyBase.New(name, parent)
    End Sub 'New

    Public Overrides ReadOnly Property DisplayName() As String
        Get
            Return Me.url
        End Get
    End Property

    Public Property Url() As String
        Get
            Return Me.url
        End Get
        Set
            If Me.url = value Then
                Return
            End If

        Me.url = value

        ' The Name property must be unique among multiple children in a 
        ' collection.  Use the URL to ensure uniqueness. 
         Me.Name = Me.url
        End Set
    End Property
      
    Public Property LocationType() As ContentLocationType
        Get
            Return Me.locationType
        End Get
        Set
            Me.locationType = value
        End Set
    End Property 
      
    Public Property ContentOutputPath() As String
        Get
            Return Me.contentOutputPath
        End Get
        Set
            Me.contentOutputPath = value
        End Set
    End Property
End Class 'ContentLocation
                    public enum ContentLocationType
{
    Web,
    List
}

public class ContentLocation : SPPersistedObject
{
    [Persisted]
    private ContentLocationType locationType;

    [Persisted]
    private String contentOutputPath;

    [Persisted]
    private String url;

    public ContentLocation()
    {}

    public ContentLocation(string name, SPPersistedObject parent)
      : base(name, parent)
    {;}

    public override string DisplayName
    {
        get
        {
            return this.url;
        }
    }

    public String Url
    {
        get { return this.url; }
        set 
        {
            if (this.url == value)
            {
                return;
            }

            this.url = value;
            /* The Name property must be unique among multiple children in a collection.  Use the URL to ensure uniqueness. */
            this.Name = this.url; 
        }
    }

    public ContentLocationType LocationType
    {
        get { return this.locationType; }
        set { this.locationType = value; }
    }

    public String ContentOutputPath
    {
        get { return this.contentOutputPath; }
        set { this.contentOutputPath = value; }
    }
}

Adicionar uma ação personalizada e páginas ASPX

Adicionar páginas .ASPX para a pasta \Admin e definir seu codificar atrás em seu assembly. Para informações sobre administrativo páginas .aspx, consulte Páginas de Administração Central. Usar um recurso para adicionar um ação personalizada para uma página Central Administration. Para obter informações sobre a adição um ação personalizada, consulte Como a: Adicionar Ações para a interface do usuário.

O seguinte arquivo ELEMENTS.xml adiciona um ação personalizada conteúdo exportar para o seção Global Configuration da página operações que vincula a uma página para gerenciar de conteúdo contentman.aspx locais.

                    <?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
  <CustomAction
    Id="ContentManagement"
    GroupId="GlobalConfiguration"
    Location="Microsoft.SharePoint.Administration.Operations"
    Sequence="31"
    Title="Content export">
    <UrlAction Url="/_admin/contentman.aspx" />
  </CustomAction>
</Elements>

O arquivo contentman.ASPX para que os pontos ação personalizada podem incluir links para páginas forma para a criação, exibição ou edição de conteúdo itens localidade. Código de página o item nova, de exemplo, pode incluir lógica como o seguinte, que adiciona itens localidade para URLs que são digitados em uma caixa urlImportExport na página e que redireciona para a página contentman.aspx:

                    Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SharePoint.WebControls
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace MS.Samples.SharePoint.ContentManager

    Public Class NewContentImportExportPage
        Inherits Page
        Protected urlImportExport As InputFormTextBox

        Protected Sub SaveNewImportExport(sender As Object, eventArgs As EventArgs)
            Dim service As ContentService = ContentService.Local

            service.Locations.Add(Me.urlImportExport.Text)

            Response.Redirect("/_admin/contentman.aspx", True)
        End Sub 'SaveNewImportExport
    End Class 'NewContentImportExportPage
End Namespace 'MS.Samples.SharePoint.ContentManager
                    using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.WebControls;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MS.Samples.SharePoint.ContentManager
{
    public class NewContentImportExportPage : Page
    {
        protected InputFormTextBox urlImportExport;

        protected void SaveNewImportExport(object sender, EventArgs eventArgs)
        {
            ContentService service = ContentService.Local;

            service.Locations.Add(this.urlImportExport.Text);

            Response.Redirect("/_admin/contentman.aspx", true);
        }
    }
}

Após você implementar sua personalizado serviço, você pode acessar seus dados por instanciar o serviço e chamado seus membros. Você também pode criar outro personalizado objetos que herdam de outros objetos persistentes no namespace Microsoft.SharePoint.Administration N:Microsoft.SharePoint.Administration. Você pode criar uma classe, de exemplo, que é derivado do SPJobDefinition T:Microsoft.SharePoint.Administration.SPJobDefinition classe para implementar um trabalho timer e tempo limite atingido executar operações pelo seu personalizado serviço. Ou você pode herdam o SPFeatureReceiver T:Microsoft.SharePoint.SPFeatureReceiver classe para definir manipulação de eventos para registrar o serviço quando ele está instalado ou ativado como um recurso.

Por meio de objetos persistentes, você pode adicionar personalizado objetos de administração para o banco de dados configuração para persistir a lógica e dados para um aplicativo da Web que é compilado na plataforma Windows SharePoint Services wssnoversshort.