逐步解說:在 Visual Studio 中建立和存取 WCF 資料服務
在本逐步解說中,會示範如何建立裝載於 ASP.NET Web 應用程式的簡單 WCF 資料服務,並從 Windows Form 應用程式存取此服務。
在這份逐步解說中,您將能夠:
建立裝載 WCF 資料服務的 Web 應用程式。
建立呈現 Northwind 資料庫中的 Customers 資料表的 實體資料模型。
建立 WCF 資料服務。
建立用戶端應用程式,並加入 WCF 資料服務的參考。
啟用對服務的資料繫結,並產生使用者介面。
您可以選擇在應用程式中加入篩選功能。
必要條件
您需要下列元件才能完成此逐步解說:
Northwind 範例資料庫。
如果您的開發電腦上沒有此資料庫,您可以從 Microsoft 下載中心下載。 如需相關說明,請參閱 下載範例資料庫。
建立服務
若要建立 WCF 資料服務,請加入 Web 專案、建立 實體資料模型,然後透過模型建立服務。
在第一個步驟中,您要加入一個 Web 專案以裝載服務。
注意事項 |
---|
您的電腦對於下列指示中某些 Visual Studio 使用者介面項目的名稱或位置,可能會顯示不同的資訊:您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱<Visual Studio 中的自訂開發設定>。 |
若要建立 Web 專案
在功能表列上,選擇 [檔案]、[新增]、[專案]。
展開 [新增專案] 對話方塊中的 [Visual Basic] 或 [Visual C#] 和 [Web] 節點,然後選擇 [ASP.NET Web 應用程式] 範本。
在 [名稱] 文字方塊中,輸入 NorthwindWeb,然後選擇 [確定] 按鈕。
在 [新增 ASP.NET 專案] 對話方塊的 [選取範本] 清單中,選擇 [空白],然後選擇 [確定] 按鈕。
在此步驟中,您會建立一個呈現 Northwind 資料庫中 Customers 資料表的 實體資料模型。
若要建立實體資料模型
在功能表列中,選擇 [專案]、[加入新項目]。
在 [加入新項目] 對話方塊中,選擇 [資料] 節點,然後選擇 [ADO.NET 實體資料模型] 項目。
在 [名稱] 文字方塊中,輸入 NorthwindModel,然後選擇 [加入] 按鈕。
[實體資料模型精靈] 隨即出現。
在實體資料模型精靈的 [選擇模型內容] 頁面上,選擇 [來自資料庫的 EF 設計工具] 項目,然後選擇 [下一步] 按鈕。
在 [選擇資料連接] 頁面上,執行下列其中一個步驟:
如果下拉式清單中有提供 Northwind 範例資料庫的資料連接,請選擇這個資料連接。
-或-
選擇 [新增連接] 按鈕,設定新的資料連接。 如需詳細資訊,請參閱How to: Create Connections to SQL Server Databases。
如果資料庫需要密碼,請選擇 [是,在連接字串中包含敏感性資料] 選項按鈕,然後選擇 [下一步] 按鈕。
注意事項 如果對話方塊隨即出現,請選擇 [是],將檔案儲存到專案。
在 [選擇您的版本] 頁面上,選擇 [Entity Framework 5.0] 選項按鈕,然後選擇 [下一步] 按鈕。
注意事項 除了使用最新版的 Entity Framework 6 與 WCF 服務之外,您還需要安裝 WCF Data Services Entity Framework Provider NuGet 套件。請參閱搭配使用 WCF Data Services 5.6.0 和 Entity Framework 6+。
展開 [選擇您的資料庫物件] 頁面上的 [資料表] 節點,選取 [Customers] 核取方塊,然後選擇 [完成] 按鈕。
實體模型圖表隨即顯示,並將 NorthwindModel.edmx 檔案加入至您的專案中。
在這個步驟中,您將會建立與測試資料服務。
若要建立資料服務
在功能表列中,選擇 [專案]、[加入新項目]。
在 [加入新項目] 對話方塊中,選擇 [Web] 節點,然後選擇 [WCF Data Service 5.6] 項目。
在 [名稱] 文字方塊中,輸入 NorthwindCustomers,然後選擇 [加入] 按鈕。
NorthwindCustomers.svc 檔案會出現在 [程式碼編輯器] 中。
在 [程式碼編輯器] 中找出第一個 TODO: 註解,並以下列程式碼取代:
Inherits DataService(Of northwindEntities)
public class NorthwindCustomers : DataService<northwindEntities>
將 InitializeService 事件處理常式中的註解以下列程式碼取代:
config.SetEntitySetAccessRule("*", EntitySetRights.All)
config.SetEntitySetAccessRule("*", EntitySetRights.All);
在功能表列上,選擇 [偵錯]、[啟動但不偵錯] 以執行服務。 瀏覽器視窗隨即開啟,並顯示服務的 XML 結構描述。
在 [網址] 列中,於 NorthwindCustomers.svc 的 URL 後面輸入 Customers,然後選擇 ENTER 鍵。
隨即會顯示 Customers 資料表中資料的 XML 表示。
注意事項 在某些情況中,Internet Explorer 會將資料錯譯為 RSS 摘要 (RSS Feed)。您必須確定顯示 RSS 摘要的選項已停用。如需詳細資訊,請參閱服務參考的疑難排解。
關閉瀏覽器視窗。
在接下來的步驟中,您將要建立 Windows Form 用戶端應用程式以使用服務。
建立用戶端應用程式
若要建立用戶端應用程式,您將要加入第二個專案、在專案中加入服務參考、設定資料來源,並建立要顯示來自服務之資料的使用者介面。
在第一個步驟中,您要在方案中加入 Windows Form 專案,並設定為啟始專案。
若要建立用戶端應用程式
在功能表列上選擇 [檔案]、[加入]、[新增專案]。
展開 [新增專案] 對話方塊中的 [Visual Basic] 或 [Visual C#] 節點,再選擇 [Windows] 節點,然後選擇 [Windows Form 應用程式]。
在 [名稱] 文字方塊中,輸入 NorthwindClient,然後選擇 [確定] 按鈕。
在 [方案總管] 中,選擇 [NorthwindClient] 專案節點。
在功能表列上,選擇 [專案]、[設定為啟始專案]。
在這個步驟中,您將在 Web 專案中加入 WCF 資料服務的服務參考。
若要加入服務參考
在功能表列上,選擇 [專案]、[加入服務參考]。
選擇 [加入服務參考] 對話方塊中的 [探索] 按鈕,
NorthwindCustomers 服務的 URL 隨即顯示在 [位址] 欄位中。
選擇 [確定] 按鈕以加入服務參考。
在這個步驟中,您將設定資料來源,讓資料能夠繫結至服務。
若要啟用對服務的資料繫結
在功能表列上,選擇 [檢視]、[其他視窗]、[資料來源]。
在 [資料來源] 視窗中,選擇 [加入新資料來源] 按鈕。
在 [資料來源組態精靈] 的 [選擇資料來源類型] 頁面中,選擇 [物件],然後選擇 [下一步] 按鈕。
展開 [選取資料物件] 頁面上的 [NorthwindClient] 節點,再展開 [NorthwindClient.ServiceReference1] 節點。
選取 [Customer] 核取方塊,然後選擇 [完成] 按鈕。
在這個步驟中,您將會建立要顯示來自服務之資料的使用者介面。
若要建立使用者介面
在 [資料來源] 視窗中,開啟 [Customers] 節點的捷徑功能表,然後選擇 [複製]。
在 [Form1.vb] 或 [Form1.cs] 表單設計工具中,開啟捷徑功能表並選擇 [貼上]。
表單中會加入一個 DataGridView 控制項、一個 BindingSource 元件,和一個 BindingNavigator 元件。
選擇 [CustomersDataGridView] 控制項,然後在 [屬性] 視窗中,將 [Dock] 屬性設為 [填滿]。
在 [方案總管] 中,開啟 [Form1] 節點的捷徑功能表,然後選擇 [檢視程式碼] 開啟程式碼編輯器,並在檔案上方新增下列 Imports 或 Using 陳述式:
Imports NorthwindClient.ServiceReference1
using NorthwindClient.ServiceReference1;
將下列程式碼加入至 Form1_Load 事件處理常式:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim proxy As New NorthwindEntities _ (New Uri("http://localhost:53161/NorthwindCustomers.svc/")) Me.CustomersBindingSource.DataSource = proxy.Customers End Sub
private void Form1_Load(object sender, EventArgs e) { NorthwindEntities proxy = new NorthwindEntities(new Uri("http://localhost:53161/NorthwindCustomers.svc/")); this.CustomersBindingSource.DataSource = proxy.Customers; }
在 [方案總管] 中,開啟 NorthwindCustomers.svc 檔案的捷徑功能表,然後選擇 [在瀏覽器中檢視]。 Internet Explorer 隨即開啟,並顯示服務的 XML 結構描述。
由 Internet Explorer 的 [網址] 列複製 URL。
由您在步驟 4 中加入的程式碼中,選取 http://localhost:53161/NorthwindCustomers.svc/ 並取代為您剛剛複製的 URL。
在功能表列上,選擇 [偵錯]、[開始偵錯] 以執行應用程式。 客戶資訊隨即顯示。
現在您會有一個工作應用程式,會顯示來自 NorthwindCustomers 服務的客戶清單。 如果您想要透過服務公開額外的資料,可以將 實體資料模型 修改為包含來自 Northwind 資料庫的額外資料表。
在下一個選擇性的步驟中,您將會學習如何篩選服務傳回的資料。
加入篩選功能
在此步驟中,您將會自訂應用程式,根據客戶的所在城市篩選資料。
若要加入根據城市進行篩選的功能
在 [方案總管] 中,開啟 [Form1.vb] 或 [Form1.cs] 節點的捷徑功能表,然後選擇 [開啟]。
開啟 Button 控制項的捷徑功能表,然後選擇 [檢視程式碼],接著在 Button1_Click 事件處理常式中加入下面程式碼:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim proxy As New northwindEntities _ (New Uri("http://localhost:53161/NorthwindCustomers.svc")) Dim city As String = TextBox1.Text If city <> "" Then Me.CustomersBindingSource.DataSource = From c In _ proxy.Customers Where c.City = city End If End Sub
private void Button1_Click(object sender, EventArgs e) { ServiceReference1.northwindModel.northwindEntities proxy = new northwindEntities(new Uri("http://localhost:53161/NorthwindCustomers.svc")); string city = TextBox1.Text; if (!string.IsNullOrEmpty(city)) { this.CustomersBindingSource.DataSource = from c in proxy.Customers where c.City == city; } }
在前述的程式碼中,將 http://localhost:53161/NorthwindCustomers.svc 取代為 Form1_Load 事件處理常式中的 URL。
在功能表列上,選擇 [偵錯]、[開始偵錯] 以執行應用程式。
在文字方塊中輸入 London,然後選擇該按鈕。 接著,就會只顯示 London 的客戶。