Wednesday, October 1, 2008

for … in Statement

ဒီ for.. in ကို javascript array ရဲ ့ element တစ္ခုခ်င္းစီကို ပတ္ခ်င္တဲ့ အခါမွာ သံုးပါတယ္။

ဥပမာ

<html>
<body>
<script type="text/javascript">

var x;
var mygreeting= new Array();

mygreeting[0] = "Hello";
mygreeting[1] = "World";
mygreeting[2] = "Greeting by Akela.";

for (x in mygreeting)
{
alert(mygreeting[x]);
}

</script>
</body>
</html>

အထက္ပါ ကုဒ္ေလးကို ခ်ခိုင္းတဲ့ အခါ ေအာက္ပါပံုအတိုင္း ၿမင္ရပါလိမ့္မယ္။




အာေကလာ

၂၇ စက္တင္ဘာ ၂၀၀၇

Thursday, September 18, 2008

Array တစ္ခု တည္ေဆာက္ၿခင္း

Javascript Array Object

Array တစ္ခုဆိုတာ variable တစ္ခုၿဖစ္ၿပီး တန္ဖိုးေတြ အမ်ားၾကီး သိမ္းဆည္းထားလို ့ ရပါတယ္။ javascript ရဲ ့ array ဟာ တၿခား programming ဘာသာရပ္ေတြ က array ေတြ လိုပါပဲ။
ေအာက္ပါအခ်က္မ်ားကို javascript မွာ array ကိုသံုးတဲ့ အခါ သိမွတ္ထားသင့္ပါတယ္။

၁။ ။ တန္းဖိုးေတြဟာ array တစ္ခုထဲကို သိမ္းဆည္းေတာ့မယ္ဆိုရင္ array နာမည္နဲ ့ ေနရာကို ေဖာ္ၿပၿပီး သိမ္းဆည္းႏုိင္ပါတယ္။ ဥပမာ - myFirstArray[2] = “Hello JS Array”;


၂။ ။ သိမ္းထားတဲ့ တန္းဖိုးေတြကို ၿပန္ၿပီးထုတ္ယူ သံုးစြဲၿခင္တဲ့ အခါမွာလည္း array နာမည္နဲ ့ ေနရာကို ေဖာ္ၿပၿပီး ၿပန္ထုတ္ႏိုင္ပါတယ္။ ဥပမာ - var varlue = myFirstArray[2]; (ဒါဆို ခုနက Hello JS Array ဆိုတဲ့ တန္ဖိုးကို ၿပန္ရပါမယ္။)

ေအာက္ပါ နည္းလမ္းနဲ ့ Array တစ္ခုကို တည္ေဆာက္လုိ ့ရပါတယ္။


 Var myFirstArray = new Array(3);

ဒါဆိုရင္ ကၽြန္ေတာ္တို႔ရဲ႕ myFirstArray ရဲ႕ length property ဟာ ၃ ျဖစ္သြားပါပီ။
myFirstArray ကို value ေတြထပ္ျဖည့္ရေအာင္.....

myFirstArray[0] = "This is first Item"; // Javascript ရဲ႕ Array က index 0 ကေနစတာပါ
myFirstArray[1] = new Object();
myFirstArray[2] = new Date();


ေနာက္တစ္မ်ိဳးစမ္းၾကည့္ရေအာင္

var myFirstArray = new Array();
myFirstArray.push("This is first Item");
myFirstArray.push(new Object());
myFirstArray.push(new Date());


Array ရဲ႕ push method ကိုသံုးရင္ Array object က Array ရဲ႕ length ကို auto increment လုပ္ေပးသြားပါတယ္။
အခုအခ်ိန္ myFirstArray.pop() ဆိုပီး Array object ရဲ႕ pop method ကိုေခၚလုိက္ရင္ myFirstArray ရဲ႕ length က ၁ ေလ်ာ့သြားပါပီ။
အဲဒီလိုပဲ myFirstArray ရဲ႕ အႀကီးဆံုး index က value (ဥပမာ ထဲက အတိုင္းဆိုရင္ new Date()) ကပ်က္သြားပါတယ္။
var lastVar = myFirstArray.pop() ဆိုရင္ myFirstArray ရဲ႕ ေနာက္ဆံုး index က value က lastVar ဆိုတဲ့ variable ထဲကိုေရာက္သြားပါမယ္။
myFirstArray ထဲကလည္း ပ်က္သြားပါပီ။ myFirstArray ရဲ႕ length property ကလည္း 2 ျဖစ္သြားပါမယ္။
(myFirstArray.length)



