本文章是由機器翻譯。

在 SharePoint 2010 中使用 Business Connectivity 服務

Kirk Evans

我的孩子 ’ 最愛書籍的其中一個會呼叫 如果您提供一個滑鼠一個 Cookie Laura Numeroff─a 子系 ’s 書籍根據 slippery 斜率概念如果您提供一個滑鼠 Cookie,他會要求牛奶,實現他會口渴。當他 drinks 牛奶時,他會要求一個鏡像再某些剪刀然後一個掃帚然後某些蠟筆且與上,詢問新的項目,一旦他發現項目之公用程式他目前。

這是我看到與 SharePoint 採用軸進行的許多使用者的方式:緩慢,開始上載幾個文件與然後使用工作流程和表單,並最後想要表面的外部資料,其網站上繼續進行。isn’t 直到您看到如何輕易一個工作已完成您決定要到下一個挑戰。

它 ’s 常見的案例:我有一個入口網站、 我有一些外部的資料,而且我想要以有意義的方式將該資料整合至我的入口網站。Microsoft Office SharePoint Server 2007 (MOSS 2007) 引進了以促進此確切的案例 [商務資料目錄 (BDC):讓容易內部入口網站的經驗表面的外部資料。比方說,您可以建立定義 SharePoint 與外部資料之間的對應,因此它可以是呈現在網頁組件、 用來作為在清單中的資料行並甚至整合至搜尋的 XML 定義檔案。

當我顯示公司它們可以如何使用 BDC 對應至現有的商務線應用程式時,燈泡通常開啟後我顯示搜尋結果,包括人員、 文件、 清單資料和其現有的 LOB system─all 相同的結果集中的資料。

即使在 MOSS 2007 BDC 啟用外部系統的連線能力,很難建立解決方案,因為設計工具缺乏。此外,雖然 BDC 變得相當容易建立商務資料清單的網頁組件中顯示資料的唯讀解決方案,不那麼簡單建立啟用使用者進行變更,並寫入資料傳回至外部存放區的解決方案。

商務連線服務 (BCS) 在 SharePoint 2010 是所有關於連線到外部資料。BCS 增強了 SharePoint 平台 ’s 功能的全新功能、 服務與簡化開發解決方案與外部資料和服務的深度整合的工具。BCS 在簡報、連線、工具和週期管理幾個重要領域,皆是以前版的 BDC 為基礎建置而成。例如在 SharePoint 2010 它 ’s 容易使用 SharePoint 設計工具建立外部的內容類型、 在 SharePoint ’s Web 使用者介面中建立外部的清單和連絡人的一組列入 Outlook 離線瀏覽清單。而且,您可以對會導致資料一併更新外部的系統中的 Outlook 中的連絡人進行更新。

BCS 架構

圖 1 示範組成 BCS 關鍵元件。

圖 1 的 商務連線服務架構

  • BDC 中繼資料存放區 – [BDC 中繼資料儲存為每種說明如何連接至外部存放區外部的內容型別之集合提供儲存體。「 中繼資料存放區做為服務層的一部份。外部的內容類型為基本的建置組塊的 BCS。
  • BDC 伺服器執行階段 – [BDC 伺服器執行階段能夠了解如何連接到後端存放區和連線到外部內容型別存放區中定義的內容類型為基礎的資料。它 ’s 特別要注意的縮略字 BDC 來提供是 BCS 元件的連線能力的服務集合參考新的使用方式。
  • 安全性 – BCS 提供與 「 安全儲存庫服務 (SSS),以及啟用您自己的安全性模型整合。
  • 解決方案封裝 – 以 BCS 建置的解決方案可以封裝成一個 Visual Studio 工具 Office (VSTO) 封裝的傳遞給包括 SharePoint 工作區、 Outlook 與 Word 在豐富型用戶端。BCS 也會公開 API 來擴充解決方案封裝為目標額外的用戶端。
  • 郵件的方塊使用者介面 – BCS 攜帶向前顯示透過 Web 組件使用者介面的外部資料的能力,並提供更深入整合經由外部清單的額外。
  • BDC 用戶端執行階段 – 對稱的執行階段提供給用戶端和啟用您採取的伺服器解決方案離線與用戶端快取和來連線,並發送變更回至伺服器一致的方式。使用 BDC 用戶端執行階段可讓互動外部資料快取的離線作業。
  • 設計工具 – SharePoint 設計工具] 提供豐富的方塊外的功能,用於建立 BCS 解決方案包括定義外部的內容類型和外部的清單,以及定義 InfoPath 表單,以呈現資料,以建立簡單的解決方案。Visual Studio 提供專業開發人員擴充這些功能,同時充分運用現有的架構建立進階的解決方案的能力。

這些投資 BCS 架構中的啟用與額外的功能,包括商務智慧、 企業內容管理、 共同作業及共享功能與企業搜尋 [SharePoint 平台之間的互動。此外,BCS 使用提供強大的開發人員平台,可快速地善加利用這些功能的解決方案建立。

第一次我看到 BCS 立即仍然跳出在我的兩件事。第一次,從開發人員 ’s 觀點來看它 ’s 現在相當容易佔領外部資料離線透過智慧型用戶端解決方案,輕易地散發由於至利用 ClickOnce 功能在 Microsoft.NET Framework 的 VSTO 增益集的產生。真的 stood 第二件事,是用戶端快取會運用 SQL 開始壓縮為其持久的存放區,並且提供能力與用戶端解決方案與外部系統的變更同步納入。這應該給開發人員提供強式的有意義的可靠性,因為它會運用經證實和被廣泛採行技術。

一旦您辨識 BCS 基本上是提供到外部資料、 對稱的用戶端和伺服器執行階段互動資料和 BCS 解決方案的封裝使用的智慧型用戶端應用程式的連接,您可以立即看到的解決方案您可在此與現有系統整合,並快速地給一般使用者提供豐富的功能。

它也應該熟悉 BCS 內含多個案例比直接連接到資料,得啟用解決方案的開發人員非常吸引人的選擇其前置任務的任何人都能明顯。本文的其餘部分將會討論外部的內容類型建立和離線能力的 BCS 更詳細。

瞭解外部的內容類型

外部的內容類型的概念是 BCS 的基礎。Windows SharePoint 服務 3 介紹的內容類型來描述可重複使用的結構描述清單的概念。外部的內容型別會描述結構描述以及資料存取功能,外部系統和它的行為,Office 和 SharePoint 內的延伸此概念。您可能會認為外部的內容類型的 SharePoint 與外部系統之間的對應為描述實體和資料來源的行為。

外部的內容類型被定義在部署到 「 BDC 中繼資料存放區的 XML 文法中使用中繼資料。在 MOSS 2007 BDC 那些熟悉,這個概念之前被稱為一個 BDC] 實體,但概念延伸以包含外部資料在 SharePoint 和 Office 內的行為。

SharePoint 設計工具 2010年提供了一個簡單的介面,快速建立外部的內容類型,以及建立根據這些外部的內容類型的外部清單。為什麼,然後,您會使用 Visual Studio 來建立外部的內容類型?  有時候您需要執行一些動作 SharePoint 設計工具 2010 doesn’t 提供現成。建立自訂的外部內容類型是彙總案例,其中您請以相同的外部系統的多個呼叫、 請多個外部系統的多個呼叫,或甚至從一個外部系統讀寫至另一個非常有用的。建立自訂外部的內容類型也是用於複雜轉換在外部系統中資料的格式之間沒有清除對應的地方,並應該呈現在 SharePoint 內如何。您可能會實作自訂安全性程式碼,或甚至實作複雜的後端系統進行互動時所需的自訂商務邏輯。

IT 專業人員可以使用 SharePoint 設計工具 2010年建立外部內容類型都會消耗,並將資料寫入至 SQL Server Windows 通訊基礎 (WCF) 服務或.NET 型別。這可快速地由 IT 專業人員讓他們可使用從開發人員有公開的來源資料的簡單解決方案的建立。做為範例是 IT 專業人員會開啟 SharePoint 設計工具 2010年,按一下 [在左邊導覽窗格中的 [外部的內容類型、 按一下功能區中的 [新增外部的內容類型] 按鈕並按一下 「 按一下這裡來探索外部資料來源並定義作業 」] 連結。在產生這項操作的設計工具] 對話方塊您可以將連線新增至資料庫資料表,然後建立方法來讀取、 選取單一資料錄,更新和甚至從 (提供擁有適當的認證,才能這麼,當然) 的資料庫資料表中刪除資料列的 「 建立所有作業 」 在表格上按一下滑鼠右鍵。若要查看這是什麼樣子,請參閱 的 圖 2

圖 2 建立作業使用 SharePoint 設計工具 2010年

外部的內容類型真的是允許它為原生 Office 實體參與跨多個應用程式,例如外部資料的可重複使用說明:

  • SharePoint 為外部的清單
  • Outlook
  • SharePoint 工作區
  • 文字
  • InfoPath
  • 存取權限
  • 其他的 Office 應用程式,透過程式碼

這是讓知識型連接 SharePoint 外部系統是非常強大功能,並可讀取和寫入的方式,透過用戶端應用程式的多個類型的表面資料。這也會提供非常有趣的機會,讓開發人員加持知識工作者與執行複雜的作業時使用 SharePoint 設計工具 2010 例如彙總多個來源的資料、 提供複雜轉換、 評估複雜的商務邏輯或自訂的安全性需求或多次呼叫系統的本身不可能的解決方案,以提供資料的單一檢視。

當您使用 BCS 架構,並讀取各種說明文件或發行項上 BCS,可能注意到詞彙 外部內容鍵入實體 的模稜兩可的使用。它們是一個與相同。詞彙 實體 SharePoint 2007 環境中存在,並在執行階段 API 層級仍然存在。這個術語通常用在 cater 主要是要相對於 外部內容鍵入 例如 SharePoint 設計工具 2010 cater 多個對象的環境中使用程式開發人員的環境中。[工具] 或 [文件似乎 外部內容鍵入實體 ─they 平均數之間切換相同的動作時,don’t 取得相混淆。

使用 Visual Studio 2010 建立實體

let’s 查看彙總案例中,以瞭解外部的內容型別,開發人員 ’s 觀點的角色。我們將使用 Twitter API 當做 RESTful 服務公開客戶,相關資料的範例,並我們使用自訂的資料庫,可以模擬以包含我們的客戶,例如上一次購買日期的其他資訊,然後最後一次購買量的客戶關係管理 (CRM) 系統。我們將彙總資料來自下列兩個外部來源一起,並會顯示該資料在 SharePoint 清單無障礙地給一般使用者。

在 Visual Studio 2010 中的 [新增專案] 對話方塊選擇 「 商務資料連線模型 」,並使用專案名稱 「 Msdn.Samples.BCS 」。新專案精靈將會要求您選擇要用於偵錯的 SharePoint 網站。最後,Visual Studio 2010 Stub 出實體、 一個實體服務、 模型定義和圖表檔,用以支援 Visual Studio 設計介面的程式碼。

Entity1.cs 檔案說明的實體結構描述,並為一般類別的公用屬性模式化。Entity1Service.cs 檔案提供其中兩種方法會為您建立做為範例的 CRUD (建立、 讀取、 更新、 刪除) 方法的實作。建立的第一個方法是可讓您從外部識別項為基礎的存放區擷取特定記錄的 ReadItem。這被對應至 XML 中繼資料為方法執行個體的型別 「 SpecificFinder 」。第二個建立的方法是從外部存放區擷取所有記錄的 ReadList。這被對應 XML 中繼資料中為 「 搜尋 」 方法執行個體。這些是您實體需要實作來做為連接器的 BCS 最小這兩種方法。

模型化實體

let’s 開始對實體本身進行變更。用 的 圖 3 所示的程式碼取代實體類別。

圖 3 的 實體類別的取代程式碼

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

切換回至實體設計介面,藉由開啟.bdcm 檔案在 [方案總管] 窗格和通知,取代程式碼 doesn’t 影響設計介面上的實體。在設計介面上的實體表示中繼資料。它 ’s 向我們提供某些我們的程式碼與 SharePoint 所預期的中繼資料之間的對應。在模型中,將實體名稱變更為 「 客戶 」 設計介面。接下來,按一下 Identifier1 實體的識別項上、 將它重新命名為 [客戶編號],並將它的型別變更為 System.Int32。我們現在指示 SharePoint 我們客戶實體具有名為 [客戶編號] 是一個整數識別項,以及此實體對應至我們的客戶類別。

模型化方法

現在我們模式化我們實體,我們需要建立它的方法的模型。稍早提到 Visual Studio 會建立兩個方法為我們提供稱為 ReadItem 及 ReadList 的最小功能。我發現,比較簡單第一個刪除這兩個那些方法從 BDC 方法詳細資料] 窗格,然後使用其位置中您想要的名稱建立新的方法。這樣可讓您若要查看如何執行對應使用初始狀態板子。以執行這項操作,開啟 [BDC 方法詳細資料] 窗格、 按一下 ReadList 方法上按一下 [刪除] 按鈕。並 ReadItem 執行相同動作。請小心的附註:我已經發現您不想在設計實體工具本身,改小心進行編輯,透過 BDC 方法詳細資料] 窗格或 [BDC 總管] 窗格,不論何時儘可能執行這些作業。

我們開始建立模型 SpecificFinder 方法 SharePoint 用它來擷取在我們的清單中的所有項目的清單。現在您有使用初始狀態板子,按 [BDC 方法詳細資料] 窗格中的 「 < 加入一個方法 > 」 文字。按一下該文字將會呈現一個下拉式箭號,再按一次將呈現方法型別來建立清單。選擇在 「 建立特定搜尋工具方法 」 選項,它將建立一個稱為 ReadItem、 其參數和方法執行個體的方法。在同一個窗格中請注意是三個資料行]:名稱、 方向和類型描述元和傳回參數,都稱為客戶的類型描述元。按一下客戶型別描述項,並查看 [屬性] 窗格,看看類型名稱屬性目前是 System.String。我們需要告訴 SharePoint 它會傳回新的客戶型別,所以這個值變更為 「 Msdn.Samples.BCS.Customer Msdn.Samples.BCS 」。

