Este artigo foi traduzido por máquina.

Usando os Serviços Corporativos de Conectividade no SharePoint 2010

Kirk Evans

Um dos livros favoritos ’ meus filhos é chamado Se você fornece um mouse um cookie pelo catálogo Laura Numeroff─a crianças baseado a noção de inclinação suspeito que se dar um mouse um cookie, ele pedirá para Leite, percebendo a que ele é thirsty. Quando ele drinks o Leite, ele pedirá para um espelho depois alguns tesoura e um broom e, em seguida, alguns lápis-cera e no e no, solicitando um novo item após ele percebe o utilitário do item ele tem atualmente.

É como vejo que muitos usuários progredindo junto cronograma adoção com SharePoint: eles começam lentamente, carregando alguns documentos e andamento usando formulários e fluxos de trabalho e finalmente desejam superfície dados externos em seu site. Não é até ver como é fácil um tarefa era realizar decidir ir para próximo desafio.

É um cenário comum: Tenho um portal, tenho alguns dados externos e desejo integrar dados em meu portal de maneira significativa. Office SharePoint Server 2007 (MOSS 2007) introduziu o BDC (catálogo de dados de Business) para facilitar esse cenário exato: torna fácil para dados externos a superfície dentro de uma experiência de portal. Por exemplo, você pode criar um arquivo de definição XML que define o mapeamento entre o SharePoint e seus dados externos para que ele pode ser processado em uma Web Part, usado como uma coluna dentro de uma lista e mesmo integrado a pesquisa.

Quando Mostrar empresas como eles podem usar o BDC para mapear para aplicativos de linha de negócios existentes, a lâmpada geralmente ativa após Mostrar resultados de pesquisa incluem pessoas, documentos, dados de lista e dados de seu system─all LOB existente dentro do mesmo conjunto de resultados.

Embora o BDC no MOSS 2007 habilitada conectividade para sistemas externos, era difícil criar soluções devido à falta de um designer. Além disso, embora o BDC feitas relativamente fácil criar soluções de somente leitura que exibem dados em Web Part de lista de dados comerciais, não foi tão simples criar uma solução habilitado usuários para fazer alterações e gravar dados novamente para o armazenamento externo.

Serviços de conectividade de negócios (BCS) no SharePoint 2010 é tudo sobre conectando a dados externos. BCS aprimora os recursos da plataforma SharePoint com recursos de fora da caixa, serviços e ferramentas que simplificam o desenvolvimento de soluções com profunda integração de dados externos e serviços. O BCS é um aprimoramento de seu predecessor BDC nas principais áreas de apresentação, conectividade, ferramentas e gerenciamento do ciclo de vida. Por exemplo, no SharePoint 2010 é fácil criar um tipo de conteúdo externo com o SharePoint Designer, criar uma lista na interface de usuário de Web do SharePoint e levar a lista offline em Outlook como um conjunto de contatos. Além disso, você pode fazer atualizações contatos no Outlook que fará com que os dados no sistema externo para atualizar bem.

Arquitetura BCS

Figura 1 demonstra os principais componentes que compõem o BCS.

Business Connectivity Services Architecture

