Servicios de SharePoint 2013: Creación, instalación y configuración


Gustavo Velez

Juan Carlos González Martín, MVP de SharePoint

Fabian Imaz, MVP de SharePoint


Un vez qué se han introducido los fundamentos de las aplicaciones de servicio desde el punto de vista de su arquitectura, componentes claves y características fundamentales en este artículo se habla sobre cómo crear, agrupar y configurar las aplicaciones de servicio a través de la interfaz de usuario de SharePoint 2013, comandos PowerShell y el Modelo de Objetos.

Creación de Aplicaciones de Servicio por medio de la Interface de Usuarios

La Administración Central de SharePoint 2013 dispone de una sección en "Administración de aplicaciones" especialmente dedicada a Servicios llamada "Aplicaciones de servicio". En esta sección se encuentran vínculos a tres páginas para "Administrar aplicaciones de servicio", "Configurar asociaciones de aplicaciones de servicio" y "Administrar servicios en el servidor".

Las Aplicaciones de Servicio se pueden crear desde la página a donde conduce el vínculo "Administrar aplicaciones de servicio". El icono "Nueva" en el menú de Cinta permite crear nuevas Aplicaciones de Servicio como se muestra en la Figura 1.

Figura 1.- Menú para crear Aplicaciones de Servicio (en SharePoint Server)

Dn195887.F7EBFA31D276CF01637D54B10968BF51(es-es,MSDN.10).png

Seleccione la aplicación a crear de manera que se muestre la ventana modal de configuración inicial, permitiendo configurar los parámetros necesarios para su funcionamiento (normalmente se debe configurar su nombre, Base de Datos si es necesario y el Grupo de Aplicaciones de Internet Information Services (IIS) que manejará la comunicación con el resto del sistema). Siga las indicaciones de mejores prácticas para la creación de nuevos Grupos de Aplicaciones [1]: tenga en cuenta que cada Grupo de Aplicaciones proporciona aislamiento para las aplicaciones que funcionan dentro de él, pero a un cierto precio de recursos utilizados en los servidores. Si se pueden agrupar aplicaciones en un solo Grupo de Aplicaciones de IIS se ahorran recursos que pueden ser necesarios para el funcionamiento interno del sistema.

Al finalizar el proceso de creación, SharePoint indica si la Aplicación ha sido creada correctamente; en caso contrario, si ha ocurrido en error indicará los motivos que lo han provocado. Note que el proceso de creación no solamente agrega la Aplicación de Servicio sino también el Proxy necesario para su funcionamiento.

Configuración de Proxies de Aplicaciones de Servicio

Para configurar una Aplicación utilice el Menú de Cinta respectivo (Figura 2):

Figura 2.- Menú de Cinta para configurar una Aplicación de Servicio

Dn195887.B1A51CCBAA6EDFCCCAA9E1F43596ED1F(es-es,MSDN.10).png

Por medio del icono "Propiedades" se pueden modificar los elementos utilizadas para la creación de la Aplicación de Servicio. El botón "Administradores" permite modificar los usuarios (o grupos de usuarios) que serán administradores de la Aplicación y el icono "Administrar" permite configurar el Proxy de la Aplicación de Servicio. Note que la página de Administración es diferente para cada tipo de Proxy de Aplicación de Servicio.

Los iconos "Publicar" y "Permisos" permiten configurar la Aplicación de Servicio para que otras granjas de SharePoint utilicen los Servicios configurados en la granja actual. Finalmente, el icono “Conectar” permite utilizar Servicios en la granja de SharePoint actual que han sido configurados en otras granjas externas.

Creación de Aplicaciones de Servicio con PowerShell

PowerShell dispone de cmdlets (comandos) específicos para crear y manipular casi todas las Aplicaciones de Servicio por defecto de SharePoint 2013 (Foundation y Server). En general, los cmdlets de PowerShell son incluso más poderosos que el Modelo de Objetos de SharePoint pues permiten realizar operaciones no permitidas con este último.

La siguiente tabla indica los cmdlets disponibles por defecto en SharePoint, la Aplicación de Servicio para la que se puede utilizar y si está disponible en Foundation (F) o en la versión de Servidor (S):


Cmdlet

Servicio

Verbo

F/S

Service

Uso general

Get-New-Restart-Resume-Set-Start-Stop-Suspend


SPAccessServiceApplication

Access

Get-New-Set

S

SPAccessServicesApplication

Access

Get-New-Set

S

SPAccessServiceDatabase

Access

Get

S

SPAccessServicesDatabaseCredentials

Access

Copy

S

SPAccessServicesDatabasePassword

Access

Reset

S

SpAccessServicesDatabaseServer

Access

Get-New-Remove-Set

S

SPAccessServiceDatabaseServerGroup

Access

Get

S

SPAccessServicesDatabaseServerGroupMapping

Access

Get-Set

S

SPAccessServicesApplicationProxy

Access

New

S

SPAppManagementServiceApplication

Manejo de Apps

New

SF

SPAppManagementServiceApplicationProxy

Manejo de Apps

New

SF

SPBusinessDataCatalogServiceApplication

BCS

New-Set

SF

SPBusinessDataCatalogServiceApplicationProxy

BCS

New

SF

SPDistributedCacheServiceInstance

Cacheo

Add-Remove-Stop

SF

SPEduServiceSetting

Educación

Get-Set

S

SPEnterpriseSearchServiceApplicationIndex

Búsqueda

Backup-Restores

SF

SPEnterpriseSearchQueryAndSiteSettingsService

Búsqueda

Get

SF

SPEnterpriseSearchQueryAndSiteSettingsServiceInstance

Búsqueda

Get-Start-Stop

SF

SPEnterpriseSearchQueryAndSiteSettingsServiceProxy

Búsqueda

Get

SF

SPEnterpriseSearchService

Búsqueda

Get-Set

SF

SPEnterpriseSearchServiceApplication

Búsqueda

Get-New-Remove-Restore-Resume-Set-Suspend-Upgrade

SF

SPEnterpriseSearchServiceApplicationBackupStore

Búsqueda

Get

SF

SPEnterpriseSearchServiceApplicationProxy

Búsqueda

Get-New-Remove-Set

SF

SPEnterpriseSearchServiceInstance

Búsqueda

Get-Set-Start-Stop

SF

SPEnterpriseSearchServiceApplicationSiteSettings

Búsqueda

Remove-Upgrade

SF

SPExcelServiceApplication

Excel

Get-New-Set

S

SPInfoPathFormsService

InfoPath

Get-Set

S

SPInfoPathWebServiceProxy

InfoPath

Get-Set

S

SPMarketplaceWebServiceApplicationProxy

Almacén de Apps

New

SF

SPMetadataServiceApplication

Metadatos

Get-New-Set

S

SPMetadataServiceApplicationProxy

Metadatos

Get-New-Set

S

SPMetadataWebServicePartitionData

Metadatos

Clear-Export-Import

S

SPPerformancePointServiceApplication

PerformancePoint

Get-New-Remove-Set

S

SPPerformancePointServiceApplicationProxy

PerformancePoint

New-Remove

S

SPPerformancePointServiceApplicationTrustedLocation

PerformancePoint

Clear-Get-New-Remove

S

SPPowerPointConversionServiceApplication

PowerPoint

New-Set

S

SPPowerPointConversionServiceApplicationProxy

PowerPoint

New

S

SPProfileServiceApplication

Perfiles

New-Set

S

SPProfileServiceApplicationProxy

Perfiles

New-Set

S

SPProfileServiceApplicationSecurity

Perfiles

Get-Set

S

SPRSService

Rep. Service

Install

SF

SPRSServiceProxy

Rep. Service

Install

SF

SPRSServiceApplication

Rep. Service

Get-New-Remove-Set

SF

SPRSServiceApplicationProxy

Rep. Service

Get-New

SF

SPRSServiceApplicationServers

Rep. Service

Get

SF

SPSecureStoreServiceApplication

Almacen. Seguro

New-Set