這是良好的時間點出 BDC 總管窗格。這個窗格提供我們的模型、 其實體和它們的方法的階層式檢視。展開 ReadItem 方法,您會看到 「 客戶 」 參數與子節點 「 客戶 」 代表型別描述項。我們需要做代表我們複雜型別為子系加入額外的型別描述項。這是簡單的作業,只是 「 客戶 」 型別描述項,BDC 總管中的以滑鼠右鍵按一下,然後選擇 「 加入型別描述元 」。將名稱變更為 [客戶編號] 和 System.Int32 到其型別。重複此程序加入適當的名稱和型別來反映稍早建立的客戶類別的型別描述項。一旦您建立所有的型別描述項,按一下 [客戶編號] 的型別描述項,並將它識別元] 屬性為 [客戶編號],以及它的 [唯讀] 屬性設定設為 True。最終產品應該如 的 圖 4 所示。

圖 4 使用 BDC 總管窗格來設定屬性 [TypeDescriptors

下一步是建立會傳回完整的客戶清單的方法。既然我們已經完成工作於定義客戶型別和其型別描述項下, 一步就是很容易。回前往 BDC 方法詳細資料] 窗格,並按一下 「 < 新增一個方法 > 」 文字,選擇 「 建立搜尋工具方法 」] 選項。在建立新的方法稱為 「 ReadList 」,其型別是泛型清單的客戶物件。此外,型別描述項已經定義為我們,現在我們就可以專注於實作這些方法。