Figura 1 do Business Connectivity Services Architecture

  • Armazenamento de metadados do BDC – O BDC metadados Store fornece armazenamento para uma coleção de tipos de conteúdo externos, cada qual descreve como se conectar ao armazenamento externo. O armazenamento de metadados atua como parte da camada de serviços. Tipos de conteúdo externos são um bloco de construção fundamental de BCS.
  • BDC Server Runtime – O BDC Server Runtime entende como chegar no armazenamento de back-end e se conectar a dados com base em tipos de conteúdo externos definidos dentro de armazenamento do tipo de conteúdo. É importante observar o uso do novo de acrônimo BDC para consultar o conjunto de serviços que fornece conectividade é um componente BCS.
  • Segurança – BCS fornece integração com o serviço de armazenamento Secure (SSS), bem como habilitar seu próprio modelo de segurança.
  • Compactação de solução – Soluções criadas com BCS pode ser empacotado como um Visual Studio Tools para Office (VSTO) pacote a ser entregue a um cliente rich, incluindo Workspace do SharePoint, o Outlook e o Word. BCS também expõe APIs para estender o empacotamento da solução para direcionar clientes adicionais.
  • De caixa UI – BCS carrega com a capacidade de exibir dados externos por meio de uma Web Part UI e fornece mais profunda integração por meio da adição de listas externas.
  • BDC Client Runtime – Um runtime simétrico é fornecido para cliente e servidor, permitindo que você tomar soluções offline com um cache do lado do cliente para se conectar e empurrar alterações de volta para o servidor de maneira consistente. Uso do BDC Client Runtime permite operações offline, interagindo com o cache de dados externos.
  • Ferramentas de design – O SharePoint Designer fornece uma profusão de funcionalidades de fora da caixa para criar soluções BCS, incluindo a capacidade para definir tipos de conteúdo externos e listas externas e para definir dados para criar soluções simples de superfície de formulários do InfoPath. O Visual Studio fornece a capacidade para o desenvolvedor profissional estender esses recursos para criar soluções avançadas ao aproveitando a estrutura existente.

Esses investimentos na arquitetura BCS habilitar a interação com recursos adicionais na plataforma SharePoint, incluindo business intelligence, gerenciamento de conteúdo empresarial, colaboração e recursos sociais e pesquisa empresarial. Além disso, o uso de BCS fornece uma plataforma de desenvolvedor atraentes que permite a criação de soluções para tirar proveito desses recursos rapidamente.

Na primeira vez, vi BCS, duas coisas entrou imediatamente em mim. Primeiro, da perspectiva do desenvolvedor, agora é incrivelmente fácil levar dados externos offline por meio de soluções de cliente inteligente facilmente distribuídos devido a geração de suplementos VSTO que aproveitam os recursos do ClickOnce no Microsoft .NET Framework. A segunda coisa realmente significava é a inclusão de um cache do lado do cliente que aproveita SQL Compact como seu armazenamento durável e fornece a capacidade de sincronizar alterações e a solução do lado do cliente com o sistema externo. Isso deve fornecer um forte senso de confiabilidade aos desenvolvedores porque aproveita tecnologias comprovadas e amplamente adotadas.

Depois que você reconhece que BCS essencialmente fornece conectividade de dados externos, um cliente simétrico e servidor runtime para interagir com dados e embalagem BCS soluções para ser usado com aplicativos de cliente inteligente, você pode ver imediatamente soluções integram a sistemas existentes e fornecer recursos ricos rapidamente aos usuários finais.

Também deve ser aparente para qualquer pessoa familiarizada com sua predecessora BCS abrange cenários mais que simplesmente conectar-se a dados, tornando uma opção muito atraente para os desenvolvedores habilitar soluções. O restante deste artigo discutirei a criação de tipos de conteúdo externos e recursos offline do BCS em mais detalhes.

Noções básicas sobre tipos de conteúdo externos

O conceito de tipos de conteúdo externos é fundamental para BCS. Windows SharePoint Services 3 introduziu o conceito de um tipo de conteúdo para descrever um esquema reutilizável para listas. Um tipo de conteúdo externo estende essa noção descrevendo o esquema bem como os recursos de acesso de dados de um sistema externo e seu comportamento dentro do Office e SharePoint. Você pode pensar um tipo de conteúdo externo como o mapeamento entre o SharePoint e o sistema externo, descrevendo as entidades e comportamentos da fonte de dados.

Um tipo de conteúdo externo é definido usando metadados em uma gramática XML é implantada para o armazenamento de metadados do BDC. Para esses familiarizado com o BDC no MOSS 2007, este conceito era conhecido anteriormente como uma entidade do BDC, mas o conceito foi expandido para incluir como os dados externos se comporta dentro do SharePoint e Office.