အာေကလာ၊ အဇူရီ
၁၄ စက္တင္ဘာ ၂၀၀၈

Fundamental concept of WCF (Microsoft Window Communication Foundation )

(ဒီပိုစ္ကို ၁၈ စက္တင္ဘာ ၂၀၀၇ အမွတ္တရ ဂုဏ္ၿပဳ ေရးပါသည္။)

အခုေနာက္ပုိင္း business solution အတြက္ software ေတြ ကိုေရးတဲ့အခါမွာ stand alone application ေတြ ေတာ္ေတာ္ရွားပါးသြားပါၿပီ။ distributed application ေတြပဲ ေရးလာၾကပါတယ္။ Microsoft ကလည္း .net framework 2.0 နဲ ့ ေနာက္ပိုင္းေတြမွာ ဒီအတြက္ အထူးတလည္ ၿပင္ဆင္ေပးခဲ့ပါတယ္။ စစခ်င္း .net remotnig ေနာက္ပိုင္းေတာ့ Window Communication Foundation (WCF) ဆိုၿပီးလုပ္လာပါတယ္။ အခုကၽြန္ေတာ္ ေရးမွာက WCF ရဲ ့အေၿခခံပါပဲ။ Fundamental Concepts ေတြပါ။ High-level View ပါပဲ။ ဒါေပမယ့္ ဒါေတြ သိထားမွ ဘယ္လို အလုပ္လုပ္လည္း ဆိုတာသိႏိုင္မွာၿဖစ္တယ္။ ဆက္ေလ့လာလို ့လြယ္ကူေစမွာၿဖစ္တဲ့ အတြက္ေၾကာင့္ပါ။ ၾကည့္ၾကစို ့ရဲ ့။

Windows Communication Foundation (WCF)

(၁) High-level Overview
(၁.၁) Messaging and Endpoints


WCF ဆိုတာ runtime တစ္ခု၊ ေနာက္ၿပီး services နဲ ့ clients ေတြၾကား messages ေတြ ပို ့တဲ့ စနစ္ (system) ေတြဖန္တီးဖို ့့ APIs ေတြစုစည္းထားတဲ့ ေနရာတစ္ခုပါ။ အဲဒါကို သံုးၿပီးေတာ့ တစ္ခုနဲ ့တစ္ခု ဆက္သြယ္လို ့ရတဲ့ application ေတြကို တည္ေဆာက္ယူလို ့ရပါတယ္။ အဲဒီ applications ေတြဟာ ကြန္ၿပဳတာတစ္လံုးထဲမွာလည္း ၿဖစ္ခ်င္ၿဖစ္မယ္၊ ဒါမွမဟုတ္ တၿခားတေနရာ၊ တၿခားႏိုင္ငံ၊ တၿခားကုမဏီတစ္ခု က ကြန္ၿပဳတာတစ္လံုးေပၚ မွာလည္းၿဖစ္ခ်င္ၿဖစ္မယ္။ ဒါေပမယ့္ WCF က services ေတြ၊ APIs ေတြ သံုးၿပီး ဆက္သြယ္လုပ္ရတယ္။ အတူတူ လုပ္ေဆာင္လို ့ရတယ္။

WCF ဟာ Messaging ေပၚမွာ အေၿခခံထားတဲ့ ေမာ္ဒယ္တစ္ခုပါပဲ။ အဲဒီထဲမွာ clients လို ့ေခၚတဲ့ ဆက္သြယ္မွဳ ့ (communication) ကို စမဲ့ application ေတြ၊ ေနာက္ services လို ့ေခၚတဲ့ clients ေတြ ဆက္သြယ္လာမွာကို ေစာင့္ဆိုင္းေနၿပီး တုန္ၿပန္ေပးမဲ့ application ေတြပါပါတယ္။ သတိၿပဳရမွာက application တစ္ခုတည္းက လည္း client ေရာ service ပါၿဖစ္ႏိုင္တယ္ဆိုတာပါပဲ။

