Este artículo proviene de un motor de traducción automática.

Uso de los servicios de conectividad empresarial en SharePoint 2010

Kirk Evans

Uno de libros favoritos mis hijos ’ llaman If You conceder un mouse a cookie Libreta de niños Laura Numeroff─a basándose en la noción de resbaladizas pendiente que si asigna a un mouse (ratón) una cookie, le pregunte para leche, darse cuenta que es thirsty. Cuando él drinks la leche, pedirá un espejo, sucesivamente algunos tijeras una escoba y, a continuación, algunos lápices de cera, y en y, solicitando un nuevo elemento una vez que se da cuenta de la utilidad del elemento actualmente tiene.

Se trata de cómo se ven muchos usuarios progresan a lo largo de la escala de tiempo de adopción con SharePoint: empieza lentamente, cargando unos documentos y a continuación, se van utilizando los flujos de trabajo y formularios y en última instancia deseen superficie datos externos en su sitio. No es así hasta que vea uno fácil tarea era conseguir que decide vaya para el siguiente desafío.

Es un escenario común: Tengo un portal, hay algunos datos externos y desea integrar esos datos en mi portal de forma significativa. Microsoft Office SharePoint Server 2007 (MOSS 2007) se introdujo el catálogo de datos profesionales (BDC) para facilitar este escenario exacto: facilitan a los datos externos superficie dentro de una experiencia de portal. Por ejemplo, puede crear un archivo de definición de XML que define la asignación entre SharePoint y los datos externos, por lo que puede ser procesado en un elemento Web, utiliza como una columna dentro de una lista y incluso integrado en la búsqueda.

Al mostrar las compañías cómo pueden usar BDC para asignar a las aplicaciones de línea de negocio existentes, la bombilla normalmente activa después de mostrar los resultados de búsqueda que incluyen personas, documentos, datos de lista y datos de su system─all LOB existente dentro del mismo conjunto de resultados.

Aunque el BDC en MOSS 2007 habilitada conectividad con sistemas externos, era difícil crear soluciones debido la falta de un diseñador. Además, aunque BDC realiza relativamente sencillo crear soluciones de sólo lectura que muestran los datos en el elemento Web de una lista de datos profesionales, no era tan sencilla crear una solución que habilita a los usuarios realizar cambios y escribir que datos al almacén externo.

Servicios de conectividad de negocio (BCS) en SharePoint 2010 es todo acerca de cómo conectarse a datos externos. BCS mejora las capacidades de la plataforma SharePoint con características de fábrica, servicios y herramientas que simplifican el desarrollo de soluciones con integración de datos externos y servicios. BCS se genera sobre su predecesor BDC en las áreas clave de presentación, conectividad, herramientas y administración del ciclo de vida. Por ejemplo, en SharePoint 2010 es fácil crear un tipo de contenido externo con SharePoint Designer, crear una lista externa en la interfaz de usuario Web de SharePoint y tener la lista sin conexión en Outlook como un conjunto de contactos. Además, puede realizar actualizaciones a los contactos de Outlook que hará que los datos en el sistema externo para actualizar también.

Arquitectura BCS

figura 1 muestra los componentes clave que componen BCS.

Business Connectivity Services Architecture