SharePoint Designer 2010 oferece uma interface simples para criar rapidamente os tipos de conteúdo externos e criar listas externas com base nesses tipos de conteúdo externos. Por que, em seguida, você usaria Visual Studio para criar um tipo de conteúdo externo?  Às vezes você precisa fazer algo que o SharePoint Designer 2010 não fornece da caixa. Criar tipos de conteúdo externos personalizados é útil em cenários de agregação onde fazer várias chamadas para o mesmo sistema externo, fazer várias chamadas para vários sistemas externos ou até mesmo ler de um sistema externo e escrever para outro. Criar tipos de conteúdo externos personalizados também é útil para transformações complexas, onde não há nenhum mapeamento claro entre o formato dos dados de sistema externo e como deve ser apresentado no SharePoint. Pode implementar o código de segurança personalizado ou até mesmo implementar a lógica de negócios personalizados necessária para interagir com um sistema back-end complexos.

Profissionais de TI podem usar o SharePoint Designer 2010 para criar um tipo de conteúdo externo que consome e grava dados SQL Server, um serviço Windows Communication Foundation (WCF) ou um tipo .NET. Isso permite a criação de soluções simples rapidamente por profissionais de TI, permitindo que eles consomem dados de fontes que os desenvolvedores têm expostos. Como exemplo, um profissional de TI seria abrir SharePoint Designer 2010, clique em tipos de conteúdo externo no painel de navegação à esquerda, clique no botão novo tipo de conteúdo externo da faixa de opções e clique no link “ clique aqui para descobrir a fontes de dados externos e definir operações ”. Na caixa de diálogo resultante do Designer de operação, você pode adicionar uma conexão a uma tabela de banco de dados e clique com o botão direito do mouse na tabela para “ Create All operações ” para criar métodos para leitura, selecione uma única atualização de registro e até mesmo excluir linhas de uma tabela de banco de dados (fornecendo a você tiver credenciais adequadas para fazer isso, obviamente). Para ver essa aparência, consulte do Figura 2.

Creating Operations Using SharePoint Designer 2010

Figura 2 Criando operações usando o SharePoint Designer 2010

Um tipo de conteúdo externo é realmente uma descrição reutilizável de dados externos para permitir que ele participe como uma entidade Office nativa em vários aplicativos, como:

  • SharePoint como lista externa
  • Outlook
  • Espaço de trabalho do SharePoint
  • Word
  • InfoPath
  • Access
  • Outros aplicativos do Office via código

Essa é uma capacidade incrivelmente poderosa, habilitando profissionais especializados conectar sistemas externos do SharePoint e a superfície de dados de maneira legível e gravável através de vários tipos de aplicativos cliente. Isso também fornece uma oportunidade muito interessante para desenvolvedores capacitam trabalhadores do conhecimento com soluções executam operações complexas não é possíveis ao usar o SharePoint Designer 2010 por si só, como agregar dados de várias fontes, fornecendo transformações complexas, avaliar requisitos de segurança personalizado ou lógica comercial complexa ou chamando sistemas várias vezes para fornecer um único modo de exibição de dados.

Como trabalhar com a estrutura BCS e ler vários artigos sobre BCS ou documentação, provavelmente notará o uso de termos conteúdo externo digite e de entidade ambíguo. Eles são um e o mesmos. O de entidade do termo existia no ambiente do SharePoint 2007 e ainda existe no nível da API do runtime. Este termo é geralmente usado em ambientes que atender principalmente para desenvolvedores, como contrário para o uso de conteúdo externo digite em ambientes como o SharePoint Designer 2010 atender a vários públicos. Não ficar confuso quando parecer documentação ou ferramentas Alternar entre conteúdo externo digite e entidade ─they significam a mesma coisa.

