Obtener información general rápida sobre el modelo de objetos de SharePoint
Este es el cuarto de una serie de artículos sobre los conceptos básicos de desarrollo de un Complementos de SharePoint hospedados por el proveedor. Primero debe familiarizarse con Complementos de SharePoint y con los anteriores artículos de esta serie, los cuales puede encontrar en Introducción a la creación de complementos de SharePoint hospedados por el proveedor.
Nota:
Si a lo largo de esta serie ha estado trabajando sobre los complementos hospedados por el proveedor, tiene una solución de Visual Studio que puede usar para continuar con este tema. También puede descargar el repositorio en Tutoriales_de_Complementos_Hospedados-por-el-proveedor_de_SharePoint_ y abrir el archivo BeforeSharePointWriteOps.sln.
En este artículo, podrá realizar una breve pausa en la codificación para obtener una descripción general del modelo de objetos de cliente (CSOM) de SharePoint. Este modelo está amplia y correctamente documentado en MSDN con temas de referencia, procedimientos y ejemplos de código. En este artículo, solo podemos proporcionarle una parte ínfima del contenido. Pero incluso una breve introducción servirá para que una parte importante del código que verá en esta serie sea mucho menos misterioso.
Jerarquía de contenido
La tabla siguiente muestra la jerarquía de contenido en SharePoint y las clases CSOM que lo representa. Cada una de estas entidades tiene elementos secundarios del tipo que está justo debajo de ella.
Entidad | Clase | Comentarios |
---|---|---|
Granja de servidores local de SharePoint o suscripción a SharePoint Online (también se denomina “espacio empresarial”) | Hay solamente un acceso mediante programación limitado a este nivel de CSOM. No hay ninguna clase de granja de servidores, suscripción o inquilino, por ejemplo. (El modelo de objetos de servidor de SharePoint, que no se puede usar en los complementos, permite el acceso mediante programación a estas entidades). | |
colección de sitios | Site | Una colección de sitios web que están agrupados juntos principalmente por razones administrativas y para albergar componentes de SharePoint, como páginas maestras con su marca o grupos de seguridad personalizados, que se pueden aplicar a todos los sitios web secundarios. Todos los sitios web pertenecen a alguna colección de sitios. |
sitio web | Web | Un conjunto de páginas y componentes de SharePoint. Pueden tener sitios web dependientes. |
lista | List | Las bibliotecas de documentos y otros tipos de bibliotecas de archivos también están en este nivel. Una biblioteca de documentos es un tipo especial de lista en la que cada fila incluye un documento adjunto y las demás columnas son datos sobre el documento, como el autor, cuándo se editó por última vez y quién lo desprotegió. |
elemento de lista | ListItem | Una fila de una lista, es decir, un elemento de lista, con determinados valores en los campos de la fila. También tiene un tipo. Consulte la siguiente fila. |
elemento de lista | ContentType | El tipo de un elemento de lista. Están representados en la clase ContentType. Cada uno de ellos es básicamente un conjunto de columnas y metadatos. El más simple es el tipo de contenido Item integrado. Todos los demás tipos de contenido se derivan de Item. SharePoint incluye muchos tipos de contenido integrados, como Evento y Anuncio. |
columna | Field | Un objeto Field incluye no solo información sobre el tipo de datos subyacente, sino también información sobre cómo se aplica formato a los datos y se representan en formularios, como los formularios para crear, mostrar y editar elementos de lista específicos. |
Puede crear con programación listas personalizadas, tipos de contenido, tipos de columna y elementos de lista.
Además del contenido, el CSOM proporciona acceso a los usuarios, grupos, roles y permisos, la taxonomía, la búsqueda y más.
Procesamiento por lotes y entorno de ejecución del lado cliente
CSOM usa un sistema de procesamiento por lotes. Los fragmentos de código administrado se convierten a XML y se envían al servidor en una sola solicitud HTTP. Para cada comando, se realiza una llamada de modelo de objeto de servidor correspondiente y el servidor devuelve una respuesta al cliente en formato de notación de objetos JavaScript (JSON).
El código de SharePoint en un cliente comienza por recuperar un objeto de contexto de cliente que representa el contexto de la solicitud actual, incluida la identidad del sitio web de SharePoint (y su colección de sitios primaria) y mediante este contexto se puede obtener acceso a objetos CSOM. Lo siguiente es la estructura básica que verá una y otra vez.
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// CRUD operation or query code goes here.
clientContext.ExecuteQuery();
}
Tenga en cuenta lo siguiente en relación con este código:
El objeto
spContext
es del tipo SharePointContext y está definido en el archivo SharePointContext.cs (o .vb) que genera Office Developer Tools para Visual Studio. Este archivo se puede modificar, pero raramente es necesario hacerlo. Para la mayoría de proyectos de complemento de SharePoint, este archivo y el archivo TokenHelper.cs (o .vb), también generado por las herramientas, funcionan de forma efectiva como extensiones del propio CSOM.El objeto
clientContext
es el tipo CSOM ClientContext.El método ExecuteQuery empaqueta el código de operación CRUD en un mensaje XML que envía al servidor de SharePoint. Allí se convierte en el código del modelo de objetos de servidor equivalente y se ejecuta.
Había un ejemplo de este patrón en el artículo anterior de esta serie, en el método GetLocalEmployeeName
que se muestra a continuación.
private string GetLocalEmployeeName()
{
ListItem localEmployee;
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
List localEmployeesList = clientContext.Web.Lists.GetByTitle("Local Employees");
localEmployee = localEmployeesList.GetItemById(listItemID);
clientContext.Load(localEmployee);
clientContext.ExecuteQuery();
}
return localEmployee["Title"].ToString();
}
Tenga en cuenta lo siguiente sobre este método:
Las dos primeras líneas del bloque using parecen obtener referencias a la lista y al objeto de elemento de lista. Pero en realidad, cuando estas líneas se ejecutan en el tiempo de ejecución de cliente de SharePoint, simplemente se traducen al formato XML. El método ExecuteQuery envía ese XML al servidor.
El método Load agrega un aspecto adicional al mensaje: indica al servidor que envíe el objeto especificado al cliente. El método ExecuteQuery recibe este objeto (como JSON) y lo utiliza para inicializar la variable
localEmployee
del lado cliente. A continuación, el código del lado cliente posterior hace referencia al objeto ListItem y sus miembros. Como puede ver, la línea siguiente hace referencia al valor del campo"Title"
del elemento. Esta línea habría generado una excepción si no se hubiera llamado al método Load porque el objeto realmente no existe en el lado cliente hasta que se ha cargado.
Pasos siguientes
En el siguiente artículo, regresamos a la codificación y aprendemos a agregar operaciones de escritura de SharePoint al complemento hospedado por el proveedor.