500 likes | 626 Views
Networking in Silverlight. Group: F5 Nguyễn Mạnh Cường Đoàn Văn Phi Nguyễn Văn Tấn Hoàng Minh Thi. Các vấn đề nghiên cứu. Using LINQ to SQL in silverlight Using WCF in Silverlight Access WS in silverlight Isolated storage Host in IIS. LinQ- Language Integrated Query.
E N D
Networking in Silverlight Group: F5 Nguyễn Mạnh Cường Đoàn Văn Phi Nguyễn Văn Tấn Hoàng Minh Thi
Các vấn đề nghiên cứu • Using LINQ to SQL in silverlight • Using WCF in Silverlight • Access WS in silverlight • Isolated storage • Host in IIS
LinQ- Language Integrated Query • Mục đích của LinQ. • Kiến trúc của LinQ. • LinQ làm việc như thế nào. • So sánh LinQ với các công nghệ liên quan. • Hiệu suất của LinQ trong lập trình.
Nội dung • LinQ là gì? • LinQ Queries • LinQ Operators • LinQ Providers • Kiến trúc của LinQ
LinQ là gì • LinQ = Language Integrated Query • LinQ làm việc với nhiều loại dữ liệu như: • CSDL quan hệ • XML • Object
Truy vấn Objects, sử dụng vòng lặp và điều kiện foreach(Customer c in customers) if (c.Region == "USA") ... • Truy vấn CSDL, sử dụng T_SQL SELECT * FROM Customers WHERE Region='USA' • Truy vấn XML sử dụng XPath/XQuery //Customers/Customer[@Region='USA'] Trước khi có LinQ
Khi có LinQ • Khi có LinQ chúng ta chỉ cần 1 câu truy vấn như sau: var usCustomer = from customer in customers where customer.Region==“USA” select customer;
Ví dụ: using System; using System.Linq; namespace Demo01 { classProgram { staticvoid Main(string[] args) { string[] greetings = { "hello world", "hello LINQ", "hello Apress" }; var items = from s in greetings where s.EndsWith("LINQ") select s; foreach (var item in items) Console.WriteLine(item); Console.ReadLine(); } } }
Cấu trúc của LinQ • Cấu trúc của LinQ gần giống với SQL fromitemNameinsrcExpr joinitemNameinsrcExpronkeyExprequalskeyExpr (intoitemName)? letitemName=selExpr wherepredExpr orderby (keyExpr(ascending | descending)?)* selectselExpr groupselExprbykeyExpr intoitemName query-body
Truy vấn LinQ Có 2 cách viết truy vấn LinQ như sau: • Theo kiểu thông thường: • Lambda Expression:
LinQ cung cấp những gì? • LinQ to Objects • LinQ to SQL • LinQ to XML • LinQ to DataSets • LinQ to Entities
Các nguồn tham khảo: • http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx 101 LINQ Examples • http://msdn.com/linq LINQ Home • http://www.asp.net/learn/linq-videos LINQ Videos • http://chanmingman.spaces.live.com/blog/cns!FC20790B8D5B95F4!399.entry Sự khác nhau giữa LinQ và DataSets
Tạo một Project Web Application (File -> New ->Project -> Silverlight Application) .
Chuột phải vào Web Project chọn Add New, bên trong templates chọn Silverlight enabled WCF Service
Một số điểm khác biệt so với WCF standard • Chỉ có 1 lớp Services1.cs • Chứa thuộc tính ServiceContract và • [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Trong web.Config : • <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> • Mặc định của WCF sử dụng wsHttpBinding Tuy nhiên nó chỉ hỗ trợ basic binding, vì vậy bạn cần thay đổi binding trong web.config tương ứng như sau • <endpoint address="" binding="basicHttpBinding" contract="SQLData_Web.IService1">
Truy cập web service trong sliverlight • Truy cập Web Service • Cách tạo một Service trong Visual Studio 2008 • Demo chương trình
Truy cập web service trong sliverlight • 2 cơ chế khác nhau cho service để tùy chỉnh quyền truy cập cross-domain: • Đặt tập tin clientaccesspolicy.xml ở gốc của domain nơi mà service được lưu trữ để thiết lập quyền truy cập của cross-domain tới service. • Đặt tập tin crossdomain.xml hợp lệ ở gốc của domain nơi service được lưu trữ. Tập tin phải được đánh dấu là public cho toàn domain
Truy cập web service trong sliverlight • Sử dụng tập tin clientaccesspolicy.xml để cho phép truy cập cross-domain • Tạo service cho phép máy khách Silverlight truy cập • Tạo tập tin clientaccesspolicy.xml, cho phép truy cập vào các service
Truy cập web service trong sliverlight • Lưu tập tin clientaccesspolicy.xml tới gốc của domain nơi service được lưu trữ • Ví dụ: • nếu service được lưu trữ tại http://fabrikam.com thì tập tin phải đặt tại http://fabrikam.com/clientaccesspolicy.xml.
Truy cập web service trong sliverlight • Sử dụng tập tin crossdomain.xml để cho phép truy cập cross-domain • Tạo service cho phép Silverlight client truy cập • Tạo tập tin crossdomain.xml có những thiết lập dưới đây. Tập tin phải được cấu hình để cho phép truy cập vào service từ bất kỳ tên miền khác, hoặc nó không được nhận ra bởi Silverlight 2
Truy cập web service trong sliverlight • Lưu tập tin crossdomain.xml vào gốc của domain là nơi mà các service được lưu trữ trên máy chủ. Ví dụ, nếu service được lưu trữ trên máy chủ • Tham khảo demo tại trang: • http://www.dotnetcurry.com/ShowArticle.aspx?ID=208
Cách tạo một web service Bước 1. Tạo một ứng dụng Silverlight Application Project sử dụng Visual Studio 2008.
Cách tạo một web service • Bước 2. Thêm một Web Service vào Web Site của bạn. Trong cửa sổ Solution Explorer của bạn , click chuột phải lên nút Web Site , chọn Add-> New Item… • Có 3 mẫu cung cấp các chức năng cho Web Service: • Silverlight-enabled WCF Service. • WCF Service • Web Service.
Cách tạo một web service Chọn “Web Service” Thay đổi tên cho giống như “MyService.asmx” và click vào nút “Add”
Cách tạo một web service • Bước 3: Thêm một Service Reference Rebuild lại Solution của bạn (Ctrl+Shift+B). Nếu bạn chuyển sang bước kế tiếp mà không rebuild bạn sẽ gặp hộp thoại sau:
Cách tạo một web service • Trong cửa sổ solution explorer, click chuột phải lên nút References và chọn “Add Service Reference…”. • Tiếp ngay sau sẽ xuất hiện hộp thoại là “Add Service Reference”. Click vào nút “Discover” để tìm web service của bạn. • Thay đổi Namespace thành bất cứ gì bạn muốn cho reference này và click vào nút “OK”.
Cách tạo một web service • Vào lúc này , bạn đã thiết lập được web service của mình được tham khảo một cách thích đáng từ ứng dụng Silverlight của bạn.
Cách tạo một web service • Bước 4. Thực hiện gọi từ ứng dụng Silverlight của bạn vào web service của bạn. [WebMethod] public string HelloWorld() { return "Hello World"; }
Cách tạo một web service • Khi thay đổi file WebService1.asmx.cs, load lại thì click chuột phải lên ServiceReference1 và chọn “Update Service Reference”.
Cách tạo một web service • Gọi ứng dụng Silverlight đến hàm HelloWorld(), đoạn code nằm trong MainPage.xaml.cs
Isolated Storage • Isolated Storage như một hệ thống file ảo để lưu trữ dữ liệu trong một thư mục ẩn trên máy tính của bạn • Nó chia dữ liệu vào làm 2 phân riêng biệt: • Phần thứ nhấtchứa các thông tin quản lý như dung lượng cho phép • phần thứ 2chứa dữ liệu thực sự Mỗi ứng dụng Silverlight được phân bố một vùng riêng trong hệ thống lưu trữ này với dung lượng lưu trữ mặc định là 1 MB. Để sử dụng IsolatedStorage bạn phải using System.IO.IsolatedStorage; System.IO;
Isolated Storage Ưu điểm: Isolated Storage là một thay thế cho cookie, đặc biệt là nếu bạn đang làm việc với một tập lớn dữ liệu. Một số ví dụ về khả năng của Isolated Storage bao gồm undo lại một số thao tác của ứng dụng, hay giỏ hàng, các cài đặt về cửa sổ hay bất kỳ cài đặt nào mà bạn muốn truy cập vào lần nạp tiếp theo.
Isolated Storage • Các vấn đề có thể phát sinh: • Người quản trị có thể đặt giới hạn đĩa trên mỗi người dùng • Isolated Storage được đặt trong một thư mục ẩn trong hệ thống • Không hoàn toàn an toàn và người dùng có thể thay đổi hoặc xóa các file • Tuy nhiên, nếu muốn người dùng không thể thay đổi các file, bạn có thể dùng các lớp mã hóa để mã lại các file này trước khi lưu. • Các máy tính có thể bị khóa bởi các chính sách bảo mật và các ứng dụng sẽ không thể lưu được vào IsolatedStorage.
Host in IIS • Đầu tiên ta phải tạo một project Silverlight • Publish ra một thư mục
Nhấn Next • Và trỏ đến thư mục publish ở trên
Nhấn Next và chọn Read, Run script(such as ASP), Execute, Browse. • Finish
Lưu ý • Nếu ta cài đặt IIS sau khi cài .Net Framework có thể bạn sẽ nhận được thông báo lỗi • Để giải quyết vấn đề này bạn phải chạy câu lệnh aspnet_regiis –i Trong cửa sổ command của vs 2008