WCF RIA Services.
Giới thiệu
Để xây dựng các ứng dụng doanh nghiệp nghiêm túc trên nền tảng Silverlight (và các nền tảng khách hàng khác), bạn phải làm việc với rất nhiều dữ liệu. Và thông thường, dữ liệu đó không cư trú trên máy khách, thông thường nó được phân tán trong nhiều khách hàng và được lưu trữ và thao tác bởi các dịch vụ back-end. Nếu bạn cố gắng tự viết kiến trúc ứng dụng loại này, bạn phải đối mặt với nhiều công nghệ và viết rất nhiều mã để xử lý. Cuối cùng, hầu hết những gì bạn đang làm là đẩy và kéo dữ liệu từ máy khách đến back-end và gọi các hoạt động trên máy chủ từ ứng dụng khách Silverlight. Điều tuyệt vời là nếu phẩn lớn phần của công việc liên quan đến đẩy-kéo và xử lý dữ liệu có thể tự động hóa dành cho bạn, cho phép bạn tập trung vào dữ liệu bạn cần, các quy tắc liên quan đến việc xử lý dữ liệu đó và cách hiển thị nó trong ứng dụng khách.
Bạn đang xem: WCF RIA Services Part 1: Getting Started
Điều này chính xác là những gì WCF RIA Services làm cho bạn. WCF RIA Services là một phần mới của .NET 4 và Silverlight 4 framework cho phép bạn nhanh chóng xây dựng ứng dụng khách Silverlight N-Tier mà không cần tập trung vào việc kết nối với dịch vụ back-end, xử lý logic và truy cập dữ liệu. Bài viết này và các bài viết tiếp theo trong chuỗi này sẽ giúp bạn nắm vững tất cả khả năng của WCF RIA Services.
RIA Services giúp bạn viết một tập hợp mã máy chủ, nhưng có các phần tương ứng của mã dịch vụ này có sẵn trên máy khách mà không cần sao chép hoặc viết mã máy khách để truy cập nó. Phía máy chủ, WCF RIA Services giúp bạn xác định các dịch vụ, công thức thực thể miền và logic hỗ trợ. Phía máy khách, mã WCF RIA Services tạo ra các lớp tương ứng cho phép bạn dễ dàng gọi các dịch vụ đó, có các thực thể tương tự và đầy đủ trên phía máy khách, cùng với logic xác thực và các loại mã khác bạn có thể chia sẻ giữa máy khách và máy chủ. Sơ đồ dưới đây cho thấy phần nào trong kiến trúc của bạn WCF RIA Services tập trung vào.
Để thấy điều này trong hành động, trong bài viết này tôi sẽ nhanh chóng chạy qua các khái niệm cơ bản của WCF RIA Services. Trong các bài viết sau trong chuỗi này, tôi sẽ tìm hiểu sâu hơn về những gì xảy ra phía dưới và cách thích nghi từ việc sử dụng đơn giản nhất của WCF RIA Services tôi sẽ hiển thị trong bài viết này, đến các tình huống thực tế hơn. Trong những bài viết sau đó, tôi sẽ đào sâu vào các vấn đề như bảo mật, xác thực, đồng thời, tùy chỉnh và kết hợp WCF RIA Services với các phương pháp khác như mô hình Model-View-ViewModel (MVVM) và kiểm thử đơn vị.
Nhưng trước tiên chúng ta cần tìm hiểu các khái niệm cơ bản. Ứng dụng tôi sẽ sử dụng trong chuỗi này là một ứng dụng quản lý công việc và thời gian. Hãy tưởng tượng bạn cần có khả năng nhập các công việc cho cá nhân, theo dõi thời gian họ dành cho các công việc đó, liên kết các công việc với khách hàng và dự án và vân vân. Rõ ràng có rất nhiều hệ thống và ứng dụng khác hỗ trợ chức năng này, nhưng điều này sẽ tạo ra một miền dễ hiểu và dễ hiểu cho ứng dụng chúng ta sẽ xây dựng.
Trong bài viết này, chúng ta sẽ đi qua các khái niệm chính sau đây trong WCF RIA Services:
- Liên kết dự án – Một liên kết giữa một dự án khách Silverlight và dự án web máy chủ hoặc thư viện lớp. Dự án máy chủ xác định hoặc tham chiếu các dịch vụ miền, thực thể, siêu dữ liệu và mã chia sẻ được xác định trên phía máy chủ. Khi đã thiết lập liên kết, mã phù hợp được tạo ra trong dự án khách ở thời gian biên dịch.
- Dịch vụ miền – Đây là cấu trúc cốt lõi của WCF RIA Services. Dịch vụ miền xác định các hoạt động được hỗ trợ trên phía máy chủ. Những hoạt động này thường tập trung chủ yếu vào các hoạt động CRUD đối với các loại thực thể, nhưng cũng có thể là các hoạt động tùy ý để triệu hồi trên phía máy chủ từ khách hàng. Những hoạt động này được tiếp cận tự động thông qua WCF và có thể được gọi từ mã máy khách được tạo ra mà không cần biết nhiều về WCF.
- Thực thể – bạn xác định các loại thực thể trên máy chủ và một định nghĩa của cùng một loại thực thể trên phía máy khách được tạo ra để sử dụng trên phía máy khách. Bạn có thể thêm kiểm tra hợp lệ và các loại siêu dữ liệu khác vào định nghĩa thực thể, điều này sẽ ảnh hưởng đến mã được tạo ra trên phía máy khách, cho phép bạn chỉ duy trì một định nghĩa phía máy chủ. Các loại thực thể trên phía máy khách và máy chủ được sử dụng để tuần tự hóa và giải tuần tự hóa dữ liệu qua dịch vụ WCF. Các loại thực thể có thể được tạo ra với Entity Framework, LINQ to SQL hoặc có thể là Plain Old CLR Objects (POCOs) mà bạn tự định nghĩa.
- Miền ngữ cảnh – Đây là bên phía máy khách tương đương với dịch vụ miền. Đó là mã được tạo ra ở phía máy khách cho phép bạn dễ dàng truy cập vào chức năng đặt tại phía máy chủ. Bên trong, nó chứa một WCF proxy thực hiện các cuộc gọi dịch vụ và nó cũng quản lý việc tạo các truy vấn thực thi trên phía máy chủ, theo dõi các thay đổi cho các thực thể đang được xử lý trên máy khách và nhiều hơn nữa.
- DomainDataSource – Đây là một đối tượng nguồn dữ liệu có thể được sử dụng để thực hiện truy vấn và gửi yêu cầu chỉnh sửa cho phía máy chủ. Nó được kết nối với miền ngữ cảnh và phát sinh các cuộc gọi thông qua miền ngữ cảnh đó thay mặt bạn để truy vấn và cập nhật các thực thể. Nó cũng hỗ trợ trực tiếp ràng buộc dữ liệu từ XAML hoặc cũng có thể được sử dụng xử lý ẩn.
Tải xuống Mã ví dụ.
Bước 1: Tạo dự án ứng dụng Silverlight và Liên kết với Dự án máy chủ
Ứng dụng mà tôi xây dựng trong chuỗi này dựa trên một cơ sở dữ liệu đơn giản lưu trữ thông tin công việc và thực thể liên quan. Để theo dõi các bước, bạn cần chạy script TaskManager.sql trong mẫu tải xuống để tạo lược đồ cơ sở dữ liệu và điền nó với một số thực thể mẫu. Khi bạn đã có cơ sở dữ liệu, bạn sẵn sàng bắt đầu tạo ứng dụng. Bạn cũng cần cài đặt Silverlight 4 Tools cho Visual Studio 2010, nó cũng cài đặt hỗ trợ WCF RIA Services.
Tạo một dự án ứng dụng Silverlight mới có tên TasksManager. Bạn có thể sử dụng WCF RIA Services với bất kỳ loại dự án Silverlight nào, bao gồm cả mẫu ứng dụng kinh doanh Silverlight được thêm vào bởi WCF RIA Services. Nhưng để bắt đầu đơn giản, tôi sẽ chỉ sử dụng mẫu ứng dụng Silverlight.
Sau khi bạn nhấp OK trong cửa sổ dự án mới, bạn sẽ xem cửa sổ thông thường để tạo dự án ứng dụng web. Điều mới mà bạn sẽ thấy là một hộp kiểm ở cuối để Bật WCF RIA Services. Kiểm tra hộp đó để tạo liên kết giữa dự án khách và dự án máy chủ để WCF RIA Services có thể tạo ra mã máy khách phù hợp dựa trên các dịch vụ và thực thể miền bạn sẽ tạo.
Xem thêm : "Kiến Tập" trong Tiếng Anh là gì: Định Nghĩa, Ví Dụ Anh Việt
Nhấp OK và các dự án sẽ được tạo.
Bước 2: Tạo các thực thể mô hình miền
WCF RIA Services chủ yếu liên quan đến việc dịch chuyển dữ liệu giữa máy khách và máy chủ cho bạn. Vì vậy bạn cần có một số dữ liệu để làm việc. Mặc định, Entity Framework được hỗ trợ tốt nhất. Với WCF RIA Services Toolkit, cũng có hỗ trợ cho LINQ to SQL. Và bạn có thể tạo dịch vụ miền của riêng bạn nếu bạn muốn làm việc với POCO. Trong bài viết này, bạn sẽ sử dụng Entity Framework.
Nhấp chuột phải vào dự án máy chủ TaskManager.Web trong Khám phá giải pháp và chọn Thêm > Mục mới, chọn danh mục Dữ liệu bên trái và chọn Mô hình dữ liệu thực thể ADO.NET, và đặt tên là TasksModel.edmx.
Nhấp vào Thêm và bạn sẽ thấy Trình hướng dẫn Mô hình dữ liệu thực thể. Trong bước đầu tiên, hãy để tùy chọn Tạo từ cơ sở dữ liệu được chọn và nhấp vào Tiếp theo. Tạo kết nối mới trong bước tiếp theo đến cơ sở dữ liệu TaskManager bạn đã tạo với tài liệu SQL mẫu ở đầu.
Tên kết nối nên mặc định là TaskManagerEntities, điều đó tốt. Nhấp vào Tiếp theo.
Trong bước tiếp theo, Chọn các đối tượng Cơ sở dữ liệu của bạn, chọn hộp kiểm cho Bảng để chọn tất cả các bảng và nhấp vào Hoàn thành.
Bây giờ bạn có mô hình dữ liệu Entity Framework cho tất cả các bảng trong cơ sở dữ liệu. Trong bài viết này, bạn chỉ sẽ làm việc với bảng Task, nhưng trong các bài viết sau trong chuỗi bạn sẽ làm việc với một hoặc hai loại khác.
Xây dựng dự án để đảm bảo mọi thứ ổn định. Nếu bạn quên xây dựng sau khi thêm mô hình dữ liệu thực thể của mình, nó sẽ không xuất hiện khi tạo dịch vụ miền ở bước tiếp theo.
Bước 3: Xác định dịch vụ miền
Cho đến nay, điều cụ thể cho WCF RIA Services bạn đã làm là chọn hộp để tạo liên kết giữa dự án khách và máy chủ. Bây giờ bạn sẽ thực hiện hoạt động cốt lõi xung quanh RIA Services: xác định dịch vụ miền. Nhấp chuột phải vào dự án máy chủ TaskManager.Web và chọn Thêm > Mục mới. Chọn danh mục Web và chọn Lớp Dịch vụ Miền. Đặt tên lớp là TasksDomainService.
Tiếp theo, bạn sẽ thấy một hộp thoại cho phép bạn chọn một số tùy chọn cho dịch vụ của bạn, bao gồm tùy chọn quan trọng nhất về các thực thể nó sẽ hiển thị.
Xem thêm : Ý NGHĨA CỦA TỪ ‘AROMA’
Đối với bài viết này, bạn chỉ làm việc với Công việc, vì vậy hãy chọn loại thực thể đó và để các tùy chọn còn lại mặc định. Trong các bài viết sau, tôi sẽ giải thích chi tiết hơn về một số tùy chọn khác và cách chúng hoạt động. Nhấp vào OK và dịch vụ miền của bạn sẽ được tạo.
Việc xây dựng lớp kết quả như sau:
Lớp LinqToEntitiesDomainService<T> cung cấp giao tiếp giữa mô hình dữ liệu thực thể và các dịch vụ sẽ được hiển thị bởi WCF RIA Services. Thuộc tính EnableClientAccess làm cho mã phía máy khách được tạo ra trong dự án khách liên kết ở thời gian biên dịch. Từ đó, bạn thêm các phương thức vào dịch vụ miền của mình để thực hiện các hoạt động CRUD trên các thực thể và có thể chỉ hiện các hoạt động có thể được triệu hồi từ phía máy khách.
Trong trường hợp này, vì bạn không chọn tùy chọn Enable Editing trong hộp thoại trước đó, mã ban đầu chỉ chứa một phương thức truy vấn. Tôi sẽ giải thích chi tiết hơn về các tùy chọn và các biến thể bạn có cho các phương thức truy vấn trong bài viết tiếp theo. Nhưng phương thức được tạo ra ở đây sử dụng quy ước để chỉ ra rằng đó là một phương thức truy vấn dựa trên kiểu trả về của IQueryable<T> và tên phương thức. Nó chỉ đưa ra một truy vấn SQL với một đối tượng ObjectContext mô hình dữ liệu thực thể được tạo ra làm thành viên bởi lớp cơ sở và sử dụng nó để trả về tất cả các Công việc. Nếu bạn muốn thay đổi truy vấn đó để sắp xếp, lọc hoặc tạo trang kết quả, miễn là bạn trả về một IQueryable<T>, WCF RIA Services sẽ có thể hiển thị nó như một dịch vụ và tạo ra mã máy khách để tiêu thụ nó.
Xây dựng dự án để đảm bảo mọi thứ ổn định và để tạo mã phía máy khách. Nếu bạn Chỉ hiện tất cả các tệp trong dự án TaskManager, bạn sẽ thấy một thư mục Generated_Code với tệp TaskManager.Web.g.cs. Đây là mã được tạo ra. Tôi sẽ xem xét chi tiết hơn về nó trong bài viết tiếp theo.
Bước 4: Truy xuất dữ liệu vào giao diện người dùng với DomainDataSource
Cho bước này, bạn sẽ tận dụng khả năng kéo và thả của WCF RIA Services bằng cách sử dụng DomainDataSource trực tiếp trong giao diện người dùng. Trong một bài viết sau, tôi sẽ thảo luận về mô hình MVVM, tại sao đây không phải là kiến trúc tốt nhất cho các ứng dụng phức tạp và cách bạn vẫn có thể tận dụng được DomainDataSource nhưng lại thực hiện việc đó ở phía sau trong một dịch vụ cục bộ.
Tuy nhiên, cho bài viết này, hãy mở MainPage.xaml trong dự án TaskManager. Thiết kế sẽ mở. Mở cửa sổ Nguồn dữ liệu (Menu Dữ liệu > Hiển thị Nguồn dữ liệu). Nó sẽ mất một khoảng thời gian lần đầu tiên bạn mở nó sau khi tạo mã máy khách, cho nên hãy kiên nhẫn. Nhưng bạn nên thấy các thực thể cho các loại được trả về bởi dịch vụ miền được liệt kê trong cửa sổ Nguồn dữ liệu.
Kéo và thả loại thực thể Task vào MainPage.xaml trong thiết kế. Một DataGrid sẽ được tạo ra với các cột phù hợp cho mỗi thuộc tính trên loại thực thể và một DomainDataSource cũng được khai báo và kết nối với phương thức GetTasksQuery trên lớp TasksDomainContext. Bạn có thể nhìn vào XAML và xóa tất cả các thuộc tính kích thước và vị trí của DataGrid (Height, Width, HorizontalAlignment,VerticalAlignment và Margin) để DataGrid điền vào Grid chứa nó.
Build và chạy ứng dụng. Bạn nên thấy một cái gì đó tương tự như sau.
Tổng kết
Trong bài viết này, tôi đã trình bày các khái niệm cơ bản đằng sau một ứng dụng WCF RIA Services và hướng dẫn bạn qua ứng dụng WCF RIA Services đơn giản nhất có thể. Bạn đã tạo một Model Dữ liệu Thực thể, một Dịch vụ Miền RIA và tiêu thụ dịch vụ đó trong khách hàng sử dụng DomainDataSource và TasksDomainContext được tạo ra. Trong các bài viết còn lại trong chuỗi này, tôi sẽ trình bày chi tiết hơn về mỗi khía cạnh của WCF RIA Services, bao gồm các vấn đề thực tế của mô hình giao diện người dùng, bảo mật, đồng thời, khả năng kiểm tra, gỡ lỗi và các khía cạnh khác.
Tải Mã ví dụ.
Về tác giả
Brian Noyes là Kiến trúc sư chính của IDesign, một Microsoft Regional Director và Connected System MVP. Ông là một diễn giả hàng đầu thường được đánh giá cao tại các hội nghị trên toàn thế giới bao gồm Microsoft TechEd, DevConnections, DevTeach và các hội nghị khác. Ông là tác giả của các cuốn Developing Applications with Windows Workflow Foundation, Smart Client Deployment with ClickOnce và Data Binding in Windows Forms 2.0. Brian bắt đầu lập trình như một sở thích trong khi lái máy bay F-14 Tomcats trong Hải quân Hoa Kỳ, sau đó biến đam mê mã vào sự nghiệp hiện tại của mình. Bạn có thể liên hệ với Brian qua blog của ông tại http://briannoyes.net.
Nguồn: https://stamboom-boden.com
Danh mục: Là Gì