Servicios WCF en SharePoint Foundation 2010
Última modificación: martes, 08 de marzo de 2011
Hace referencia a: SharePoint Foundation 2010
La nueva interfaz de REST y el nuevo modelo de objetos de cliente de Microsoft SharePoint Foundation 2010 proporcionan acceso a la funcionalidad común de los sitios web de SharePoint Foundation, pero no a toda su funcionalidad. Si desarrolla una aplicación personalizada para Microsoft SharePoint Server 2010, es posible que haya un servicio web predeterminado de Windows Communication Foundation (WCF) que exponga la funcionalidad específica que necesita usar. No obstante, si ningún servicio web proporciona el acceso que necesita, puede crear un servicio web personalizado que use el modelo de objetos de servidor para obtener acceso a los datos. SharePoint Foundation 2010 admite la creación de servicios web personalizados de Microsoft ASP.NET y WCF que pueden usarse para desarrollar servicios web RESTful o de estilo SOAP.
Los servicios web personalizados de ASP.NET creados para SharePoint Foundation seguirán funcionando en SharePoint Foundation 2010 sin necesidad de modificarlos, pero de ahora en adelante se recomienda crear en su lugar servicios web personalizados de WCF. Si bien un servicio web de ASP.NET tiene requisitos de configuración más simples, un servicio WCF proporciona enlaces más flexibles y eficaces que resultan importantes para aplicaciones avanzadas. Al hospedar el servicio web de WCF en SharePoint Foundation, pueden reducirse los requisitos de configuración. Si ha creado un servicio web personalizado de WCF para la versión anterior, probablemente tuvo que buscar soluciones alternativas para que este funcione y es posible que lo haya tenido que hospedar dentro de una aplicación web independiente. En SharePoint Foundation 2010, no se necesitan soluciones alternativas, ya que los servicios WCF se admiten de manera predeterminada.
Un servicio web personalizado de ASP.NET se desarrolla del mismo modo que en la versión anterior. Como se explicó en Tutorial: creación de un servicio web personalizado ASP.NET, se debe implementar el servicio web personalizado de ASP.NET en SharePoint Foundation y agregar archivos .wsdl y .disco para que Microsoft Visual Studio pueda detectar el esquema del servicio web. Un servicio web de WCF puede ser más complicado, ya que su arquitectura requiere la especificación de la configuración completa de los extremos del servicio WCF. Esta información de configuración incluye las direcciones de extremo, un contrato de servicio y una configuración de enlace, que contiene información específica sobre el entorno en el cual funciona el servicio web. Sin embargo, el programador de SharePoint Foundation normalmente no tiene información sobre el entorno en el que operará el servicio web; el administrador del conjunto o granja de servidores determina la configuración de las aplicaciones web e implementa los servicios web. El administrador puede elegir entre varios esquemas de autenticación admitidos por SharePoint Foundation o puede habilitar varios esquemas de autenticación y asignar varias direcciones a la aplicación web de Microsoft Internet Information Services (IIS). En estos casos, un servicio WCF requiere un extremo independiente para cada esquema de autenticación y dirección. Debido a que no se puede proporcionar este tipo de información en un formulario estático, no se puede usar un tipo web.config de configuración. La solución es la configuración dinámica, o en la terminología de WCF, la configuración mediante programación.
Configuración dinámica de WCF
La configuración dinámica de WCF en SharePoint Foundation consiste en una fábrica de servicios personalizada. Al desarrollar el servicio WCF, debe especificar la fábrica de servicios proporcionada por SharePoint Foundation y, una vez especificada, ya no serán necesarias las entradas de configuración en el archivo web.config. En tiempo de ejecución, la fábrica de servicios de SharePoint Foundation configura los extremos adecuados para el servicio de forma automática. También puede indicar a la fábrica de servicios de SharePoint Foundation que cree automáticamente un extremo de intercambio de metadatos para el servicio personalizado mediante un atributo especializado en la clase de servicio. Cuando la fábrica de servicios de SharePoint Foundation detecta este atributo en la clase de servicio, crea automáticamente un extremo de intercambio de metadatos para el servicio. El último paso en el desarrollo de un servicio web de WCF es implementarlo en la carpeta %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI o en una aplicación web.
En la tabla siguiente se enumeran las fábricas y los tipos de servicio proporcionados por SharePoint Foundation.
Tipo de servicio |
Fábrica de servicios |
Descripción |
---|---|---|
Servicio SOAP |
MultipleBaseAddressBasicHttpBindingServiceHostFactory |
Debe usarse enlace HTTP básico, que crea extremos para un servicio basado en el enlace HTTP básico. |
Servicio REST |
MultipleBaseAddressWebServiceHostFactory |
La fábrica de servicios crea extremos con enlaces web. |
Servicio de datos de ADO.NET |
MultipleBaseAddressDataServiceHostFactory |
Se puede usar un generador de hosts de servicio de datos. |
Puede aplicar los siguientes atributos a una clase de servicio para el comportamiento:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]: para la compatibilidad con ASP.NET.
[BasicHttpBindingServiceMetadataExchangeEndpoint]: para habilitar un extremo de intercambio de metadatos (MEX).
Use la propiedad WcfServiceSettings de SPWebService para especificar la clase de configuración para personalizar los parámetros del extremo generado por la fábrica de servicios de SharePoint Foundation. Si las funcionalidades de esta clase de configuración no son suficientes para satisfacer sus necesidades, también puede desarrollar su propia fábrica de servicios que cree extremos para el servicio web de forma dinámica.
Configuración del servicio WCF
Un servicio WCF hospedado en SharePoint Foundation y que usa la configuración dinámica se basa en la fábrica de servicios de SharePoint Foundation para la configuración de sus extremos. Al inicio, la fábrica de servicios lee la información de configuración de IIS y crea los extremos adecuados para cada esquema de autenticación y dirección especificados para la aplicación disponible. Sin embargo, WCF requiere una dirección única para cada extremo. Si se habilitan varios esquemas de autenticación para una aplicación web, se asignarán varios extremos a la misma dirección. Para resolver este problema, SharePoint Foundation crea una dirección única para cada esquema de autenticación. La dirección está formada por la concatenación de la dirección URL base del servicio con el nombre del esquema de autenticación, como se muestra a continuación:
https://server/_vti_bin/Service.svc/negotiate
https://server/_vti_bin/Service.svc/ntlm
https://server/_vti_bin/Service.svc/anonymous
Al agregar una referencia de servicio para un servicio web personalizado de WCF en una aplicación, no es necesario especificar el sufijo de la autenticación, pero se puede obtener acceso al servicio web mediante su dirección URL original (por ejemplo, https://server/_vti_bin/Service.svc). Esto es posible debido al módulo HTTP, un elemento estándar de la infraestructura de SharePoint Foundation que preprocesa todas las solicitudes controladas por SharePoint Foundation. El módulo HTTP reconoce la convención de configuración del servicio WCF y, cuando se recibe una solicitud en un servicio WCF que usa la configuración dinámica, el módulo vuelve a enrutar la solicitud al extremo apropiado en función de la autenticación de la solicitud. Este esquema de redireccionamiento funciona de forma transparente para las aplicaciones cliente que solo ven un único servicio WCF ubicado en el nombre original al que se puede obtener acceso mediante varios esquemas de autenticación.
Vea también
Conceptos
Creación de un servicio de WCF personalizado en SharePoint Foundation