Criando uma entidade com Visual Studio 2010

Let’s examinar um cenário de agregação para entender melhor a função de um tipo de conteúdo externo da perspectiva do desenvolvedor. Usaremos a API Twitter como um exemplo de um serviço RESTful expõe dados sobre clientes e usaremos um banco de dados personalizado que imita um sistema de gerenciamento (CRM) de relação de cliente para incluir informações adicionais sobre nossos clientes, como última data de compra e o valor da última compra. Nós será agregar dados dessas duas fontes externas juntos e irá apresentar os dados em uma lista do SharePoint forma transparente para o usuário final.

Na caixa de diálogo New Project no Visual Studio 2010, escolha “ modelo de conectividade de dados do Business ” e usar o nome de projeto “ Msdn.Samples.BCS ”. Novo Assistente de projeto pedirá que você escolha um site do SharePoint para usar para depuração. Finalmente, o Visual Studio 2010 stubs out código para uma entidade, um serviço de entidade, a definição do modelo e um arquivo de diagrama usado para oferecer suporte a superfície de design Visual Studio.

Arquivo Entity1.cs descreve o esquema para a entidade e modelado como uma classe típica com propriedades públicas. O arquivo Entity1Service.cs fornece a implementação para métodos CRUD (Create, Read, Update, DELETE), do qual os dois métodos são criados para você como exemplos. O primeiro método criado é ReadItem, que permite a você recuperar um registro específico do armazenamento externo, com base em um identificador. Isso é mapeado para metadados XML como uma instância de método de tipo “ SpecificFinder. ” O segundo método é criado é ReadList, recupera todos os registros de armazenamento externo. Isso é mapeado no metadados XML como uma instância de método “ Finder ”. Esses são os dois métodos mínimos que precisa implementar para servir como um conector para BCS sua entidade.

A entidade de modelagem

Iniciar Let’s fazendo alterações para a entidade própria. Substitua o código mostrado na do Figura 3 classe Entity.

Figura 3 do código de substituição para classe de entidade

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; }
    }
}

Alternar de volta para a superfície de design de entidade abrindo o arquivo .bdcm no painel Solution Explorer e observe que substituindo o código não afeta a entidade na superfície de design. A entidade na superfície de design representa os metadados. Ele é nos fornecer alguns o mapeamento entre o nosso código e metadados que espera do SharePoint. Alterar o nome de entidade para “ Customer ” na modelagem da superfície de design. Em seguida, clique no identificador de entidade Identifier1, renomeie para CustomerID e alterar seu tipo para System.Int32. Agora podemos tiver instruído SharePoint que nosso entidade Customer tem um identificador chamado CustomerID é um inteiro e esta entidade mapeia para nossa classe Customer.

Os métodos de modelagem

Agora que estamos tiver modelado nossa entidade, precisamos modelar seus métodos. Como mencionado anteriormente, o Visual Studio cria dois métodos para nós fornecer funcionalidade mínima chamada ReadItem e ReadList. Eu encontrado-lo mais fácil primeiro excluir ambos esses métodos do painel detalhes de método do BDC e crie novos métodos com os nomes desejados em seu lugar. Isso proporciona um zero limpo para trabalhar com para ver como o mapeamento é executado. Para fazer isso, abra o painel de detalhes do método BDC, clique no método ReadList e clique no botão Excluir. Faça o mesmo para ReadItem. Uma nota de cautela: Descobri que não deseja executar essas operações no designer de entidade propriamente dito, em vez disso, tomando cuidado para fazer edições através do painel de detalhes de método BDC ou painel do BDC Explorer sempre que possível.