Figura 1 de arquitectura de servicios de conectividad de negocio

  • Almacén de metadatos de BDC – Del almacén de metadatos de BDC proporciona almacenamiento para una colección de tipos de contenido externos, cada uno de los cuales describe cómo conectar con el almacén externo. El almacén de metadatos actúa como parte de la capa de servicios. Tipos de contenido externos son una pieza fundamental de BCS.
  • BDC Server Runtime – El BDC Server Runtime sabe cómo llegar en el almacén de servicios de fondo y conectarse a datos basados en los tipos de contenido externos definidos dentro del almacén de tipo de contenido. Es importante destacar el nuevo uso del acrónimo BDC para hacer referencia al conjunto de servicios que proporciona conectividad que es un componente de BCS.
  • Seguridad – BCS proporciona integración con el servicio de almacén Secure (SSS), así como habilitar su propio modelo de seguridad.
  • Empaquetado de solución – Soluciones creadas con BCS pueden empaquetarse como un Visual Studio Tools para Office (VSTO) paquete entrega a un cliente enriquecido, incluyendo el área de SharePoint, Outlook y Word. BCS también expone las API para ampliar el empaquetado de solución para clientes adicionales de destino.
  • Fuera de la IU de cuadro – BCS lleva hacia delante a la capacidad de mostrar datos externos mediante una interfaz de usuario de elementos Web y proporciona una mayor integración a través de la adición de listas externas.
  • BDC Client Runtime – Un tiempo de ejecución simétrico se proporciona para el cliente y servidor, lo que permite tomar las soluciones con una caché de cliente y para conectar y cambios de inserción en el servidor de una manera coherente. Uso de BDC Client Runtime permite operaciones sin conexión, interactuar con la caché de datos externo.
  • Herramientas de diseño – SharePoint Designer proporciona una gran cantidad de funciones de fábrica para crear soluciones BCS, incluida la capacidad para definir tipos de contenido externos y listas externas y para definir los formularios de InfoPath que los datos para crear soluciones sencillas de superficie. Visual Studio proporciona la capacidad para el desarrollador profesional extender esas capacidades para crear soluciones avanzadas mientras aprovechando el marco de trabajo existente.

Estas inversiones en la arquitectura BCS permiten la interacción con capacidades adicionales en la plataforma SharePoint, incluida la inteligencia empresarial, administración de contenido empresarial, colaboración y características sociales y búsqueda empresarial. Además, el uso de BCS proporciona una atractiva plataforma de desarrollador que permite la creación de soluciones rápidamente aprovechar estas capacidades.

La primera vez vi BCS, dos cosas saltó inmediatamente fuera en mí. En primer lugar, desde la perspectiva del desarrollador, ahora es increíblemente fácil externo datos sin conexión a través de las soluciones de cliente inteligente que se distribuyen fácilmente debido a la generación de complementos VSTO que aprovechan las capacidades de ClickOnce en Microsoft.NET Framework. La segunda cosa realmente superado es la inclusión de una caché de cliente que aprovecha SQL Compact como su almacén permanente y proporciona la capacidad para sincronizar cambios a y desde la solución de cliente con el sistema externo. Esto debe proporcionar un sentido fuerte de confiabilidad a los desarrolladores ya que aprovecha las tecnologías probadas y ampliamente adoptadas.

Una vez reconoce que BCS esencialmente proporciona conectividad a datos externos, un cliente simétrico y tiempo de ejecución de servidor para interactuar con los datos y empaquetado para soluciones BCS para utilizarse con aplicaciones de cliente inteligente, puede ver inmediatamente soluciones puede integrar con sistemas existentes y proporciona completas capacidades de rápidamente a los usuarios finales.

También debería ser evidente para cualquier persona familiarizada con su predecesora que BCS abarca más escenarios que simplemente conectarse a datos, lo que una elección muy atractiva para los desarrolladores habilitar soluciones. El resto de este artículo tratan la creación de tipos de contenido externos y las capacidades sin conexión de BCS en más detalle.

Descripción de tipos de contenido externos

El concepto de tipos de contenido externos es fundamental para BCS. Windows SharePoint Services 3 introdujo el concepto de un tipo de contenido para describir un esquema reutilizable para listas. Un tipo de contenido externo extiende esta noción describiendo el esquema así como las capacidades de acceso de datos de un sistema externo y su comportamiento dentro de Office y SharePoint. Puede que piense de un tipo de contenido externo como asignación entre SharePoint y el sistema externo, que describe las entidades y comportamientos del origen de datos.

Un tipo de contenido externo se define mediante metadatos en una gramática XML que se implementa en el almacén de metadatos de BDC. Para los que están familiarizados con el BDC en MOSS 2007, este concepto se conocía anteriormente como una entidad de BDC, pero el concepto se ha ampliado para incluir cómo los datos externos se comportan dentro de SharePoint y Office.