S

SPSecureStoreServiceApplicationProxy

Almacen. Seguro

New

S

SPSecurityTokenServiceConfig

Servicio de Tokens

Get-Set

SF

SPService

Uso general

Install

SF

SPServiceApplication

Uso general

Get-Publish-Remove-Set-Unpublish

SF

SPServiceApplicationConnectionInfo

Uso general

Receive

SF

SPServiceApplicationEndpoint

Uso general

Get-Set

SF

SPServiceApplicationPool

Uso general

Get-New-Remove-Set

SF

SPServiceApplicationProxy

Uso general

Get-Remove

SF

SPServiceApplicationProxyGroup

Uso general

Add-Get-New-Remove

SF

SPServiceApplicationProxyGroupMember

Uso general

Add-Remove

SF

SPServiceApplicationSecurity

Uso general

Get-Set

SF

SPServiceContext

Uso general

Get

SF

SPServiceHostConfiguration


Get-Set

SF

SPServiceInstance

Uso general

Get-Start-Stop

SF

SPSessionStateService

Servicio de Estado

Get-Disable-Enable-Set

S

SPStateServiceApplication

Servicio de Estado

Get-New-Set

S

SPStateServiceApplicationProxy

Servicio de Estado

Get-New-Set

S

SPStateServiceDatabase

Servicio de Estado

Get-Dismount-Initialize-Mount-New-Remove-Resume-Set-Suspend

S

SPSubscriptionSettingsServiceApplication

Inquilinato

New-Set

SF

SPSubscriptionSettingsServiceApplicationProxy

Inquilinato

New

SF

SPTranslationServiceApplication

Traducción

New-Set

S

SPTranslationServiceApplicationProxy

Traducción

New-Set

S

SPTranslationServiceJobHistory

Traducción

Remove

S

SPTopologyServiceApplication

Topología

Get-Set

SF

SPTopologyServiceApplicationProxy

Topología

Get-Set

SF

SPTrustedServiceTokenIssuer

Servicio de Tokens

Get-New-Remove-Set

SF

SPUsageService

Recolección de datos

Get-Set

SF

SPVisioServiceApplication

Visio

Get-New-Set

S

SPVisioServiceApplicationProxy

Visio

Get-New

S

SPWordConversionServiceApplication

Word Conversión

New-Set

S

SPWordConversionServiceJobHistory

Word Conversión

Remove

S

SPWorkflowServiceApplicationProxy

Flujos de trabajo

Get-New

SF

SPWorkManagementServiceApplication

Uso general

New-Set

S

SPWorkManagementServiceApplicationProxy

Uso general

New-Set

S


Tabla 1.- Cmdlets disponibles para el trabajo con Aplicaciones de Servicio.

Los servicios de Administración central, Conector de Lotus Notes, Correo electrónico, Código de espacio aislado y Registro de aplicaciones no disponen de cmdlets por defecto. La columna "Verbo" indica cómo se puede utilizar el cmdlet. Por ejemplo, "SPSearchService" se puede utilizar como "Get-SPSearchService" o como "Set-SPSearchService" dependiendo del uso que se le quiera dar. Los cmdlets marcados como de "Uso general" pueden ser aplicados para trabajar con diferentes tipos de Servicios. Cada cmdlet dispone de sus propias instrucciones que se pueden ver en pantalla utilizando el cmdlet precedido por "Get-Help" y/o eventualmente con la opción "-Examples" al final. Por ejemplo para visualizar los parámetros de configuración de "Get-SPSearchService" con algunos ejemplos de aplicación, se puede utilizar "Get-Help Get-SPSearchService -Examples"; el resultado se puede observar en la Figura 3. Note que PowerShell puede descargar los últimos archivos de ayuda si se acepta la opción mostrada.

Figura 3.- PowerShell con ejemplos y ayuda para uno de los cmdlets

Dn195887.175EA708FAD01EF8490A91D27155A3F6(es-es,MSDN.10).png