Message ေတြဟာ endpoints ေတြၾကားမွာ ေပးပို ့ခံရပါတယ္။ endpoints ဆိုတာ message ေတြပို ့တဲ့ ေနရာ (send) ဒါမွမဟုတ္ လက္ခံတဲ့ေနရာ (receive) ပါ။ အဲဒီ endpoints ေတြကပဲ message ပို ့တဲ့၊ လက္ခံတဲ့ အခါမွာ လိုအပ္မဲ့ Information ေတြအားလံုးကို သတ္မွတ္ၿပဒါန္းေပးပါတယ္။ service တခုက တစ္ခု ဒါမွမဟုတ္ တစ္ခုထက္ပိုတဲ့ endpoints ေတြကို တည္ေဆာက္ေေပးထားတက္ပါတယ္။ client ေတြကေတာ့ services ေတြတည္ေဆာက္ေပးထားတဲ့ endpoint တစ္ခုခုနဲ့ ကိုက္ညီတဲ့ endpoint တစ္ခုကို တည္ေဆာက္ရပါတယ္။

Service တစ္ခုဟာ message ေတြကို ဘယ္လို ပို ့ရတယ္၊ ဘယ္လို ပံုစံရိွရမယ္၊ ဘယ္ကို ပို ့ရမယ္ဆိုတာေတြ၊ အၿခားလိုအပ္တဲ့ အရာေတြ အားလံုးကို metadata (data about data) အေနနဲ ့ေဖၚၿပထားတယ္။ အဲဒီအခါ client က အဲဒီ metadata ေတြ သံုးၿပီး သင့္ေတာ္တဲ့ WCF client နဲ ့ Communication stack ေတြကို တည္ေဆာက္ပါတယ္။

(WCF client, Communication stack ေတြ ဘာလဲဆိုတာ နားမလည္ရင္လည္းဆက္ဖတ္ပါ ေအာက္မွာ အကုန္ၿပန္ပါပါတယ္။)

(၁.၂) Communication Protocols

WCF ရဲ ့အဓိကအခ်က္က ေနရာမေရြး (ေနရာမ်ိဳးစံုက client ေတြက) service ေတြကို ဆက္သြယ္ႏိုင္တာဆိုေတာ့၊ network လိုလာပါတယ္။ အဲဒီ network ေပၚမွာ သံုးမဲ့ protocols ေတြဟာလည္း လိုအပ္လာပါတယ္။ ဒါေၾကာင့္
Communication stacks ေတြရဲ ့ လိုအပ္ခ်က္ တစ္ခုကေတာ့ transport protocol ေတြပါပဲ။ Messages ေတြကို ကၽြန္ေတာ္တို ့က intranets, Internet ေပၚကေန HTTP, TCP လို common transport protocol ေတြ သံုးၿပီး ေေနရာမ်ိဳးစံုကေန ေပးပို ့ ဆက္သြယ္ႏိုင္ပါတယ္။ ေနာက္ထပ္ transport ေတြကေတာ့ Microsoft Message Queuing (MSMQ) တုိ ့၊ Peer Networking mesh တို ့ပါပဲ။ တၿခား transport mechanisms ေတြကိုလည္း WCF ရဲ ့ ပါၿပီးသား (build-in) extension points ေတြသံုးၿပီး ထပ္ထည့္ႏိုင္ပါတယ္။

(၁.၃) Message Patterns

WCF မွာ အမ်ိုးမ်ိဳးေသာ message patterns ေတြကို သံုးႏိုင္ပါတယ္။ request-reply၊ one-way၊ duplex communication စသည္ၿဖင့္အသံုးၿပဳႏိုင္ပါတယ္။ ကြဲၿပားတဲ့ transports ေတြက ကြဲၿပားတဲ့ message patterns ေတြကို သံုးပါတယ္။ WCF APIs နဲ ့ runtime ေတြက message ေတြရဲ ့လံုၿခံဳမွဳကိုလည္းလုပ္ေပးပါတယ္။

(၂) WCF Terms

(၁) message
Message ဆိုတာ data ေတြပါ၀င္ဖြဲ ့စည္းထားတဲ့ အစုတခု။ သူမွာ body ၊ header စတာေတြအပါအ၀င္ တၿခားအစိတ္အပိုင္း ေတြလည္းပါ၀င္တယ္။