SharePoint Designer 2010 ofrece una interfaz sencilla para crear rápidamente tipos de contenido externos y crear externas listas basadas en estos tipos de contenido externos. ¿Por qué, a continuación, utilizaría Visual Studio para crear un tipo de contenido externo?  En ocasiones necesitará hacer algo que SharePoint Designer 2010 no ofrece de fábrica. Creación tipos personalizados de contenido externos es útil en escenarios de agregación donde realizar varias llamadas para el mismo sistema externo, realizar varias llamadas a varios sistemas externos o incluso leer de un sistema externo y escribir a otro. Crear tipos de contenido externos personalizados también es útil para transformaciones complejas, donde no hay ninguna asignación clara entre el formato de los datos en el sistema externo y cómo deben presentarse dentro de SharePoint. Podría implementar código de seguridad personalizado o incluso implementar lógica empresarial personalizada necesaria para interactuar con un sistema de fondo complejas.

Los profesionales de TI pueden usar SharePoint Designer 2010 para crear un tipo de contenido externo que consume y escribe datos en SQL Server, un servicio de Windows Communication Foundation (WCF) o un tipo .NET. Esto permite la creación de soluciones sencillas rápidamente por profesionales IT, permitiéndoles consumir datos desde orígenes que han expuesto los desarrolladores. Por ejemplo, un profesional de TI podría abrir 2010 de SharePoint Designer, haga clic en tipos de contenido externo en el panel de exploración de la izquierda, haga clic en el botón nuevo tipo de contenido externo en la cinta de opciones y haga clic en el vínculo “ haga clic aquí para descubrir los orígenes de datos externos y definir operaciones ”. En el cuadro de diálogo Diseñador Operation resultante, puede agregar una conexión a una tabla de base de datos y, a continuación, haga clic con el botón secundario del mouse en la tabla “ crear todas operaciones ” para crear métodos para leer, seleccione una única actualización de registro y incluso eliminar filas de una tabla de base de datos (en caso de que tenga las credenciales adecuadas para ello, por supuesto). Para ver este aspecto, vea de figura 2.

Creating Operations Using SharePoint Designer 2010

Figura 2 de crear operaciones con SharePoint Designer 2010

Un tipo de contenido externo es realmente una descripción reutilizable de datos externos para que pueda participar como una entidad de Office nativa en varias aplicaciones, como:

  • SharePoint como lista externa
  • Outlook
  • Área de trabajo de SharePoint
  • Word
  • InfoPath
  • Access
  • Otras aplicaciones de Office a través del código

Esto es una capacidad muy eficaz, habilitar los trabajadores del conocimiento conectar sistemas externos de SharePoint y a la superficie de datos de forma legible y se puede escribir a través de varios tipos de aplicaciones de cliente. Esto también proporciona una oportunidad para que los desarrolladores conocimiento permite adecuadas los trabajadores del conocimiento con soluciones que realizan operaciones complejas no es posibles cuando se utiliza SharePoint Designer 2010 por sí mismo, como la agregación de datos de varios orígenes, proporciona transformaciones complejas, evaluar los requisitos de seguridad personalizado o lógica empresarial compleja o llamar varias veces a sistemas muy interesante para proporcionar una vista única de datos.

A medida que trabaje con el marco BCS y lee la documentación o artículos en BCS diversos, probablemente observará el uso de los de tipo de contenido externo de términos y de entidad ambiguo. Son uno mismos. La entidad de término existía en el entorno de SharePoint 2007 y aún existe en el nivel de la API de tiempo de ejecución. Este término suele utilizarse en entornos que satisfacer principalmente los desarrolladores, en oposición al uso de tipo de contenido externo en entornos como SharePoint Designer 2010 que satisfacer varias audiencias. No confundirse cuando las herramientas o la documentación parecer cambiar entre tipo de contenido externo de y entidad ─they significa lo mismo.

Creación de una entidad con Visual Studio 2010

Mire Let’s un escenario de agregación para comprender mejor la función de un tipo de contenido externo desde la perspectiva del desarrollador. Vamos a usar la API Twitter como ejemplo de un servicio RESTful que expone datos sobre clientes, y utilizaremos una base de datos personalizada que imita un sistema de administración (CRM) de relación de cliente para incluir información adicional acerca de nuestros clientes, como la última fecha de compra y último importe de compra. Nos se agregan los datos de estos dos orígenes externos juntos y presentan datos en una lista de SharePoint forma transparente al usuario final.