實作方法

我們的案例需要我們彙總資料來自線上來源 — Twitter — 以及個別的存放區 — SQL Server 資料庫。我在實作 Helper 類別,稱為 TwitterHelper,協助您從 Twitter 取得資料並整理成我們客戶的實體型別。GetChannelWithCredentials 方法可幫助我們使用 WCF 和它的 Web 程式設計功能,輕易地呼叫 Twitter 使用特定的一組認證。GetCustomersFromTwitter 方法會傳回使用者和其目前狀態的清單,並將資料儲存在 Customer 物件清單中。GetCustomerFromTwitterByScreenName 方法從 Twitter 根據使用者 ’s 螢幕名稱擷取單一使用者,並傳回單一的 Customer 物件的該資料。TwitterHelper 程式碼 的 [圖 5] 所示。

圖 5 的 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;
        }

    }
}

我們的資料庫資料表是相當簡單,以下是其結構描述:

CREATE TABLE [dbo] [客戶]
[客戶編號] [] int 不 NULL IDENTITY(1,1)
[名字] 欄位數值一樣都 [] nvarchar(50) 不為 NULL
[姓名] [] nvarchar(50) 不為 NULL
[TwitterScreenName] [] nvarchar(100) 不為 NULL
[DateLastPurchase] [日期] 不為 NULL
[AmountLastPurchase] [十進位]不為 NULL (18,0))