El siguiente ejemplo muestra cómo crear, configurar y trabajar con de Metadatos Administrados utilizando comandos PowerShell. Inicialmente es necesario saber si el Servicio esta iniciado o detenido. El cmdlet Get-SPServiceInstance genera una lista con todos los Servicios del sistema, su estado e identificador, pero PowerShell permite encontrar los datos de uno solo de ellos utilizando sus propiedades:

Get-SPServiceInstance | Where-Object {$_.TypeName -eq "Servicio web de metadatos administrado"} | Format-Table -Property TypeName, Status, Id -AutoSize

Listado 1.- Acceso a la información del servicio de Metadatos Administrados con PowerShell.

Figura 4.- Cmdlet Get-SPServiceInstance

Dn195887.C9C7B65BC0C3721839DDC2C4B764B2DB(es-es,MSDN.10).png

El comando utiliza redirectores de PowerShell ("pipes" = "|") para concatenar diferentes comandos. En este caso para seleccionar uno de los Servicios usando el comando "Where-Object" y para mostrar tres de sus propiedades en forma tabular.

Si el Servicio está detenido, también es posible iniciarlo con un cmdlet:

Get-SPServiceInstance | Where-Object {$_.TypeName -eq "Servicio web de metadatos administrado"} | Start-SPServiceInstance

Listado 2.- Como iniciar la instancia del servicio con PowerShell.

En este caso el redirector de PowerShell indica que el Servicio se debe iniciar. Si por casualidad el Servicio ya está iniciado, una advertencia aparece en PowerShell indicando lo siguiente: " ADVERTENCIA: 'Servicio web de metadatos administrado' ya se inició en el servidor 'servidor'". De otra forma el Servicio se inicia y la pantalla mostrará los datos del Servicio como en la Figura 4. Tenga en cuenta que el nombre del servicio se debe utilizar tal y como SharePoint lo utiliza internamente, incluyendo cualquier error de tipo tipográfico u ortográfico que tenga.

Los Servicios que utilizan IIS necesitan ejecutarse dentro de un Grupo de Aplicaciones de IIS. Este es precisamente el caso del ejemplo, por lo que es necesario crear un nuevo Grupo de Aplicaciones de IIS para la Aplicación de Servicio, o reutilizar uno existente, para cuando se va a crear la Aplicación de Servicio. Para el ejemplo se crea un nuevo Grupo utilizando el cmdlet New-SPServiceApplicationPool:

New-SPServiceApplicationPool -Name "MyMetadataPool" -Account (Get-SPManagedAccount "servidor\cuenta")

Listado 3.- Creación de un nuevo grupo de aplicaciones para Aplicaciones de Servicio.

Note que el Grupo de Aplicaciones no es visible en el Administrador de IIS.

Finalmente, crear la Aplicación de Servicio se reduce a utilizar el cmdlet creado específicamente para el Servicio de Metadatos utilizando los parámetros necesarios:

New-SPMetadataServiceApplication -Name "MyMetadataApplicationService" -ApplicationPool (Get-SPServiceApplicationPool "MyMetadataPool") -DatabaseName "MyMetadataApplicationServiceDataBase"

Listado 4.- Creación de la Aplicación de Servicio de Metadatos Administrados con PowerShell

El cmdlet se encarga por sí mismo de crear la Base de Datos necesaria para la Aplicación de Servicio. Como se ha indicado anteriormente, una Aplicación de Servicio necesita un Proxy para poder conectarse a la Aplicación Web. Para crear el Proxy necesario para el ejemplo se puede utilizar el cmdlet New-SPMetadataServiceApplicationProxy de la siguiente forma:

New-SPMetadataServiceApplicationProxy -Name "MyMetadataApplicationServiceProxy" -ServiceApplication (Get-SPServiceApplication -Name "MyMetadataApplicationService")

Listado 5.- Creación del Proxy vinculado a la aplicación de servicio.

El Proxy es creado, pero el cmdlet no lo agrega al Grupo (Predeterminado) de Servidores Proxy de Aplicaciones, por lo que hay que agregarlo explícitamente:

Add-SPServiceApplicationProxyGroupMember -Identity "" -Member (Get-SPServiceApplicationProxy | Where-Object {$_.DisplayName -eq "MyMetadataApplicationServiceProxy"})

Listado 6.- Addición del Proxy al Grupo “Predeterminado” de Servidores Proxy.

Note el uso de una cadena vacía para el parámetro de identidad. El Grupo de Servidores Proxy de Aplicaciones creado por defecto por SharePoint ("Predeterminado") no tiene un nombre definido, como se puede ver ejecutando el cmdlet para enumerar los Grupos:

Get-SPServiceApplicationProxyGroup | Select typeName, Id

Listado 7.- Comando para listar los Grupos de Servidores Proxy disponibles.

El Grupo "Predeterminado" tiene una cadena vacía en la propiedad Name, pero la propiedad "FriendlyName" mantiene el nombre en inglés ("default").

Configuración de Aplicaciones de Servicio por medio de PowerShell

Los cmdlets especializados para cada Servicio permiten configurar las propiedades de la Aplicación de Servicio y de su Proxy. Continuando con el ejemplo de la sección anterior, para iniciar la configuración de la Aplicación de Servicio de Metadatos Administrados es necesario primero conseguir una referencia a la instancia de la Aplicación de Servicio y asignarla a una variable:

$MyMetadataAS = Get-SPMetadataServiceApplication -Identity "MyMetadataApplicationService"

Listado 8.- Creación de una referencia a la Aplicación de Servicio.

Para el parámetro de la identidad se puede utilizar el nombre de la Aplicación de Servicio o su Identificador. Por medio del cmdlet Get-SPServiceApplication se puede obtener una lista de las Aplicaciones de Servicio con su Identificador, como se indicó anteriormente.

Todas las propiedades de la Aplicación de Servicio están disponibles utilizando la variable. Por ejemplo, para ver la Base de Datos que está utilizando la Aplicación, simplemente utilice $MyMetadataAS.DataBase

Para modificar parámetros se utiliza el cmdlet con el verbo "Set-". Por ejemplo, para configurar las cuentas de la Aplicación (Administrador, FullAccess, Restricted y ReadAccess) utilice:

Set-SPMetadataServiceApplication -Identity "MyMetadataApplicationService" -AdministratorAccount dominio\cuenta -FullAccessAccount dominio\cuenta -RestrictedAccount dominio\cuenta -ReadAccessAccount dominio\cuenta

Listado 9.- Modificación de los parámetros de la Aplicación de Servicio.

De forma similar se puede configurar el Proxy de la Aplicación de Servicio. Por ejemplo, el Proxy permite configurar el tipo de conexiones a utilizar (para ver esta configuración desde la Interface de Usuario, vaya a la Administración Central -> Administración de aplicaciones -> Administrar aplicaciones de servicio -> seleccione el Proxy de la Aplicación de Servicio, pero sin hacer clic directamente sobre el vínculo -> seleccione "Propiedades" desde el menú de cinta):

Figura 5.- Conexiones de Servicios del Proxy de la Aplicación de Servicio

Dn195887.047E2A83D1E17E75519B275A54A7C36C(es-es,MSDN.10).png

El equivalente PowerShell es como sigue:

Set-SPMetadataServiceApplicationProxy -Identity "MyMetadataApplicationServiceProxy" -DefaultKeywordTaxonomy -DefaultSiteCollectionTaxonomy -ContentTypePushdownEnabled:$true

Listado 10.- Activación de la publicación de tipos de contenido.