En el cuadro de diálogo nuevo proyecto en Visual Studio 2010, elija “ Business Data Model de conectividad ” y utilizar el nombre del proyecto “ Msdn.Samples.BCS ”. El Asistente para nuevo proyecto le pedirá que elija un sitio de SharePoint a utilizar para la depuración. Por último, Visual Studio 2010 finaliza código para una entidad, un servicio de entidad, la definición de modelo y un archivo de diagrama utilizado para admitir la superficie de diseño de Visual Studio.

El archivo Entity1.cs describe el esquema para la entidad y se modela como una clase típica con propiedades públicas. El archivo Entity1Service.cs proporciona la implementación de métodos CRUD (Create, Read, Update, DELETE), de los cuales se crean dos métodos para usted como ejemplos. El primer método creado es ReadItem, que permite recuperar un registro específico del almacén externo basado en un identificador. Esto se asigna a los metadatos XML como una instancia de método de tipo “ SpecificFinder. ” El segundo método que se crea es ReadList, que recupera todos los registros desde el almacén externo. Se asigna en los metadatos XML como una instancia del método “ Finder ”. Éstos son los dos métodos mínimos que su entidad debe implementar para servir como un conector para BCS.

La entidad de modelado

Iniciar Let’s haciendo cambios en la propia entidad. Reemplace la clase de entidad con el código que se muestra en de figura 3.

Figura 3 de código de reemplazo para la clase de entidad

namespace Msdn.Samples.BCS.SocialModel
{    
public partial class Customer
    {        
public int CustomerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }        


//Twitter specific properties
public string TwitterScreenName { get; set; }             
public string TwitterStatus { get; set; }

//CRM specific properties
public DateTime DateLastPurchase { get; set; }
public decimal AmountLastPurchase { get; set; }
    }
}

Cambie a la superficie de diseño de la entidad abriendo el archivo .bdcm en el panel Explorador de soluciones y observe que reemplazar el código no afecta a la entidad en la superficie de diseño. La entidad en la superficie de diseño representa los metadatos. Es nos proporcionan parte de la asignación entre los metadatos que espera de SharePoint y nuestro código. Cambie el nombre de entidad a “ Customer ” en el modelado del superficie de diseño. A continuación, haga clic en el identificador de entidad Identifier1, cámbiele el nombre a CustomerID y cambiar su tipo a System.Int32. Ahora nos hemos instruir SharePoint que nuestro entidad Customer tiene un identificador denominado CustomerID que es un entero, y esta entidad se asigna a nuestra clase de cliente.

Los métodos de modelado

Ahora que nos hemos modela nuestro entidad, necesitamos modelar sus métodos. Como se mencionó anteriormente, Visual Studio crea dos métodos para nosotros proporcionar funcionalidad mínima denominada ReadItem y ReadList. Resulta más fácil eliminar primera ambos de estos métodos desde el panel de detalles de método de BDC y, a continuación, cree nuevos métodos con los nombres que desee en su lugar. Esto le ofrece una pizarra limpio para trabajar con para ver cómo se realiza la asignación. Para ello, abra el panel de detalles del método BDC, haga clic en el método ReadList y el botón Eliminar. Lo mismo para ReadItem. Nota de precaución: He encontrado que no desea realizar estas operaciones en el Diseñador de entidad propia, en su lugar, teniendo cuidado de realizar modificaciones mediante el panel de detalles del método BDC o el panel Explorador de BDC siempre que sea posible.

Comenzaremos por el método SpecificFinder, que utiliza SharePoint para recuperar una lista de todos los elementos de nuestra lista de modelado. Ahora que tiene una pizarra para trabajar con limpio, haga clic en el texto en el panel de detalles del método BDC “ < agregar un método > ”. Haciendo clic en ese texto presentará una flecha desplegable y hacer clic en nuevo presentará una lista de tipos de método para crear. Elija “ crear Specific Finder Method ” opción y se creará un método denominado ReadItem, sus parámetros y una instancia de método. En el mismo panel, observe que hay tres columnas: Nombre, dirección y descriptor de tipo y el parámetro devuelto tiene un descriptor de tipo denominado cliente. Haga clic en el descriptor de tipos de cliente y busque en el panel de propiedades para ver que la propiedad nombre de tipo actualmente es System.String. Es necesario indicar a SharePoint que se devuelva nuestro nuevo tipo de cliente, cambie este valor para “ Msdn.Samples.BCS.Customer ” Msdn.Samples.BCS.