輕鬆查詢資料,我到我的專案加入至 SQL 類別的一個 LINQ,cursor 客戶資料庫資料表產生 dbml 檔案。我第一個方法 GetCustomer,使用 LINQ to SQL 來查詢資料庫中的單一客戶資料錄,並再取得 Twitter 從的 [目前的狀態,該使用者。的 圖 6 詳述 GetCustomer 和 GetCustomerList 方法。最後一個步驟是按下 F5 以部署我們外部的內容類型,並啟動偵錯、 讓您在程式碼,以確保一切都正常運作中設定中斷點。

圖 6 的 GetCustomer 及 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;
            };                        
        }

    }
}

有趣的地方,我已經有提到是能夠在離線的用戶端中進行變更並同步回至外部資料存放區。 這可透過實作更新程式方法。 若要執行此動作只是將新的更新程式方法新增到 [BDC 方法詳細資料] 窗格。 更新程式方法的範例內文看起來會像 的 圖 7 所示的程式碼:

圖 7 的 同步處理變更的更新方法

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

您可以看到在 Visual Studio 2010 工具,很容易非常建立可寫入的外部內容類型。

建立清單,並將它離線

因此遠我們已經只建立外部的內容類型。我們尚未建立清單,以代表外部的內容型別的執行個體。因為我們點擊 F5 部署我們的外部內容型別,在前一個步驟中,您應該現在查看偵錯工具附加到您的 SharePoint 網站。在 [網站動作網站動作功能表左上角在螢幕的按一下 「 檢視所有網站內容 」 選項。顯示 viewlsts.aspx 頁面之後按一下將會出現新的對話方塊,讓您建立數個不同類型的內容的 「 建立 」 連結。從已安裝的項目集合中選擇 [外部清單並按一下 [建立] 按鈕。您可以在結果頁面提供新清單的名稱,然後從清單中選擇 [現有的外部內容類型 (請參閱 的 [圖 8])。

圖 8 建立清單,使用外部的內容類型

按 [建立] 按鈕後您應該最後被 greeted 以在 SharePoint 中的資料清單以顯示您 labors 水果的 SharePoint 清單 (請參閱 的 圖 9)。

圖 9 的 建造使用外部的內容類型的清單

將清單離線

其中一個的外部連線在 SharePoint 2010 巨大改進是能夠離線取得清單和同步資料。下一步是開啟 SharePoint 設計工具 2010年我們可以看到如何開發人員和 IT 專業角色一起運作來建立外部的內容類型的解決方案。

正如我們所見的文件開頭知識工作者可以使用 SharePoint 設計工具 2010年來建立或消耗外部的內容類型。與 SharePoint 設計工具 2010年開啟 SharePoint 網站,然後按一下瀏覽窗格中的 [外部的內容類型] 連結。您會看到列為外部的內容類型可供您選擇從我們 Msdn.Samples.BCS.SocialModel.Customer 類型。按一下的連結和您將來到摘要檢視我們外部的內容型別我們可以在此看到方法我們在中繼資料中定義,及在程式碼中實作。

在此頁面的 [外部內容的類型資訊] 區段中,您會看到指定 [Office] 項目類型是下拉式。按一下這個下拉式清單以顯示下列選項:

  • 泛型清單
  • 約會
  • Contact
  • Task
  • Post

此清單可讓您為其中一個這類資料卻顯示並同步處理並依序會影響代表外部的內容型別中資料。比方說選取連絡人類型可讓您列入表示為連絡人清單的 Outlook 離線瀏覽清單。同樣地,如果您的資料看起來像行事曆項目,您可以在 Outlook 中約會為它模型。這提供強式 Outlook 作為離線用戶端同時也提供能夠更新資料及同步回至外部資料來源的 SharePoint 資料之間的整合。若要在 Outlook 中的連絡人對應您的資料,變更 Office 項目類型拖放到連絡人。這會產生新的警告,告訴我們對應不正確。連按兩下 GetCustomer 方法顯示 [對應] 對話方塊。直到您進入傳回參數組態畫面,請按一下 [下一步]。對應連絡人類型最少的要求是對應最後一個名稱參數。如果要執行這項操作,在資料來源項目樹狀結構檢視中按一下 [姓氏],然後在右邊變更 Office 屬性 [姓氏] 屬性。我們在這裡時, 將名字] 欄位屬性對應名字 Office 屬性。所得的結果顯示在 [圖 10] 中。

圖 10 的 對應資料來源項目至 Office 內容

一旦我們為 Office 型別提供對應,我們可以移回到讓 SharePoint 的 [Web] UI 按一下 UI,功能區中的 [清單] 區段,然後選擇 「 連線到 Outlook 」。這將會提出要求到 SharePoint 建立 VSTO 封裝安裝到本機的桌面如 Outlook 新增這個清單-(請參閱 的 圖 11] 所示)。

圖 11 ClickOnce 用來提供可外部的內容類型的一個離線經驗

一旦安裝 VSTO 封裝完成一般使用者開啟連絡人項目只是像任何其他連絡人在 Outlook,項目和第一個和最後一個名稱屬性對應您據以向上可以看到在 的 圖 12

圖 12 從我們的外部實體的資料是在與自訂欄位資料保留在 [下一個窗格] 中的 Outlook 中的可用

此外,保留額外的資料,顯示在連絡人表單上同時也提供方便的位置,以進行更新,並將其儲存到本機快取同步處理與外部系統在稍後的點。這個 VSTO 封裝就會傳遞透過 ClickOnce,所以得到相同使用 ClickOnce 技術包括解除安裝在 Windows 中使用 [新增/移除程式] 對話方塊的增益功能的優點。

永無止盡的可能性

在 SharePoint 2010 BCS 功能是這麼多我可以輕易地撰寫在主體上的整個活頁簿。我發現難以挑選只需要幾個主題以反白標示本文中。我介紹很多的主題和甚至 didn’t 涵蓋許多其他可能區域,例如提供您自己使用 InfoPath 在 SharePoint 工作區存取 BCS 資料透過 BDC 用戶端執行階段中顯示的表單開始方式,您可能會開發您自己的 VSTO 增益集使 Excel 2010 使用宣告式安全性與 BCS,或與安全儲存庫服務整合 BCS 能力。

有讓我確定 BCS 將作為許多文章及書籍進入下一個幾年來的 「 主題許多可能性。就像當 Cookie 提供滑鼠,一次您啟動與 BCS,您要做越來越多與這 fascinating 技術。

Kirk Evans* 是一個工業架構設計人員的 Microsoft ’s 通訊磁區的作法。他會與建立業界特定的解決方案最大的媒體公司、 telcos、 發行者和廣告代理商。在 blogs.msdn.com/kaevans 吳 ’s 部落格,請造訪。*

多虧來檢閱本文的下列的技術專家:Lionel Robinson 和 Brad Stevenson