Vamos começar o método SpecificFinder, que o SharePoint usa para recuperar uma lista de todos os itens na nossa lista de modelagem. Agora que você tem um zero para trabalhar com limpo, clique no texto no painel detalhes do método BDC “ < Add um método > ”. Clicando em que o texto apresentará uma seta suspensa e clicando nele novamente, apresentará uma lista de tipos de método para criar. Escolha a “ criar Specific Finder Method ” opção e ele irão criar um método chamado ReadItem, seus parâmetros e uma instância de método. No painel mesmo, observe que há três colunas: Nome, direção e descritores de tipo e o parâmetro de retorno tem um descritor de tipo chamado cliente. Clique o descritor de tipo Customer e procure no painel de propriedades para ver a propriedade Type Name está atualmente System.String. Precisamos dizer ao SharePoint que irá retornar nosso novo tipo de cliente, então, alterar esse valor para “ Msdn.Samples.BCS.Customer Msdn.Samples.BCS ”.

Este é um bom momento para destacar o painel de Explorer BDC. Esse painel fornece uma exibição hierárquica de nosso modelo, suas entidades e seus métodos. Expanda o método ReadItem e você verá o parâmetro “ cliente ” com um nó filho “ Customer ” que representa o descritor de tipo. Precisamos adicionar descritores de tipo adicionais como um filho para representar o nosso tipo complexo. Essa é uma operação simples, apenas clique com o botão direito do mouse o descritor de tipo “ Customer ” no Gerenciador de BDC e escolha “ Adicionar descritor de tipo ”. Altere o nome para seu tipo para System.Int32 e CustomerID. Repita esse processo, adicionando descritores de tipo com nome apropriado e tipo para refletir a classe Customer criada anteriormente. Depois de ter criado todos os descritores de tipo, clique em descritor de tipo CustomerID e defina sua propriedade de identificador para CustomerID e sua propriedade somente leitura como True. O produto final deve ter aparência do Figura 4.

Using the BDC Explorer Pane to Set Properties of the TypeDescriptors

Figura 4 usando o painel de Explorer BDC para definir propriedades do TypeDescriptors

A próxima etapa é criar o método irá retornar a lista completa de clientes. Como podemos já tiver feito o trabalho para definir o tipo de cliente e suas descritores de tipo, a próxima etapa é fácil. Voltar para o painel de detalhes do método BDC e clique no texto “ < adicionar um método > ” e selecione a opção “ Criar método Finder ”. Um novo método chamado “ ReadList ” é criado e seu tipo é uma lista de objetos Customer genérica. Além disso, os descritores de tipo já estão definidos para nós, isso agora podemos podem se concentrar na implementação desses métodos.

Implementando os métodos

Nosso cenário requer conosco para agregar dados de uma fonte online — Twitter — e um armazenamento separado — um banco de dados SQL Server. Implementei uma classe auxiliar chamada TwitterHelper auxiliam no Obtendo dados do Twitter e cartas em nosso tipo de entidade Customer. Método GetChannelWithCredentials nos ajuda a usar o WCF e sua capacidades para chamar facilmente Twitter usando um conjunto específico de credenciais de programação de Web. Método GetCustomersFromTwitter retorna uma lista de usuários e seu status atual e armazena os dados em uma lista de objetos Customer. Método GetCustomerFromTwitterByScreenName recupera um único usuário do Twitter com base no nome de tela do usuário e retorna os dados em um único objeto Customer. O código para o TwitterHelper é mostrado no do Figura 5.

Figura 5 da Classe 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;
        }

    }
}

Nossa tabela de banco de dados é muito simples; aqui está o seu esquema:

CREATE TABLE [dbo]. [cliente] ()
[CódigoDoCliente] [int] IDENTITY(1,1) NÃO NULO
[Nome] [nvarchar](50) NÃO NULO,
[Sobrenome] [nvarchar](50) NÃO NULO,
[TwitterScreenName] [nvarchar](100) NÃO NULO,
[DateLastPurchase] [Data] NÃO NULO,
[AmountLastPurchase] [decimal]NÃO NULO (18,0))