(၂) service
Service ဆိုတာကေတာ့ endpoint တစ္ခု ဒါမွမဟုတ္ တစ္ခုထက္ပိုၿပီး တည္ေဆာက္ေပး ထားတဲ့ ေနရာပါပဲ။ အဲဒီ endpoint တစ္ခုစီဟာ service operation တခု ဒါမွမဟုတ္ တစ္ခုထက္ပို ၿပီးရိွတက္တယ္။

(၃) endpoint
Endpoint ဆိုတာ message ေတြ ပို ့ရမဲ့၊ လက္ခံတဲ့ ေနရာတခုပါပဲ။ တခ်ိဳ ့ endpoint ေတြ
ကလက္ခံတဲ့ ဒါမွမဟုတ္ ပို ့တဲ့ အလုပ္တမ်ိဳးကိုပဲလုပ္ၿပီး ၊တခ်ိုဳ ့ကေတာ့ ႏွစ္မ်ိဳး လံုးကိုလုပ္ပါတယ္။ endpoint ေတြူက message ေတြ ပို ့ဖို ့အတြက္ လိပ္စာ (address) တစ္ခု ထုတ္ေပးတားတယ္။ ေနာက္ ဘယ္လိုနည္းနဲ ့ဆက္သြယ္လို ့ရတယ္ (communication mechanism) ဆိုတဲ့ အေၾကာင္းအရာ သတ္မွတ္ခ်က္ေတြ (specification) ကိုလည္း ထုပ္ေပးထားတယ္္။ ေနာက္ဆံုး ဘယ္လို message ေတြပို ့လို ့ ရတယ္ဆိုတာေတြပါ ေဖာ္ၿပေပးထားပါတယ္။ WCF service တစ္ခုဆိုတာဟာ endpoint ေတြ စုစည္းထားတဲ့ ေနရာတစ္ခုပါပဲ။ (is a world as a collection of service.)

(၄) address
Address တခုဟာ message ေတြကို ဘယ္မွာလက္ခံမယ္ဆိုတဲ့ ေနရာတခုကို ေၿပာၿပေပးပါတယ္။ သူကို Uniform Resource Identifier (URI) အေနနဲ ့သတ္မွတ္ေလ့ရိွတယ္။ ဒါေၾကာင့္ endpoint address ေတြဟာ ထပ္တူမရိွတဲ့ address (Unique Address) ေတြပါ။

(၅) binding
endpoint တခုဟာ ၿပင္ပ နဲ ့ဘယ္လို ဆက္သြယ္လုပ္ေဆာင္မလဲဆိုတာကို binding ကသတ္မွတ္ေပးပါတယ္။ Communication Infrastructure ၿဖစ္လာဖို ့အတြက္ binding element ေတြလို ့ေခၚဆိုတဲ့ components အစုေလးေတြ တခုေပၚတခု (stack on top of the other) တည္ေဆာက္ထားတယ္။ အႏိွမ့္ဆံုးအေနနဲ ့ binding က ဘယ္လို transports ေတြသံုးမယ္( HTTP , TCP/IP) ၊ ဘယ္လုိ encoding ေတြသံုးမယ္ (text or binary) စတာေတြကို သတ္မွတ္ေပးပါတယ္။ security နဲ ့ဆိုင္တဲ့ ကိစၥေတြ၊ endpoint ကသံုးမယ့္ message pattern ေတြကိုလည္း သတ္မွတ္ေပးပါတယ္။

(၆) binding element
Binding element တခုဟာ binding လုပ္ခ်င္းကိစၥရဲ ့အစိတ္အပိုင္းတခုကို ကိုယ္စားၿပဳပါတယ္။ transport တခု၊ encoding တခု စသည္အားၿဖင့္။ ဒါမွမဟုတ္ communication stack ေပၚမွာ ရိွတဲ့ ဘယ္ component မဆို binding element ေတြပါပဲ။

