DomainContext and DomainService Data transfer object


การรับส่งข้อมูล ระหว่าง Silverlight และ Service…
จะเป็นลักษณะการส่งผ่านอ็อบเจ็ก(Data Transfer Object: DTO)…

และบน Silverlight มีเฟรมเวิร์คหนึ่งที่ช่วยให้…
การจัดการข้อมูลบน Server เป็นเรื่องง่ายขึ้น…

  • เราไม่ต้องสร้าง Service ด้วยตัวเอง…
  • เราไม่ต้องสร้าง Business Logic Layer : BLL ด้วยตัวเอง…
  • ทุกอย่างถูกจัดการด้วย เฟรมเวิร์ค ดังกล่าว…

 

RIA Service

นั่นคือเฟรมเวิร์ค WCF Rich Internet Application Service : WCF RIA Service หรือ RIA Service…

clip_image002

เราเพียงสร้าง DomainService…
แล้วชี้แหล่งข้อมูลให้มัน…
Build โซลูชั่น 1 ครั้ง…
DomainService จะสร้าง Proxy Clas.…
ไปยังไคลเอ็นต์ ได้คลาส DomainContext…

clip_image004

 

DTO : Data Transfer Object

DomainContext ทำให้เราสามารถจัดการข้อมูล…
ผ่าน Silverlight ได้ง่ายขึ้น…

โดยข้อมูลจะถูกส่งผ่าน DomainContext ในรูปของอ็อบเจ็กต์…
ไปยัง DomainService บนเซอร์ฟเวอร์…

เช่น:

เราจะจัดการข้อมูลใบ Order…
ซึ่งข้อมูลใบ Order ประกอบส่วน Header คือ Order และ Detail คือ Order_Detail

clip_image006

 

เมื่อเราสร้างใบ Order ใหม่…
เราจะสร้าง อ็อบเจ็กต์ของ Order และ Order_Detail

var newOrder = new Order

{

OrderID = 10001,

CustomerID = “<CustomerID>”,

EmployeeID = 1234,

OrderDate = DateTime.Now,

ShipAddress = “<ShipAddress>”,

//….

};

var newOrderDetail = new Order_Detail

{

OrderID = 10001,

ProductID = 12345,

UnitPrice = 1234,

Quantity = 1,

//…

};

clip_image008

 

แล้วใส่อ็อบเจ้กต์ใบ Order ใหม่…
เข้าไปใน DomainContext

NorthwindContext dc = new NorthwindContext();

dc.Orders.Add(newOrder);

dc.Order_Details.Add(newOrderDetail);

clip_image010

 

แล้วสั่งบันทึกข้อมูล…
ด้วยการเรียกเมธอด SubmitChanges

dc.SubmitChanges();

clip_image012

 

อ็อบเจ็กต์ทั้งสองก้อน…
จะถูก Transfer ขึ้นไปสู่ Server

clip_image014

 

เข้าไปสู่ Service ของเรา…
ซึ่งก็คือ DomainService…
แล้วเมื่อ DomainService รับอ็อบเจ็กต์มาเรียบร้อยแล้ว…
จะส่งเข้าฐานข้อมูลด้วยการเรียกเมธอด Submit()

clip_image016

 

Transaction:

ตรงจุดนี้ ที่ DomainService จะส่งอ็อบเจ็กต์…
เข้าฐานข้อมูล เราสามารถใช้ TransactionScope ครอบเอาไว้…
เพื่อว่า อ็อบเจ็กต์ใด อ็อบเจ็กต์หนึ่ง…
ไม่ว่าจะเป็น Order หรือ Order_Detail…
ถ้าส่งข้อมูลไม่ถูกต้องมา…โปรแกรมจะยกเลิก…
การบันทึกข้อมูลอ็อบเจ็กต์ก่อนหน้าทั้งหมด…

Override เมธอด Submit:

การใช้ Transaction ให้ทำการ override เมธอด Submit

public override bool Submit(ChangeSet changeSet)

{

bool result = false;

using (System.Transactions.TransactionScope tr =

new System.Transactions.TransactionScope())

{

result = base.Submit(changeSet);

tr.Complete();

}

return result;

}

clip_image018

 

-:จบบริบูรณ์:-


Introduction to Silverlight 4 รุ่นที่ 2 <img src='/images/icon_new.gif' width='23' height='9' border='0'>

Introduction to Silverlight 4 รุ่นที่ 2
Public Course: เปิดรับลงทะเบียน

อ.นุชิต (nano MVP) / 4 วัน (10,000 9,000 บาท*) เรียนทุกวันอาทิตย์ที่ 18, 25 กันยายน และ 2, 9 ตุลาคม 2554
ณ Professional Training Service ชั้น 20 อาคาร Q House สาทร

รายละเอียด
 



ผู้เขียน:

clip_image020

** รู้จักกับผู้สอน อ.นุชิต **
JANAWAT Blog: https://janawat.wordpress.com
Nuchit’s Profile @microsoft
https://mvp.support.microsoft.com/profile/nuchit
Facebook:
https://www.facebook.com/nuchit
Twitter:
http://twitter.com/janawat 
Silverlight Business Application Instructor: http://bit.ly/GF250-01, http://bit.ly/GF150-02

เกี่ยวกับ

Nuchit Atjanawat is a Microsoft MVP, GreatFriends Community Leader, WindowsITPro Columnist(Mr.Nano), Silverlight Business Application Instructor, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession. He has a very good skill over Silverlight, LightSwitch, C#, XAML & Blend. He shares his technical findings, tutorials in his technical blog. Follow his Blog and Facebook page to be updated on latest articles. - Technical Blog: https://janawat.wordpress.com - WindowsITPro Columnist(Mr.Nano): http://windowsitpro.net - The GreatFriends.Biz Community Discussion Board (nano): http://greatfriends.biz - witter: https://twitter.com/janawat - Facebook Page: https://www.facebook.com/nuchit - Instructor: http://bit.ly/GF250-01, http://bit.ly/GF150-02

เขียนใน RIA Services

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

In Archive
%d bloggers like this: