Wiki


Wiki Table of Contents

Tags

Page Details

First published by:
Last revision by:
1 person found this article useful.

100% of people found this useful
Walkthrough: Creating a RIA Services Solution

WCF RIA Services

Trong bài viết này, bạn sẽ tạo một ứng dụng WCF RIA Services nhận dữ liệu từ AdventureWorksLT database. Bạn sẽ sử dụng Silverlight để tạo client trong tầng presentation. Và tạo các lớp entity class đại diện cho các bảng dữ liệu khác nhau. Bài viết này là bài khởi đầu cho một loạt các bài khác.

Yêu cầu đầu tiên


Tạo một solution với một RIA Services Link giữa các  Project


Xây dựng một  RIA Services solution

  1. Trong Visual Studio, tạo mới một RIA Services project bằng cách chọn  File, New, và sau đó là Project. Hộp thoại New Project xuất hiện.

  2. Hãy chọn mẫu Silverlight Application và đặt tên cho project mới là RIAServicesExample.

    Create Silverlight Application
  3. Click OK.

    Hộp thoại New Silverlight Application sẽ xuất hiện.

  4. Hãy click chọn vào ô check box có tên là Enable WCF RIA Services.Khi bạn chọn check box này, thì bạn đã tạo một liên kết RIA Services giữa client project và server project.

    Enable RIA Services
  5. Click OK để khởi tạo solution.

    Bây giờ thì solution chứa hai projects: một client project và một server project. Client project có tên là RIAServicesExample và nó chứa mã Silverlight mà bạn dùng để tạo tầng presentation. Server project có tên là RIAServicesExample.Web và nó chứa phần code của tầng giữa(middle-tier).

    Projects Created

Khởi tạo Data Models


Trong phần này, bạn sẽ khởi tạo các lớp ADO.NET Entity đại diện cho các lớp của AdventureWorksLT database. RIA Services làm việc với nhiều lớp mô hình dữ liệu và nhiều nguồn dữ liệu khác nhau.

Lưu ý:

Khi sử dụng một Entity Data Model với Visual Studio 2010, bạn phải chọn tùy chọn Include foreign key columns in the model. Mặc định thì lựa chọn này được tự động thêm vào khi bạn sử dụng Entity Data Model Wizard. Bạn cũng phải sử dụng behavior mặc định của thông tin mà Entity Data Model mapping nhúng vào trong assembly.

Làm việc với dữ liệu tại tầng middle

  1. Trong cửa sổ Solution Explorer,click phải vào server project (RIAServicesExample.Web), chọn Add, và sau đó chọn New Item.

    Hộp thoại Add New Item xuất hiện.

  2. Trong hộp thoại đó, hãy chọn phần Data và sau đó chọn mẫu ADO.NET Entity Data Model.

  3. Đặt tên cho tập tin mới là AdventureWorksModel.edmx và click Add.

    Hộp thoại Entity Data Model Wizard xuất hiện.

  4. Trong phần khung Choose Model Contents, hãy chọn  Generate from database và click Next.

  5. Trong phần khung Choose Your Data Connection, tạo một kết nối dữ liệu đến database và click Next.

  6. Trong phần cửa sổ Choose Your Database Objects, hãy chọn các bảng  Address, Customer,CustomerAddress.

  7. Click Finish. Lúc này mô hình Entity models đã được thiết lập.

  8. Build  solution.


Khởi tạo Domain Service

Trong phần này, bạn sẽ thêm một domain service vào dự án tầng middle. Một domain service trình bày các data entity và các hoạt động của server project đến client project. Bạn có thể thêm business logic vào domain service để quản lí cách thức mà client tương tác với dữ liệu.

Để tạo một domain service

  1. Click đôi vào server project, và chọn Add and New Item.

  2. Trong danh sách hiện ra, hãy chọn Web trong phần khung bên trái và chọn Domain Service Class trong phần khung bên phải.

  3. Đặt tên cho tập tin là CustomerDomainService.cs (hoặc là CustomerDomainService.vb).

    Add Domain Service
  4. Click Add.

    Hộp thoại  Add New Domain Service Class xuất hiện.

  5. Hãy chắc là check box Enable client access được chọn.

  6. Chọn Customer entity và sau đó chọn Enable Editing cho bảng Customer.

    Add Entity
  7. Click OK.

    Và lớp domain service đã được tạo.

  8. Hãy mở tập tin CustomerDomainService.cs (hay là CustomerDomainService.vb).

    Lưu ý là tập tin này có các đặc điểm sau:

    • Lớp CustomerDomainService có từ  LinqToEntitiesDomainService<TContext> là một lớp  abstract base class trong RIA Services framework. Lớp cơ bản(base class) được sử dụng một cách tự động bởi vì domain service trình bày một lớp dữ liệu ADO.NET Entity.

    • Thường thì các base class liên kết với các entity class đã được tạo trong bước trước.

    • Lớp CustomerDomainService được đánh dấu với thuộc tính EnableClientAccessAttribute để xác định là nó được xuất hiện trong tầng client.

    • Một hàm query có tên là GetCustomers được tạo. Hàm này trả về mọi thành phần trong bảng Customers và không lọc hay sắp xếp gì cả.

    • Và còn tạo cả các phương thức insert, update, và delete các dòng dữ liệu.


Khởi tạo Silverlight Client

Vừa rồi bạn đã thêm business logic trong domain service. Và bây giờ, bạn chỉ cần sử dụng phương thức  GetCustomers đã tạo.

Bởi vì một liên kết RIA Services tồn tạu giữa client project và server project, các client proxy class được khởi tạo khi bạn build the solution. Những proxy class này cho phép bạn truy cập đến dữ liệu từ client.

Để thấy các client proxy class đã được tạo

  1. Hãy Build solution.

    Khi bạn build  solution, thì code sẽ được tạo trong client project.

  2. Trong cửa sổ Solution Explorer, click Show All Files dành cho client project. (Bạn hãy chọn client project là "Set as startup project")

    Lưu ý là thư mục Generated_Code chứa một tập tin code .

    Generated Code file
  3. Mở tập tin code trong thư mục Generated_Code.

    Lưu ý là tập tin này có các đặc điểm như sau:

    • Một WebContext class kế thừa từ lớp WebContextBase đã được tạo.

    • Một CustomerDomainContext class được suy ra từ lớp DomainContext đã được tạo. Lớp này có một phương thức tên là GetCustomersQuery  tương ứng với phương thức truy vấn đã được tạo trong domain service.

    • Một Customer class có nguồn gốc từ  Entity class được tạo cho entity do domain service trình bày. Lớp Customer entity trong client project tương ứng với Customer entity trên server.

Để hiển thị dữ liệu trong Silverlight client

  1. Hãy mở MainPage.xaml.

  2. Từ thanh Toolbox, kéo một  DataGrid control vào trong Grid element trong cửa sổ chứa mã XAML.

    Một XML namespace và một reference đến một Data assembly được thêm vào một cách tự động khi bạn kéo DataGrid từ thanh. Nếu bạn thêm DataGrid mà không kéo nó từ Toolbox, thì bạn phải thêm một reference là System.Windows.Controls.Data assembly và một XML namespace cho xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data". Thí dụ này đã có  XML namespace có tên là data, và bạn có thể thêm một cái tên khác cũng được.

  3. Đặt tên cho DataGridCustomerGrid như đoạn code XAML dưới đây.

    <UserControl 
        xmlns:data="clr-namespace:System.Windows.Controls;
                assembly=System.Windows.Controls.Data
    " x:Class="RIAServicesExample.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <data:DataGrid Name="CustomerGrid"></data:DataGrid> </Grid> </UserControl>
  4. Mở tập tin code phía sau của MainPage.xaml.

  5. Thêm câu lệnh using (C#) hay Imports (Visual Basic) cho namespace  RIAServicesExample.WebSystem.ServiceModel.DomainServices.Client namespace.

    RIAServicesExample.Web namespace là tập tin code phía sau được khởi tạo cho client project.

  6. Thêm đoạn code sau cho CustomerDomainContext, lấy các customers bằng cách gọi phương thức GetCustomersQuery, và kết nối kết quả vào trong DataGrid, như là đoạn code dưới đây:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using RIAServicesExample.Web;
    using System.ServiceModel.DomainServices.Client;
    
    namespace RIAServicesExample
    {
        public partial class MainPage : UserControl
        {
            private CustomerDomainContext _customerContext = 
                      new
    CustomerDomainContext(); public MainPage() { InitializeComponent(); LoadOperation<Customer> loadOp =
                            this._customerContext.Load(
                            this._customerContext.GetCustomersQuery()); CustomerGrid.ItemsSource = loadOp.Entities; } } }
  7. Chạy ứng dụng.

    Bạn sẽ thấy dữ liệu của data grid tương tự như sau.

    Results Grid
Nguồn của bài viết được dịch bởi kpopyo từ: http://msdn.microsoft.com/en-us/library/ee707376%28v=VS.91%29.aspx

Recent Comments

Leave the first comment for this page.