(၇) behaviors
Behavior ဆိုတာ client တခု၊ operation တခု၊ ဒါမွမဟုတ္ endpoint တခု၊ service တခု ကို run-time မွာ ဘယ္လို လုပ္သလဲဆိုတာကို ထိန္းတဲ့ component တခုပါပဲ။ behavior ေတြကို သူတို ့ရဲ ့ scope ေပၚမူတည္ၿပီး အဖြဲ ့ေလးေတြ ဖြဲ ့ထားပါတယ္။ common behaviors လို ့ဆိုရင္ endpoint အားလံုးနဲ ့ဆိုင္ပါတယ္။ globally ေပါ့။ service behavior ဆိုရင္ service နဲ ့ ဆက္ႏြယ္ေနတဲ့ကိစၥ ေတြနဲ ့ဆိုင္ပါတယ္။ endpoint behavior လို ့ဆိုရင္ endpoint နဲ ့ဆက္ႏြယ္ေနတဲ့ အသံုးၿပဳမွဳ ေတြနဲ ့ ဆိုင္ပါတယ္။ operation-level behaviors ဆိုရင္ေတာ့ operation တစ္ခုခ်င္းစီနဲ ့ သက္ဆိုင္ပါတယ္။ ဥပမာ- endpoint behaviors ဆိုပါစို ့။ သူက endpoint နဲ ့ပဲဆိုင္တဲ့ အရာေတြကို ၿပဥာန္းေပးပါတယ္။ security credential ကိုဘယ္မွ သြားရွာရမလဲဆိုတာမ်ိဳးေပါ့။

(၈) configuration နဲ ့ coding
Application တခုကို ထိန္းခ်ဳပ္တဲ့ ကိစၥမွာ coding ကေနတဆင့္ ၊ ဒါမွမဟုတ္ configuration file ကေနတဆင့္ ၊ (၀ါ) ႏွစ္ခုလံုး ကို သံုးၿပီး လုပ္ႏိုင္ပါတယ္။ configuration ကေန လုပ္တာက programmer (developer) မဟုတ္တဲ့ သူေတြကိုပါ client (၀ါ) service မွာ လိုတဲ့ အရာေတြကို coding ေရးၿပီးေပ့မယ့္ ၿပဳၿပင္ခြင့္၊ ထိန္းခ်ဳပ္ခြင့့္ ေပးတဲ့ အားသာခ်က္ရိွပါတယ္။ အဲဒီလုိလုပ္တဲ့ ကိစၥမွာ program coding ကို ၿပန္ၿပီး recompile လုပ္စရာမလိုပဲ သံုးလို ့ရပါတယ္။ coding ကေတာ့ programmer (developer) ေတြကို client (၀ါ) service ေတြ အေပၚမွာ တိက်တင္းက်ပ္တဲ့ ထိန္းခ်ဳပ္မွဳေတြ လုပ္ဖို ့ ခြင့္ၿပဳပါတယ္။ configuration ဖိုင္ကေန စီစဥ္ထိန္းခ်ဳပ္ထားတဲ့ ဘယ္အရာကိုမဆို လိုအပ္တယ္ဆိုရင္ coding ကေန ေၿပာင္းလဲ ႏိုင္ပါတယ္။

(၉) service operation
Service operation တခုက service တခု လုပ္ေဆာင္မဲ့ ကိစၥတခု (operation) ကို service code ေတြကတဆင့္ သတ္မွတ္ထားတဲ့ ဟာကို ေၿပာတာပါ။ ဒီ service တခုကလုပ္ေဆာင္ေပးမဲ့ အရာေတြကို WCF Client ေတြဆီ method ေတြအေနနဲ ့ ထုတ္ေပးထားတယ္။ အဲဒီ method ေတြက တန္ဖိုး တခုကို ၿပန္ရင္ ၿပန္မယ္။ သူဆီကို arguments ေတြ လက္ခံရင္ လက္ခံမယ္။ ဒါမွမဟုတ္ ဘာတန္ဖိုးမွ မၿပန္တာ၊ ဘာ argument မွ လက္မခံတာ။ ဒီလိုလည္းၿဖစ္ႏိုင္ပါတယ္။