Esto es una buena ocasión para destacar el panel Explorador de BDC. Este panel proporciona una vista jerárquica de nuestro modelo, sus entidades y sus métodos. Expanda el método ReadItem y verá el parámetro “ cliente ” con un nodo secundario “ Customer ” que representa el descriptor de tipos. Necesitamos agregar descriptores de tipo adicionales como elemento secundario para representar nuestro tipo complejo. Se trata de una operación sencilla, simplemente haga clic con el botón secundario en el descriptor de tipos “ Customer ” en el Explorador de BDC y elija “ agregar descriptores de tipo. ” Cambie el nombre a su tipo a System.Int32 y CustomerID. Repita este proceso, agregando los descriptores de tipo con el nombre adecuado y el tipo para reflejar la clase Customer que creó anteriormente. Una vez que haya creado todos los descriptores de tipo, haga clic en el descriptor de tipos de CustomerID y establezca su propiedad de identificador para CustomerID y su propiedad de sólo lectura en True. El producto final debería parecerse de figura 4.

Using the BDC Explorer Pane to Set Properties of the TypeDescriptors

Figura 4 de usar el panel Explorador BDC para establecer propiedades de los TypeDescriptors

El siguiente paso es crear el método que devolverá la lista completa de los clientes. Puesto que ya que hemos realizado el trabajo para definir el tipo de cliente y sus descriptores de tipo, el siguiente paso es fácil. Volver al panel de detalles de método de BDC y haga clic en el texto “ < agregar un método > ” y seleccione la opción “ Crear método Finder ”. Se crea un nuevo método denominado “ ReadList ” y su tipo es una lista genérica de objetos Customer. Además, los descriptores de tipo ya están definidos para nosotros, lo ahora nos podemos centrar en la implementación de estos métodos.

Implementar los métodos

Nuestro escenario nos requiere para agregar datos de un origen en línea: Twitter — y un almacén independiente, una base de datos de SQL Server. He implementado una clase auxiliar denominada TwitterHelper para facilitar la obtención de datos de Twitter y llenado en nuestro tipo de entidad Customer. El método GetChannelWithCredentials ayuda a nosotros para usar WCF y programación capacidades llamar fácilmente al Twitter mediante un conjunto específico de credenciales de su Web. El método GetCustomersFromTwitter devuelve una lista de usuarios y su estado actual y almacena los datos en una lista de objetos Customer. El método GetCustomerFromTwitterByScreenName recupera un único usuario de Twitter basándose en el nombre del usuario pantalla y devuelve los datos en un único objeto Customer. En de figura 5 se muestra el código para el TwitterHelper.

Figura 5 de La clase de TwitterHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Channels;
using System.Xml.Linq;

namespace Msdn.Samples.BCS.SocialModel
{
    [ServiceContract]
public interface ITwitterFriends
    {
        [OperationContract]
        [WebGet(UriTemplate="/statuses/friends.xml")]
        Message GetAllFriends();