Para consultar os dados facilmente, eu adicionado um LINQ para SQL classe em meu projeto e apontada a tabela de banco de dados de cliente para gerar um arquivo dbml. Meu primeiro método GetCustomer, usa LINQ to SQL para consultar o banco de dados para um único registro de cliente e obtém o status atual para o usuário do Twitter. Os métodos GetCustomer e GetCustomerList são detalhados em do Figura 6. A etapa final é pressione F5 para implantar o nosso tipo de conteúdo externo e iniciar a depuração, permitindo que você defina pontos de interrupção no código para garantir que tudo está funcionando corretamente.

Figura 6 O GetCustomer e GetCustomerList métodos

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;
            };                        
        }

    }
}

Um ponto interessante ter mencionado já é a capacidade de fazer alterações em um cliente offline e sincronizar volta para o armazenamento de dados externos. Isso pode ser feito Implementando um método Updater. Para fazer isso, basta adicione um novo método Updater para o painel de detalhes de método do BDC. Um corpo de exemplo do método Updater pode parecer com o código mostrado na do Figura 7:

Figura 7 de de um método Update para sincronizar alterações

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 você pode ver, ferramentas no Visual Studio 2010 torna muito fácil criar tipos de conteúdo externos graváveis.

Criando uma lista e fazendo IT offline

Até agora, somente criamos o tipo de conteúdo externo. Nós ainda não tiver criado uma lista para representar uma instância do tipo de conteúdo externo. Porque nós aperte F5 para implantar o nosso tipo de conteúdo externo na etapa anterior, você deve agora ser observando que o depurador é anexado ao site do SharePoint. Clique em ações site ações site menu na parte superior esquerda da tela, em opção “ exibir todo o conteúdo do site ”. Depois que a página viewlsts.aspx é exibida, clique no link de “ criar ” trará uma nova caixa de diálogo que lhe permite criar vários tipos diferentes de conteúdo. Escolher lista externos do conjunto de itens instalados e clique no botão Criar. Na página resultante, você pode fornecer o nome para a nova lista e escolha um tipo de conteúdo externo existente em uma lista (consulte do Figura 8).

Creating a List Using an External Content Type

Figura 8 Criando uma lista usando um tipo de conteúdo externo

Após você pressionar o botão Criar, você finalmente deve ser saudado com uma lista no SharePoint exibe as frutas seus labors como uma lista de dados do SharePoint (consulte do Figura 9).

A List Built Using an External Content Type

Figura 9 de de uma lista construída usando um tipo de conteúdo externo

Levando a lista offline

Um dos aprimoramentos enormes para conectividade externa no SharePoint 2010 é a capacidade de obter listas offline e sincronizar os dados. A próxima etapa é abrir SharePoint Designer 2010, portanto, podemos ver como o desenvolvedor e funções do profissionais de TI trabalham juntos na criação de soluções do tipo de conteúdo externo.

Como vimos no início do artigo, um operador conhecimento pode usar o SharePoint Designer 2010 para criar ou consumir tipos de conteúdo externos. Abra seu site do SharePoint com o SharePoint Designer 2010 e clique no link externo tipos de conteúdo no painel de navegação. Você verá o nosso tipo Msdn.Samples.BCS.SocialModel.Customer listado como um dos tipos de conteúdo externos para escolher. Clique que link e são seguidas para a exibição de resumo para nosso tipo de conteúdo externo onde podemos ver os métodos nós definido nos metadados e implementados em código.

Na seção informações de tipo de conteúdo externo desta página, você verá uma lista suspensa para especificar o tipo de item do Office. Clique nesta lista suspensa para revelar as seguintes opções:

  • List genérica
  • Compromisso
  • Contato
  • Tarefa
  • Lançar

Essa lista permite representar os dados em um tipo de conteúdo externo como um desses tipos, por sua vez influenciarão como os dados são exibidos e sincronizados. Por exemplo, selecionando o tipo de contato permite que você levar a lista offline em Outlook, representado como uma lista de contatos. Da mesma forma, se seus dados se parece com um item de calendário, você pode modelá-lo como um compromisso no Outlook. Isso fornece forte integração entre o Outlook como um cliente offline para dados do SharePoint, enquanto também fornece a capacidade de atualizar dados e sincronizar volta para a fonte de dados externos. Para mapear seus dados como um contato no Outlook, altere o drop de tipo de item do Office para baixo para o contato. Isso irá gerar um novo aviso nos dizendo que os mapeamentos estão incorretos. Clique duas vezes o método GetCustomer para exibir a caixa de diálogo de mapeamento. Clique em Avançar até chegar à tela de configuração do parâmetro de retorno. O requisito mínimo para o mapeamento de um tipo de contato é mapear o último parâmetro de nome. Para fazer isso, clique na propriedade LastName no modo de exibição de árvore de elementos de fonte de dados e à direita alterar a propriedade do Office para a propriedade LastName. Enquanto estamos aqui, mapear a propriedade de nome para a propriedade de Office FirstName. Os resultados são mostrados na Figura 10.

Mapping Data Source Elements to Office Properties

Figura 10 do elementos de fonte de dados de mapeamento para propriedades Office

Depois que fornecemos o mapeamento para um tipo de Office, pode vamos voltar para a interface do usuário da Web para SharePoint, clique na seção listas na faixa UI e escolha “ conectar ao Outlook ”. Isso fará com que uma solicitação para o SharePoint para criar um pacote do VSTO para esta lista é instalada para a área de trabalho local como adicionar um Outlook - in (de consulte do Figura 11).

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

Figura 11 ClickOnce é usado para fornecer uma experiência offline para tipos de conteúdo externo

Uma vez instalado o pacote do VSTO, o usuário final abre o item de contato apenas como qualquer outro item de contato no Outlook e as propriedades de nome e sobrenome são mapeados de acordo como você pode ver no do Figura 12.

Figura 12 os dados a partir do nosso entidade externa está disponível no Outlook, com personalizar campo dados mantidos no painel dos últimos

Além disso, dados extras são preservados e exibidos no formulário do contato, bem, fornecendo um local fácil para fazer atualizações e salvá-los no cache local para ser sincronizado com o sistema externo em um ponto posterior. Este pacote do VSTO é entregue via ClickOnce, assim, obter os mesmos benefícios de usar a tecnologia ClickOnce, incluindo a capacidade de desinstalar o suplemento usando a caixa de diálogo do Adicionar/remover programas no Windows.

Possibilidades inesgotáveis

Recursos BCS no SharePoint 2010 são tantos que eu poderia facilmente escrever um livro inteiro sobre o assunto. Descobri-difícil selecionar apenas alguns tópicos para realçar neste artigo. Eu introduziu muitos tópicos e ainda não iniciar cobrir as muitos outras possíveis áreas, como fornecer seus próprios formulários usando o InfoPath a ser exibido no espaço de trabalho do SharePoint, acessar dados BCS através do BDC Client Runtime, como você pode desenvolver seu próprio suplemento VSTO para trazer BCS recursos para Excel 2010, usando a segurança baseada em declarações com BCS ou integração com o serviço de armazenamento seguro.

Há portanto muitas possibilidades, tenho certeza de que o BCS servirá como o tópico para vários artigos e livros vêm próximos anos. Assim como ao dar um mouse um cookie, uma vez inicia com BCS, você desejará fazer mais com essa tecnologia fascinante.

Kirk Evans é arquiteto de setor para Communications setor prática. do Microsoft. Ele trabalha com as maiores empresas de mídia, telcos, editores e agências de propaganda para criar soluções específicos da indústria. Visite o blog do Kirk em blogs.msdn.com/kaevansde .

Graças aos seguintes especialistas técnicos para revisão deste artigo: Lionel Robinson e Brad Stevenson