(၁၀) service contract
Service contract ဆိုတာကေတာ့ ခုနက service operation ေတြကို စုစည္းေပးထားတဲ့ အစုတစ္ခုပါပဲ။ Contract တခုကို အမ်ိဳးမ်ိဳးေသာ အဆင့္ေတြ သတ္မွတ္လို ့ရတယ္။ ဥပမာ- namespace အဆင့္မွာ သတ္မွတ္တဲ့ contract။ အမ်ားဆံုးလုပ္ေလ့ရိွတာကေတာ့ ကိုယ္ၾကိဳက္တဲ့ program ဘာသာရပ္ (C#, VB, J#) နဲ ့ interface တခုေဆာက္ၿပီး အဲဒီမွာ ServiceContractAttribute ဆိုတဲ့ attribute ကို ေၾကညာေပးလိုက္တာပဲ။ တကယ္ အလုပ္လုပ္မဲ့ service code ေတြက အဲဒီ interface ကို အေမြဆက္ခံ (inherit) လိုက္တာပါပဲ။

(၁၁) operation contract
operation contract ဆိုတာကေတာ့ operation တစ္ခုဆီကို ပို ့ေပးရမယ့္ parameters ေတြ၊ ဒါမွမဟုတ္ အဲဒီ operation ကေန ၿပန္မဲ့ အမ်ိဳးအစားေတြ ကို သတ္မွတ္ေပးပါတယ္။ ကၽြန္ေတာ္တို ့ service contract နဲ ့ တည္ေဆာက္ထားတဲ့ (အေပၚကအဆင့္) interface တစ္ခုမွာ operation contract ကို OperationContractAttribute ဆိုတဲ့ attribute ေလးကို method ရဲ ့ အေပၚမွာ ထည့္ေပးလိုက္ရံုနဲ ့ တည္ေဆာက္ႏိုင္ပါတယ္။ အဲဒါဆို အဲဒီ method ေလး (WCF အေနနဲ ့ဆို operation ေလးဟာ) ဟာ operation contract နဲ ့ ၿဖစ္သြားပါၿပီ။

(၁၂) message contract
message contract ဆိုတာက ကၽြန္ေတာ္တို ့အသံုးၿပဳမဲ့ မက္ေဆ့ (message) ရဲ ့ ပံုစံ (format) ပါပဲ။ ဥပမာ - မက္ေဆ့ (message) ေတြဟာ headers ထဲမွာ ရိွရမလား။ ဒါမွမဟုတ္ body ထဲမွာပဲ ရိွရမလား။ မက္ေဆ့ ေတြအတြက္ ဘယ္လို လံုၿခံဳေရး နည္းလမ္း (security) ေတြ အသံုးၿပဳမလဲ စတာေတြကို သတ္မွတ္ေပးတဲ့ contract ပါ။

(၁၃) fault contract
fault contract ေတြဟာ service တစ္ခုမွာ အမွား (error) ေတြၿဖစ္လာတဲ့ အခါ ေခၚတဲ့သူဆီ၊ service ကို သံုးတဲ့သူဆီကို အဲဒီ အမွား ေတြ ပို ့ေဆာင္ေပးႏိုင္ေအာင္လို ့ service operation နဲ ့ ေပါင္းစပ္ထားႏုိင္ပါတယ္။ Operation တစ္ခုမွာ အမွား ေတြ မရိွတာလည္းၿဖစ္ႏိုင္သလို ့ အမ်ားၾကီးရိွေနတာလည္း ၿဖစ္နိုင္ပါတယ္။ ဒီ အမွားေတြ ကို SOAP (Simple Object Application Protocols) ရဲ ့ အမွားေတြၿဖစ္ၿပီး programming မွာေတာ့ Exception ေတြ အေနနဲ ့ ကိုင္တြယ္ပါတယ္။

(၁၄) data contract
Service တစ္ခုက အသံုးၿပဳမဲ့ ေဒတာ အမ်ိဳးအစား (data types) ေတြကို ေဒတာ၂ (metadata – data about data) ေတြမွာ ေၾကညာေပးရပါတယ္။ ဒါမွ service ကို အသံုးၿပဳမဲ့ အရာေတြက ဆက္သြယ္အသံုး ၿပဳႏိုင္မွာၿဖစ္တယ္။ အဲဒီ လို ေဒတာ အမ်ိဳးအစားေတြကို ေဖာ္ၿပေပးတာကို data contract လို ့ေခၚပါတယ္။ အဲဒီ ေဒတာအမ်ိဳးအစားေတြကို မက္ေဆ့ ရဲ ့ အစိတ္အပိုင္းတစ္ခုအေနနဲ ့ ထည့္ေပးႏိုင္ပါတယ။္ ဥပမာ - parameter အေနနဲ ့ ဒါမွမဟုတ္ return type အေနနဲ ့။ တကယ္လို ့ service က ရိုးရွင္းတဲ့ ေဒတာ အမ်ိဳးအစား (int, string,lone စသည္) ကို ပဲ အသံုးၿပဳမယ္ဆိုရင္ေတာ့ data contract ကို အထူးတလည္ ေၾကညာေပးစရာမလိုပါဘူး။

(၁၅) hosting
Service တစ္ခုဟာ process တစ္ခုေပၚမွာ လုပ္ေဆာင္ရပါတယ္။ အခံ process မရိွပဲ မရပါဘူး။ host တစ္ခုဆိုတာ application တစ္ခုၿဖစ္ၿပီး သူက service ရဲ ့ သက္တမ္း (lifetime) ကို သတ္မွတ္ ၿပဥာန္းေပးပါတယ္။ Service ေတြဟာ ကိုယ့္ကိုယ္ အခံ (host) လုပ္ထားတာလဲ ၿဖစ္ႏိုင္ပါတယ္။ ဒါမွမဟုတ္ အၿခား process တစ္ခုကို အခံ (host) လုပ္တာလည္းၿဖစ္ႏိုင္ပါတယ္။

(၁၆) self-hosted service
Self-hosted service ဆိုတာ developer တစ္ေယာက္က တည္ေဆာက္ထားတဲ့ process တစ္ခု ထဲမွာ လုပ္ေဆာင္ (run) ေနတဲ့ service ကို ေခၚတာၿဖစ္တယ္။ developer က အဲဒီ service ရဲ ့ သက္တမ္းကို ထိန္းခ်ဳပ္ထားတယ္၊ service ရဲ ့ properties ေတြကို ကိုင္တြယ္တယ္၊ service ကို ဖြင့္တယ္ ( service ဆီ ကို client က အ၀င္ message လာတာကိုေစာင့္ၿခင္း) ၊ ၿပီးေတာ့ service ကို ပိတ္တယ္။

(၁၇) hosting process
Hosting process ဆိုတာကေတာ့ application တစ္ခုၿဖစ္ၿပီး သူရဲ ့ ရည္ရြယ္ခ်က္က service တစ္ခုအတြက္ အခံ (host) လုပ္ေပးဖို ့ပါပဲ။ ဘာေတြပါလည္းဆိုေတာ့ - Internet Information Service (IIS), Window Activation Service (WAS), Windows Services ေတြပါပဲ။ ဒီနည္းလမ္းမွာ အခံ (host) ေတြက service ရဲ ့သက္တမ္းကို ထိန္းခ်ဳပ္ပါတယ္။ ဥပမာ - IIS ကိုသံုးၿပီး service assemblyနဲ ့ configuration file ပါတဲ့ virtual directory တစ္ခု တည္ေဆာက္ႏိုင္တယ္။ ၿပီးေတာ့ message ေတြ ေရာက္လာတဲ့ အခါ၊ IIS က service ကို စတင္ၿပီး သူရဲ ့ သက္တမ္းကို ထိန္းခ်ဳပ္ပါတယ္။

(၁၈) instancing
Service တစ္ခုမွာ instancing model တစ္ခုရိွပါတယ္။ instancing model ၃မ်ိဳးရိွတယ္။ single - ဒီမွာ single CLR (Common Language Runtime) object တစ္ခုကပဲ client အားလံုးကို လက္ခံ လုပ္ေဆာင္ေပးပါတယ္။ per call – ဒီမွာ CLR object အသစ္တစ္ခုကို client တစ္ခုဆီကို လက္ခံလုပ္ေဆာင္ဖို ့ အတြက္ ဖန္တီးေပးပါတယ္။ per session - ဒီမွာေတာ့ CLR object အစု တစ္စု ကို သီၿခား session တစ္ခုစီ အတြက္ ဖန္တီးေပးပါတယ္။ ဘယ္ ပံုစံကို သံုးမလဲဆိုတာကေတာ့ service ရဲ ့ အမ်ိဳးအစား အသံုးၿပဳမဲ့အေနအထားေပၚမူတည္ပါတယ္။

(၁၉) client application
Client application တစ္ခုဟာ program တစ္ခုၿဖစ္ၿပီး သူက မက္ေဆ့ (message) ေတြကို endpoints တစ္ခုကေန တစ္ခုကို ပို ့ေပး လက္ခံ ေပးတာကို လုပ္တယ္။ ဒီ client application ေတြဟာ WCF client instance တစ္ခုကို တည္္ေဆာက္ၿပီး WCF client method ကို ေခၚၿပီး အသံုးၿပဳတဲ့ အခါမွာ စတင္ၿဖစ္တည္ပါတယ္။ အေရးၾကီးတာ တစ္ခုကို သတိၿပဳရမွာက application တစ္ခုတည္းကပဲ client ေရာ service ေရာ ၿဖစ္ႏိုင္တယ္ဆုိတာပါ။

(၂၀) WCF client
WCF client ဆိုတာ service operation ေတြကို methods ေတြအၿဖစ္ တင္ၿပေပးတဲ့ client-application တစ္ခုပါပဲ။ ဘယ္ application ေတြမဆို service ကို အခံ (host) လုပ္ေပးတဲ့ ဟာ အပါအ၀င္ WCF client ေတြကို အခံ (host) အၿဖစ္လုပ္္ေပးႏိုင္ပါတယ္။ ဒါေၾကာင့္ service တစ္ခုဟာ အၿခား service တစ္ခုရဲ ့ WCF Client ေတြပါရိွႏိုင္ပါတယ္။
WCF client ကို ServiceModel Metadata Utility Tool (Svcutil.exe) ကို သံုးၿပီး အလိုအေလၽႊွ်ာက္ ထုတ္ယူႏိုင္ပါတယ္။
.
(၂၁) metadata
Service တစ္ခုရဲ ့ metadata ေတြက အဲဒီ service ရဲ ့ အခ်က္အလက္ေတြကို ေဖာ္ၿပေပးပါတယ္။ အဲဒီ အခ်က္အလက္ေတြကို သံုးၿပီးမွာ အၿပင္က client ေတြက service ကို ဆက္သြယ္လုပ္ေဆာင္ႏိုင္မွာ ၿဖစ္တယ္။ အဲဒီ metadata ကိုေတြကို ရယူအသံုးၿပဳၿပီး serviceModel Metadata Utility Tool (svcutil.exe) က WCF client ေတြနဲ ့ လိုအပ္တဲ့ configuration file ေတြကို service နဲ ့ ဆက္သြယ္လုပ္ကိုင္ဖို ့ ထုတ္ေပးႏိုင္တာၿဖစ္တယ္။ service တစ္ခုအတြက္ metadata က ထုတ္ေပးတဲ့ ေဒတာက XML Schema documents ရယ္၊ WSDL document တို ့ ၿဖစ္တယ္။

(၂၂) Security
WCF ရဲ ့ Secuity ဆိုတာ confidentiality ရိွၿခင္း၊ (မက္ေဆ့ ေတြကို ပံုဖ်တ္ (encryption) လုပ္ၿခင္း)၊ integrity ရိွၿခင္း၊ (မက္ေဆ့ေတြ ပ်က္ဆီးတာမ်ိဳးကို နားလည္ၿခင္း)၊ authentication (serviers နဲ ့ clients တို ့မွာ ၀င္ႏိုင္ခြင့္ ရိွၿခင္း)၊ authorization (အရင္းအၿမစ္ (resource) ေတြကို သံုးခြင့္ ရိွၿခင္း) စတာေတြကို ေၿပာတာၿဖစ္တယ္။ ဒီ လို လုပ္ေဆာင္ခ်က္ေတြကို လက္ရိွ ရိွၿပီးသား လံုးၿခံဳေရး (security) ေတြၿဖစ္တဲ့ TLS ၊ HTTP (HTTPS)၊ တို ့ကေနလုပ္ေဆာင္ႏိုင္သလို၊ အသစ္ၿဖစ္တဲ့ WS-* ရဲ ့ လံဳၿခံဳးေရး စံညြန္းသတ္မွတ္ခ်က္ (security specification) ကေနလည္းလုပ္ေဆာင္ႏိုင္ပါတယ္။

WS-*

ဒါကေတာ့ Web Service (WS) ရဲ ့ စံညြန္းသတ္မွတ္ခ်က္ေတြကို ညြန္းပါတယ္။ WS-Security WS-ReliableMessaging စသည္ၿဖင့္ WCF မွာ သံုးရမဲ့ သတ္မွတ္ခ်က္ေတြပါ။

ဒါေလးကေတာ့ မိတ္ဆက္ သေဘာပါပဲ။
အခ်ိ္န္ရရင္ ဆက္ၿပီးေရးပါမယ္။
ဆက္ၿပီး ေလ့လာႏိုင္ၾကပါေစဗ်ာ။

ရည္ညြန္း။ ။ MSDN

အာေကလာ
၁၈ စက္တင္ဘာ ၂၀၀၈