        [OperationContract]
        [WebGet(UriTemplate = "/users/show.xml?screen_name={screenName}")]
        Message GetFriendByID(string screenName);

    }

public class TwitterHelper
    {
public static List<Customer> GetCustomersFromTwitter()
        {
var cf = GetChannelWithCredentials();

using(cf)
            {
                ITwitterFriends proxy = cf.CreateChannel();
                Message m = proxy.GetAllFriends();

List<Customer> customers =
                        (from user in XDocument.Load(m.GetReaderAtBodyContents()).Root.Elements("user")
select new Customer
                         {
                             TwitterScreenName = user.Element("screen_name").Value, 
                             TwitterStatus = user.Element("status").Element("text").Value
                         }).ToList();

return customers;
            }
        }

public static Customer GetCustomerFromTwitterByScreenName(string screenName)
        {
var cf = GetChannelWithCredentials();

using (cf)
            {

                ITwitterFriends proxy = cf.CreateChannel();
                Message m = proxy.GetFriendByID(screenName);

                XElement user = XDocument.Load(m.GetReaderAtBodyContents()).Root;

                Customer c = new Customer
                {
                    TwitterScreenName = user.Element("screen_name").Value,                    
                    TwitterStatus = user.Element("status").Element("text").Value
                };

return c;
            }
        }

private static WebChannelFactory<ITwitterFriends> GetChannelWithCredentials()
        {
            WebHttpBinding binding = new WebHttpBinding(WebHttpSecurityMode.TransportCredentialOnly);
            binding.MaxReceivedMessageSize = 999999;
            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
            binding.Security.Transport.Realm = "Twitter API";

            Uri location = new Uri("http://www.twitter.com");
            WebChannelFactory<ITwitterFriends> cf = new WebChannelFactory<ITwitterFriends>(binding, location);
            cf.Credentials.UserName.UserName = "your_twitter_screenname_here";
            cf.Credentials.UserName.Password = "your_password_here";

return cf;
        }

    }
}

Nuestra tabla de base de datos es bastante simple; aquí es su esquema:

CREATE TABLE [dbo]. [cliente] ()
[IdCliente] [int] IDENTITY(1,1) NO NULL
[Nombre] [nvarchar](50) NO ES NULL,
[Apellidos] [nvarchar](50) NO ES NULL,
[TwitterScreenName] [nvarchar](100) NO NULO
[DateLastPurchase] [fecha] NO NULO
[AmountLastPurchase] [decimal]NO NULO (18,0))

Para consultar los datos fácilmente, he agregado un LINQ para SQL clase en mi proyecto y señalado en la tabla de base de datos de cliente para generar un archivo dbml. Mi primer método, GetCustomer, usa LINQ to SQL para consultar la base de datos para un solo registro de cliente y, a continuación, obtiene el estado actual de ese usuario de Twitter. Los métodos GetCustomer y GetCustomerList se detallan en de figura 6. El paso final consiste en presionar F5 para implementar nuestro tipo de contenido externo e iniciar la depuración, lo que permite establecer puntos de interrupción en el código para asegurarse de que todo funciona correctamente.

Figura 6 de la GetCustomer y métodos de GetCustomerList

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;



namespace Msdn.Samples.BCS.SocialModel
{
public partial class CustomerService
    {
private const string CONNECTION_STRING = @"Data Source=moss2010demo\sqlserver;Initial Catalog=CustomerCRM;Integrated Security=True";

public static Customer GetCustomer(int customerID)
        {            
//Pull from database, then pull from Twitter
using (CustomerCRMDataContext db = new CustomerCRMDataContext(CONNECTION_STRING))
            {
                Customer customer = (from c in db.Customers
where c.CustomerID == customerID
select new Customer
                     {
                         CustomerID = c.CustomerID,
                         FirstName = c.FirstName,
                         LastName = c.LastName,
                         AmountLastPurchase = c.AmountLastPurchase,
                         DateLastPurchase = c.DateLastPurchase,
                         TwitterScreenName = c.TwitterScreenName
                     }).FirstOrDefault();

                Customer friend = TwitterHelper.GetCustomerFromTwitterByScreenName(customer.TwitterScreenName);
                customer.TwitterStatus = friend.TwitterStatus;                
return customer;
            };

        }

public static IEnumerable<Customer> GetCustomerList()
        {
//Pull all friends from Twitter, 
// then only return friends that also have CRM records
List<Customer> friends = TwitterHelper.GetCustomersFromTwitter();

List<Customer> customers = new List<Customer>();

using (CustomerCRMDataContext db = new CustomerCRMDataContext(CONNECTION_STRING))
            {
foreach (Customer friend in friends)
                {
var cust = db.Customers.FirstOrDefault(c => c.TwitterScreenName == friend.TwitterScreenName);
if (null != cust)
                    {
                        customers.Add(new Customer
                        {
                            CustomerID = cust.CustomerID,
                            FirstName = cust.FirstName,
                            LastName = cust.LastName,
                            AmountLastPurchase = cust.AmountLastPurchase,
                            DateLastPurchase = cust.DateLastPurchase,
                            TwitterScreenName = cust.TwitterScreenName,
                            TwitterStatus = friend.TwitterStatus
                        });
                    }
                }
return customers;
            };                        
        }

    }
}