Los parámetros utilizados activan las tres conexiones disponibles mostradas en la Figura 5. Para activar "Consume tipos de contenido de la Galería de tipos de contenido" es necesario establecer primero la dirección del concentrador (el parámetro a utilizar entonces es "-ContentTypeSyndicationEnabled:$true".

Finalmente, para eliminar la Aplicación de Servicio por completo comience borrando su Proxy:

Get-SPServiceApplicationProxy | Where-Object {$_.DisplayName -eq "MyMetadataApplicationServiceProxy"} | Remove-SPServiceApplicationProxy –RemoveData

Listado 11.- Eliminación de un proxy de aplicación de servicio.

A continuación, elimine la Aplicación de Servicio misma utilizando el cmdlet general Remove-SPServiceApplication indicando la Aplicación a eliminar:

Remove-SPServiceApplication -Identity (Get-SPServiceApplication -Name "MyMetadataApplicationService") –RemoveData

Listado 12.- Eliminación de la Aplicación de Servicio.

El parámetro "-RemoveData" elimina la Base de Datos asignada a la Aplicación de Servicio. Este comando no elimina el Grupo de Aplicaciones de IIS creado para la Aplicación. Para borrarlo es necesario ejecutar otro cmdlet: Remove-SPServiceApplicationPool -Identity "MyMetadataPool".

Creación y configuración de Aplicaciones de Servicio por medio del Modelo de Objetos de SharePoint

La capacidad del Modelo de Objetos de Servidor de SharePoint 2013 para trabajar con Aplicaciones de Servicio es extremadamente limitada. Por su lado, el Modelo de Objetos de Cliente no tiene acceso a las tareas administrativas de SharePoint, por lo que no es posible utilizarlo para ningún trabajo con Servicios. El Modelo de Objetos contiene las clases enumeradas en la siguiente tabla, perteneciendo todas ellas al Namespace “Microsoft.SharePoint.Administration”:


Clase

Descripción

SPService

Representa un Servicio a nivel de granja.

SPServiceApplication

Representa una Aplicación de Servicio.

SPServiceApplicationCollection

Contiene la colección de Aplicaciones de Servicio.

SPServiceApplicationProxy

Representa un Proxy de una Aplicación de Servicio.

SPServiceApplicationProxyCollection

La colección de Proxies de una Aplicación de Servicio.

SPServiceApplicationProxyGroup

Representa el Grupo de Proxies.

SPServiceApplicationProxyGroupCollection

Contiene la colección de Grupos de Proxies.

SPServiceCollection

La colección de Servicios en la granja.

SPServiceInstance

Representa una instancia de un Servicio en la granja.

SPServiceInstanceCollection

Contiene la colección de Instancias de Servicio.

SPServiceInstanceDependencyCollection

Contiene las dependencias de la Instancia de Servicio.

SPServiceJobDefinition

Representa el Timmer Job que ejecuta cuando un Servicio es provisionado.

SPServiceProvisioningContext

Contiene información sobre la Aplicación de Servicio que se está provisionando.

SPServiceProxy

Representa un Proxy de un Servicio.

SPServiceProxyCollection

Representa la colección de Proxies de un Servicio.


Tabla 2.- Clases específicas en SharePoint 2013 para el trabajo con servicios.

Estas clases son utilizadas principalmente para la creación de nuevos Servicios como se describe en la tercera parte de esta serie de artículos. El primer artículo de la serie indica cómo realizar operaciones básicas con Servicios utilizando las clases del Modelo de Objetos, tales como enumerar los Servicios, Aplicaciones de Servicio y Proxies de las Aplicaciones en la granja.

El Modelo de Objetos dispone de todas las clases especializadas para trabajar con cada uno de los Servicios por defecto de SharePoint 2013, pero desafortunadamente todas ellas son de tipo “internal sealed”, lo que significa que no se pueden utilizar para desarrollar. Estas son las clases que PowerShell utiliza, como se ha descrito anteriormente, para la creación y manipulación de Servicios, Aplicaciones de Servicio y sus Proxies.

Por ejemplo, el cmdlet New-SPMetadataServiceApplication utilizado anteriormente (clase SPCmdletNewmetadataService, namespace Microsoft.SharePoint.Taxonomy.Cmdlet, ensamblado Microsoft.SharePoint.Taxonomy) utiliza el método CreateDataObject() para crear una nueva Aplicación de Servicio para Metadatos. Este método hace una llamada al método “Create” de la clase MetadataWebServiceApplication (namespace Microsoft.SharePoint.Taxonomy.MetadataWebServiceApplication, ensamblado Microsoft.SharePoint.Taxonomy), utilizando los parámetros indicados en la ejecución del cmdlet. Como se puede ver en la Figura 6, la clase es “internal sealed” y el método mismo es “internal static”, bloqueando de hecho cualquier tipo de uso programático:

Figura 6.- Propiedades de la clase para crear Aplicaciones de Servicio para Metadatos

Dn195887.047E2A83D1E17E75519B275A54A7C36C(es-es,MSDN.10).png

Grupos de Proxies de Aplicaciones de Servicios

Como se indicó en el primer artículo de la serie, SharePoint 2013 agrupa los Proxies de Aplicaciones en “Grupos de servidores proxy de aplicaciones”, como se puede verificar usando la Interface de Usuarios (Administración Central –> Administración de aplicaciones –> Asociaciones de la aplicación de servicio) o utilizando el Modelo de Objetos (vea el ejemplo mostrado en el primer artículo). Por defecto SharePoint crea un grupo "predeterminado” en donde se configuran todos los Proxies que se creen, y permite crear un segundo grupo ‘personalizado" si es necesario.

Los Grupos de Proxies son importantes especialmente cuando se utiliza Multitenancy, en donde la funcionalidad ofrecida por diferentes Servicios se puede asignar en formas diferentes a los múltiples inquilinos presentes en la implementación. En este escenario, disponer de solo dos Grupos de Proxies es complemente insuficiente y es necesario crear grupos adicionales, cada uno agrupando diferentes Proxies de Servicios.

El proceso necesario se divide en tres pasos: crear el Grupo de Proxies, asignar los Proxies al Grupo y asignar el Grupo de Proxies a la Aplicación Web.

  • Creación de un Grupo de Proxies: PowerShell dispone del cmdlet New-SPServiceApplicationProxyGroup que requiere el parámetro “Name” para la creación del grupo.
  • La siguiente rutina en una aplicación de consola utiliza el Modelo de Objetos de SharePoint y el namespace Microsoft.SharePoint.Administration para crear un grupo llamado “GrupoNuevo”:
    static void CrearGrupo()
    {
        SPFarm myFarm = SPWebService.ContentService.Farm;
        SPServiceApplicationProxyGroup myServiceApplicationProxyGroup = new SPServiceApplicationProxyGroup("GrupoNuevo", myFarm);
        myServiceApplicationProxyGroup.Update();
    }
    

  • Asignar Proxies de Aplicaciones de Servicio a un Grupo de Proxies: El cmdlet Add-SPServiceApplicationProxyGroupMember de PowerShell permite asignar un Proxy a un Grupo de Proxies. Dos parámetros son obligatorios: “Identity” que especifica el Grupo de Proxies y “Member” que identifica el GUID del Proxy de Aplicación. Por ejemplo, el comando:

Add-SPServiceApplicationProxyGroupMember GrupoNuevo –Member aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb

Listado 14.- Cmdlet para asignar proxies de aplicaciones de serivicio.

Agrega el Proxy de Aplicación con GUID “aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb” al Grupo de Proxies creado anteriormente.

Los Proxies también se pueden asignar utilizando el Modelo de Objetos. La siguiente rutina asigna el Proxy del Servicio de Conectividad a Datos Empresariales al Grupo creado anteriormente:


static void AsignarProxyAGrupo()
{
    SPFarm myFarm = SPWebService.ContentService.Farm;
    SPServiceApplicationProxyGroup myServiceAppProxyGr = myFarm.ServiceApplicationProxyGroups["GrupoNuevo"];

    SPServiceCollection myServices = myFarm.Services;
    foreach (SPService oneService in myServices)
    {
        if (oneService.TypeName.Contains("Servicio de conectividad a datos empresariales") == true)
        {
            SPServiceApplicationCollection myServiceApplications = oneService.Applications;
            foreach (SPServiceApplication oneServiceApplication in myServiceApplications)
            {
                foreach (SPServiceApplicationProxy oneServiceApplicationProxy in oneServiceApplication.ServiceApplicationProxyGroup.Proxies)
                {
                    if (oneServiceApplicationProxy.DisplayName.Contains("Servicio de conectividad a datos empresariales") == true)
                    {
                        myServiceAppProxyGr.Add(oneServiceApplicationProxy);
                        myServiceAppProxyGr.Update();
                    }
                }
            }
        }
    }
}

Inicialmente se crean dos objetos, uno para referenciar la granja utilizada en el momento y el segundo para instanciar el Grupo de Proxies creado inicialmente. Luego se recorre con un bucle todas las Aplicaciones de Servicio presentes en la granja buscando la llamada “Servicio de conectividad a datos empresariales”. El uso de bucles de este tipo no es recomendable ni elegante, pero en este caso es necesario pues la clase SPService tiene dos constructores disponibles, uno que utiliza la propiedad “Name” y el otro que utiliza el GUID del Servicio. Desafortunadamente el nombre visible en la Interface de Usuario no es el utilizado en “Name” sino en la propiedad “TypeName”; por el otro lado, el GUID es invisible en la IU.

Una vez se tiene una referencia a la Aplicación de Servicio se sigue una estrategia similar para encontrar su Proxy, pero esta vez utilizando su “DisplayName” (por similares razones a lo indicado en el párrafo anterior). Tenga en cuenta que en el caso del ejemplo tanto la Aplicación de Servicio como el Proxy tienen el mismo nombre, pero esto no es obligatorio y es solo la forma que utiliza SharePoint por defecto.

Finalmente asignar el Proxy al Grupo de Proxies no implica más que agregarlo a la colección SPServiceApplicationProxyGroup y llamar su método “Update()” para serializar los cambios. Si el código ejecuta correctamente, el Proxy asignado aparecerá marcado como configurado en la lista de Servicios del Grupo como muestra la Figura 7:

Figura 7.- Proxy asignado a un Grupo de Proxies

Dn195887.FA98AF39DFA819BEC398BC9C194076A1(es-es,MSDN.10).png

  • Asignar Grupo de Proxies a una Aplicación Web: El parámetro ServiceApplicationProxyGroup del cmdlet New-SPWebApplication de PowerShell permite asignar un Grupo de Proxies en el momento de la creación de una Aplicación Web. El mismo parámetro del cmdlet Set-SPWebApplication permite modificar el Grupo de una Aplicación ya existente.
  • Programáticamente se puede conseguir el mismo efecto utilizando una rutina similar a la siguiente:
  • static void AsignarWebApplicationAProxyGroup()
    {
        SPFarm myFarm = SPWebService.ContentService.Farm;
        SPServiceApplicationProxyGroup myServiceApplicationProxyGroup = myFarm.ServiceApplicationProxyGroups["GrupoNuevo"];
    
        SPWebApplicationCollection myWebApps = SPWebService.ContentService.WebApplications;
        SPWebApplication myWebApp = myWebApps["SharePoint - 81"];
        myWebApp.ServiceApplicationProxyGroup = myServiceApplicationProxyGroup;
        myWebApp.Update();
    }
    
  • Después de obtener referencia a la granja, Grupo de Proxies y Aplicación Web, el método ServiceApplicationProxyGroup permite vincular la Aplicación Web con el Grupo de Proxies. El método “ServiceApplicationProxyGroup” de la clase SPWebApplication permite vincular el Grupo con la Aplicación Web. El método “Update()” serializa los cambios finalmente.

Conclusiones

PowerShell no es solamente la mejor herramienta para crear y manipular todos los objetos necesarios para trabajar con Servicios de SharePoint 2013, sino que es prácticamente la única posibilidad disponible por el momento. Aunque el Modelo de Objetos de Servidor de SharePoint dispone de todas las clases necesarias para realizar el mismo trabajo, de hecho es casi imposible trabajar con él por el simple hecho de que todas las clases necesarias están decoradas como “internal”.

Referencias

[1]Restricciones y límites del software de SharePoint Server 2013. Disponible online en: http://technet.microsoft.com/es-es/library/cc262787.aspx


Mostrar: