WCF in Silverlight
Download
Report
Transcript WCF in Silverlight
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
Trước khi có LinQ
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']
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
{
class Program
{
static void 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
from itemName in srcExpr
join itemName in srcExpr on keyExpr equals keyExpr
(into itemName)?
let itemName = selExpr
where predExpr
orderby (keyExpr (ascending | descending)?)*
select selExpr
group selExpr by keyExpr
into itemName query-body
Các toán tử LINQ phân theo
nhóm
Operator Type
Operator Name
Aggregation
Aggregate, Average, Count, LongCount, Max, Min, Sum
Conversion
Cast, OfType, ToArray, ToDictionary, ToList, ToLookup,
ToSequence
Element
DefaultIfEmpty, ElementAt, ElementAtOrDefault, First,
FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault
Equality
EqualAll
Generation
Empty, Range, Repeat
Grouping
Group By
Joining
GroupJoin, Join
Ordering
OrderBy, ThenBy, OrderByDescending, ThenByDescending, Reverse
Partitioning
Skip, SkipWhile, Take, TakeWhile
Quantifiers
All, Any, Contains
Restriction
Where
Selection
Select, SelectMany
Set
Concat, Distinct, Except, Intersect, Union
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
Kiến trúc của LinQ
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
Using WCF in Silverlight
Tạo một Project Web Application (File -> New ->Project > Silverlight Application) .
Thêm LINQ to SQL Classes
Chọn Datasource
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">
Access WS in silverlight
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
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
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ất chứa các thông tin quản lý như dung
lượng cho phép
phần thứ 2 chứ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
Host in IIS
Đầu
tiên ta phải tạo một project Silverlight
Publish ra một thư mục
Ví dụ là TestHost
Sau
đó ta phải tạo một virtual
Alias.
Ví dụ là Testhost
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