Un punto interesante que he mencionado ya es la capacidad de realizar cambios en un cliente sin conexión y sincronizarlas volver al almacén de datos externo. Esto puede realizarse mediante la implementación de un método de actualización. Para ello, simplemente agregar un nuevo método de actualización para el panel de detalles del método BDC. Cuerpo de un ejemplo del método Updater aspecto el código se muestra en de figura 7:

Figura 7 de un método de actualización para sincronizar cambios

public static void Update(Customer customer)
{
//Update only the CRM database information
using (CustomerCRMDataContext db = new CustomerCRMDataContext(CONNECTION_STRING))
    {
var cust = db.Customers.Single(c => c.CustomerID == customer.CustomerID);
    cust.AmountLastPurchase = customer.AmountLastPurchase;
    cust.DateLastPurchase = customer.DateLastPurchase;
    db.SubmitChanges();
    };
}

Como puede ver, las herramientas en Visual Studio 2010 hace muy fácil crear tipos de contenido externos grabables.

Creación de una lista y realizar IT sin conexión

Hasta ahora, hemos creado sólo el tipo de contenido externo. Todavía no hemos creado una lista para representar una instancia del tipo de contenido externo. Porque nos presionar F5 para implementar nuestro tipo de contenido externo en el paso anterior, ahora debe buscar en su sitio de SharePoint que el depurador está conectado a. En el sitio acciones acciones del sitio haga clic en la esquina superior izquierda de la pantalla, la opción “ Ver todo el contenido del sitio ”. Una vez que se muestra la página viewlsts.aspx, haga clic en el vínculo “ crear ” que pondrá un nuevo cuadro de diálogo que le permite crear varios tipos diferentes de contenido. Elegir lista externos del conjunto de los elementos instalados y haga clic en el botón crear. En la página resultante, puede proporcionar el nombre para la nueva lista y elegir un tipo de contenido externo existente de una lista (consulte de figura 8).

Creating a List Using an External Content Type

Figura 8 de crear una lista con un tipo de contenido externo

Después de presionar el botón Crear, debe ser aparece finally con una lista de SharePoint que muestra los frutas de sus labors como una lista de datos en SharePoint (consulte de figura 9).

A List Built Using an External Content Type

Figura 9 de lista creada mediante un tipo de contenido externo

Desconectar de la lista

Una de las enormes mejoras para conectividad externa en SharePoint 2010 es la capacidad de tomar listas sin conexión y sincronizar los datos. El siguiente paso es abrir SharePoint Designer 2010, por lo que podemos ver cómo funcionan conjuntamente el desarrollador y funciones profesionales de TI en la creación de soluciones de tipo de contenido externo.

Como vimos al principio del artículo, un trabajador del conocimiento puede utilizar SharePoint Designer 2010 para crear o consumir tipos de contenido externos. Abra el sitio de SharePoint con SharePoint Designer 2010 y haga clic en el vínculo de tipos de contenido externo en el panel de exploración. Verá que nuestro tipo Msdn.Samples.BCS.SocialModel.Customer enumerado como uno de los tipos de contenido externos que escoger. Clic que vínculo y se toman a la vista de resumen para nuestro tipo de contenido externo donde podemos ver los métodos hemos definido en metadatos y se implementa en código.

En la sección información de tipo de contenido externo de esta página, verá una lista desplegable para especificar el tipo de elemento de Office. Haga clic en esta lista desplegable para mostrar las siguientes opciones:

  • Lista genérica
  • Appointment
  • Contact
  • Tarea
  • Post

