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