Esta lista permite representar los datos de un tipo de contenido externo como uno de estos tipos, que a su vez influirá cómo se muestra y se sincronizan los datos. Por ejemplo, seleccionando el tipo de contacto permite tener la lista sin conexión en Outlook, representado como una lista de contactos. De forma similar, si los datos se parece a un elemento del calendario, puede modelar como una cita en Outlook. Esto proporciona una integración segura entre Outlook como un cliente sin conexión para los datos de SharePoint, proporcionando al mismo tiempo la capacidad de actualizar datos y sincronizar en el origen de datos externos. Para asignar los datos como un contacto en Outlook, cambie la colocación de tipo de producto de Office a Contact. Esto generará una nueva advertencia indicarnos que las asignaciones son incorrectas. Haga doble clic en el método GetCustomer para mostrar el cuadro de diálogo de asignación. Haga clic en Siguiente hasta llegar a la pantalla Configuración de parámetros de devolución. El requisito mínimo para la asignación de un tipo de contacto es asignar el último parámetro de nombre. Para ello, haga clic en la propiedad LastName en la vista de árbol de elementos del origen de datos y de la derecha, cambiar la propiedad de Office a la propiedad LastName. Mientras estamos aquí, la propiedad FirstName se asignan a la propiedad FirstName Office. Los resultados se muestran en la figura 10.

Mapping Data Source Elements to Office Properties

Figura 10 de elementos de origen de datos de asignación a propiedades de Office

Una vez te proporcionamos la asignación a un tipo Office, nos podemos ir a la interfaz de usuario Web para SharePoint, haga clic en la sección listas en la IU de la cinta de opciones y elija “ conectar con Outlook. ” Esto hará que una solicitud para SharePoint para crear un paquete VSTO para esta lista que está instalada en el escritorio local como agregar un Outlook - en (consulte de figura 11).

ClickOnce is Used to Provide an Offline Experience for External Content Types

Figura 11 de ClickOnce se utiliza para proporcionar una experiencia sin conexión en externos tipos de contenido

Una vez instalado el paquete VSTO, el usuario final se abre el elemento de contacto simplemente como cualquier otro elemento de contacto en Outlook y las propiedades de nombre y apellidos se asignan en consecuencia, como se puede ver en de figura 12.

The Data from our External Entity is Available in Outlook, with Custom Field Data Preserved in a Pane at the Bottom

Figura 12 de los datos desde nuestro entidad externa está disponible en Outlook, con datos campo personalizado preservan en un panel en la parte inferior

Además, se conservan los datos adicionales y se muestra en el formulario de contacto, proporcionar un lugar fácil realizar actualizaciones y guardarlos en la caché local que se sincronizarán con el sistema externo en un momento posterior. Este paquete VSTO se entrega mediante ClickOnce, por lo que obtener las mismas ventajas de usar la tecnología ClickOnce, incluida la capacidad de desinstalar el complemento mediante el cuadro de diálogo de agregar o quitar programas en Windows.

Posibilidades ilimitadas

Las capacidades de BCS en SharePoint 2010 son tantas que podría fácilmente escribo un libro completo en el asunto. Encontré difícil elegir una serie de temas para resaltar en este artículo. Se presentó una gran cantidad de temas y no se inició incluso cubrir las muchas otras posibles áreas, como proporcionar sus propios formularios mediante InfoPath que se va a mostrar en área de SharePoint, obtener acceso a datos BCS mediante el tiempo de ejecución cliente de BDC, cómo se podría desarrollar su propio complemento de VSTO para traer las capacidades BCS para Excel 2010, mediante la seguridad basada en solicitudes con BCS o integración con el servicio Almacén de Secure.

Hay por lo que muchas posibilidades, estoy seguro de que BCS servirá como el tema para muchos artículos y libros para proceder a través de los próximos años. Al igual que cuando se pase un mouse (ratón) en una cookie, una vez iniciar con BCS, deseará hacer más con esta fascinante tecnología.

Kirk Evans es un arquitecto de la industria para la práctica de Communications Sector. de Microsoft. Trabaja con compañías de medios más grandes, telcos, editores y agencias de publicidad para crear soluciones específicas del sector. Visite el blog del Kirk en blogs.msdn.com/kaevans de.

Gracias a los siguientes expertos técnicos para revisar este artículo: Lionel Robinson y Brad Stevenson