Post on 17-Oct-2015
transcript
Bi 2
M HNH LP TRNH VI
WINDOWS COMMUNICATION FOUNDATION
Mc lc
1 M hnh lp trnh WCF ..................................................................................................................................... 2 1.1 S dng phng php hng i tng hay hng dch v? .......................................................2 1.2 Service Model (M hnh dch v) .................................................................................................4 1.3 Cc phng php lp trnh vi WCF ............................................................................................6
1.3.1 Declarative programming (Phng php khai bo) ..............................................................6
1.3.2 Explicit programming (Phng php lp trnh trc tip) .....................................................7
1.3.3 Phng php s dng tp tin cu hnh ..................................................................................7
2 Xy dng mt dch v WCF .............................................................................................................................. 9 2.1 Ci t WCF .................................................................................................................................9
2.1.1 .NET Framework 3.5 SP1 .....................................................................................................9
2.1.2 Visual Studio 2008 SP1 ........................................................................................................9
2.2 To dch v WCF u tin ca bn...............................................................................................9 2.2.1 To ng dng pha server .....................................................................................................9
2.2.2 Pht hnh thng tin v dch v ...........................................................................................18
2.2.3 To ng dng pha client ....................................................................................................23
2.3 Cch khc to tham chiu client .........................................................................................25
3 Cu hi n tp .................................................................................................................................................. 27
4 Ti liu tham kho ........................................................................................................................................... 28
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 2
Nhn lt qua th thy rng WCF c v ri rm phc tp. Tuy nhin nu bn hiu v WSDL (Web
Service Description Language) v v Web services (cc dch v web), th vic nm c cc khi nim
trong WCF rt n gin. Nhng nu khng quen v cc khi nim trn, hiu c khi nim trong
WCF thng qua bi trc qu l mt vic hi qu sc, do WCF c qu nhiu lp v thnh phn.
Tuy vy, WCF hay ch l n em n mt m hnh lp trnh v dch v rt n gin. Mc d nn
tng bn di cho WCF tng i ln, WCF c xy dng trn c s .NET Framework do bn c
th s dng ngn ng lp trnh v nn tng quen thuc lm vic vi n. Thm na, khi pht trin cc
dch v vi WCF bn ch cn bit cch s dng mt phn ca cc lp m thi. Cch tt nht hc
cch pht trin cc dch v vi WCF l lm vic trc tip vi n. Bi ny gii thiu vi cc bn m hnh
lp trnh vi WCF, ng thi hng dn cc bn xy dng mt dch v WCF u tin.
1 M hnh lp trnh WCF
1.1 S dng phng php hng i tng hay hng dch v?
Nu cc bn hc qua mn hc v cc phng php lp trnh hn s thy c 2 phng php chnh
l hng th tc v hng i tng. V phng php hng i tng trong thi gian gn y c
pht trin rt mnh v c h tr ngay trong cc ngn ng lp trnh nh C# hay VB.NET. Khi lm vic
vi cc dch v web bn lm quen vi mt phng php na l lp trnh hng dch v (Service-
oriented programming). Microsoft cung cp nhiu cng c trn .NET Framework h tr phng
php lp trnh ny thng qua cc lp trong khng gian tn: System.Web.Services.
Nh vy khi lm vic vi WCF bn c hai la chn l hng i tng v hng dch v. Vy ta
nn s dng phng php no? Cu tr li l dng c hai. Ni mt cch n gin l phng php hng
i tng c s dng pht trin cc ng dng trn desktop, cn phng php hng dch v c
s dng kt ni cc ng dng vi nhau. iu quan trng y l lm sao hiu c s khc
nhau gia hai phng php v hiu c khi no chng c s dng v s dng nh th no ng thi
cng phi hiu v cc li ch chng cung cp.
V hng i tng c th hiu nh sau. Cc ng dng hng i tng l hai hay nhiu lp ph
thuc ln nhau v chia s chung cc kiu d liu. Nhng lp ny lin lc vi nhau thng qua cc li gi
cc hm m lp i tng cung cp.
Cc ng dng hng dch v l cc chng trnh khng bit g v nhau. Mi ng dng lin lc vi
ng dng khc thng qua cc bn tin. im c bit l cc bn tin ny c gi t mt ng dng sang
ng dng khc m khng quan tm ti nn tng m dch v ang chy.
Khi pht trin cc dch v WCF, iu quan trng l cn hiu s lin kt gia hng i tng v
hng dch v. Khi lm vic vi .NET Framework bn chc chn rt quen thuc vi thut ng lp (class)
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 3
v giao din (interface). Cc thut ng ny vn c s dng khi pht trin dch v WCF. Cc lp v
giao din l phn hng i tng trong WCF, cn phn hng dch v trong WCF s c thy khi bn
a vo cc thuc tnh WCF nh ngha cc thc th.
V d, lp sau y nh ngha mt giao din hng i tng
public interface DichVuBanHang
{
decimal TinhGiaVanChuyen(string diachi, decimal trongluong)
{
// thc hin tnh ton
}
decimal TinhTienThue(decimal tongGiaTien)
{
// thc hin tnh ton
}
}
Ta s c phn hng dch v cho dch v WCF khi thm vo cc thuc tnh cho giao din trn
[ServiceContract]
public interface DichVuBanHang
{
[OperationContract]
decimal TinhGiaVanChuyen(string diachi, decimal trongluong)
{
// thc hin tnh ton
}
[OperationContract]
decimal TinhTienThue(decimal tongGiaTien)
{
// thc hin tnh ton
}
}
Nh vy l qua v d trn cc bn c th thy mi lin kt gia phng php hng i tng v
hng dch v trong WCF. Cc bn cha cn quan tm ti cc thuc tnh [ServiceContract] v
[OperationContract] vi, bi v nhng thuc tnh ny, v cn nhiu th khc na s c gii thiu mt
cch chi tit khi thch hp.
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 4
1.2 Service Model (M hnh dch v)
Nu bn tng lm vic vi dch v web, bn s thy m hnh ny quen thuc vi bn theo mt
cch no . Khi bn to mt dch v web, bn thc s to ra mt dch v (service). Dch v web cha
mt ti liu XML m t tt c mi th cn bit v dch v . Ti liu ny c m t bng ngn ng
Web Service Description Language (ngn ng m t dch v web). N cha ba phn:
Service (dch v): Cha thng tin v v tr ca dch v
Binding: Cha thng tin v cch lin lc vi dch v, nh dch v s dng giao thc g,
vv.
PortType (kiu cng): Gii thch v dch v s lm g
M hnh dch v trn WCF cng tng t nh vi m hnh dch v web. im khc bit l cch
t tn. Trong WCF cc phn khng c gi l service, binding, v portType m c gi tng ng l
address (a ch), binding, v contract.
M hnh dch v WCF c cung cp trong khng gian tn System.ServiceModel. Khng gian tn
ny cha rt nhiu lp, nhng bn hon ton khng cn bit ton b chng. s dng m hnh v xy
dng dch v, ta thng s dng mt s lp sau:
Lp M t
BasicHTTPBinding L binding m cc im cui dch v c th s dng lin lc
vi cc ng dng khch v dch v web (ASMX)
NetMsmqBinding L binding m cc im cui dch v c th s dng lin lc
vi cc MSMQ khch v cc dch v khc
NetNamedPipeBinding L binding m cc im cui dch v c th s dng lin lc
vi cc ng dng khch/dch v trn cng mt my
NetTCPBinding L binding m cc im cui dch v c th s dng lin lc
vi cc ng dng khch/dch v cc my khc nhau
WSHTTPBinding L binding m cc im cui dch v c th s dng lin lc
vi cc ng dng khch/dch v s dng cc giao dch phn tn v
cc phin lm vic bo mt v tin cy c.
EndpointAddress Lp biu din a ch duy nht c cung cp v truy xut c
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 5
cho my khch lin lc vi im cui dch v
EndpointAddressBuilding L phng php to mi cc a ch u cui vi cc gi tr
tham s xc nh
ChannelFactory L phng php trong cc kiu knh khc nhau c to ra
v qun l, v a ti cho cc ng dng khch gi bn tin ti cc
im cui
Identity Cch m mt nh danh c xc nh, cho php xc thc gia
cc im cui khi trao i bn tin
MessageHeader Biu din ni dung ca mt u bn tin SOAP
ServiceHost Phng php cung cp vt cha cho cc dch v
ReliableSession Cung cp truy xut ti cc thuc tnh ca thnh phn binding
trong phin lm vic tin cy.
nh ngha vic lin lc ca dch v, ta thng hay s dng cc lp sau
Lp M t
AddressHeader Phn u cha thng tin a ch c s dng xc nh v
lin lc vi mt im cui
AddressHeaderCollection Mt tp hp cc u a ch
Binding Tp hp cc thnh phn binding, mi binding nh ngha cch
m mt im cui lin lc vi th gii bn ngoi
BindingContext Cung cp a ch v thng tin binding cn thit cho vic xy
dng knh
BindingElement Biu din mt thnh phn binding, c s dng xy dng
cc binding
CustomBinding S dng nh ngha v xy dng mt tu bin binding t mt
tp cc thnh phn binding
Message Mt n v ca lin lc gia cc im cui
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 6
MessageHeader Ni dung ca u bn tin SOAP
MessageHeaders Tp hp cc u bn tin
1.3 Cc phng php lp trnh vi WCF
C mt s phng php lp trnh vi WCF, mi phng php c u im v khuyt im ring ca
n. iu c bit v WCF l lun c hn mt cch gii quyt mt vn trong WCF, v bn khng
nht thit phi chn duy nht mt phng php no. Trong thc t, cch lm tt nht l t hp cc
phng php c c s linh hot v mm do cho dch v ca bn.
C ba phng php hay c s dng khi pht trin dch v WCF nh sau:
Phng php khai bo
Phng php lp trnh trc tip
Phng php s dng tp tin cu hnh
1.3.1 Declarative programming (Phng php khai bo)
Lp trnh khai bo t c thng qua cc thuc tnh. Nhng thuc tnh ny c s dng nh
ngha cc contract v xc nh hnh x ca dch v. Chng c s dng xc nh thm cc tham s
thay i cc chi tit ca contract v hnh x dch v.
Thuc tnh ServiceContract dng quy nh l giao din ny nh ngha cc chc nng ca
mt dch v. Thuc tnh OperationContract c s dng cc hm quy nh rng hm ny
c khai bo l mt phn ca dch v. l tt c nhng g cn to ra mt dch v WCF.
Thm na, bn khng nht thit phi s dng cc giao din (interface) khi ci t mt dch v, iu
ny cng ging nh vic bn khng cn phi s dng giao din nh ngha mt lp. Tuy vy bn nht
thit phi quy nh phn no thuc v dch v. Bn c th nh ngha nhng phn khc cn cho giao din,
nhng ch nhng hm (phng thc) c gn thuc tnh [OperationContract].
V d ta c mt dch v thc hin php tnh cng gia 2 s nguyn AddInt v 2 s thc
AddDouble. Ta khai bo dch v nh sau:
[ServiceContract]
public interface ICalcService
{
[OperationContract]
int AddInt(int x, int y);
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 7
[OperationContract]
double AddDouble(double x, double y);
}
Nh vy dch v ca chng ta sau khi khai bo s c 2 phng thc (khai bo vi thuc tnh
OperationContract) l AddInt v AddDouble. Tuy nhin khi khai bo trong C#, vic t tn
AddInt v AddDouble, v c th c mt s hm add cho cc kiu d liu khc, c th rt gn li
thnh mt tn hm Add m thi. Nhng cc dch v li khng cho php t trng tn hm nh th.
Chng ta c th khai bo thm vi thuc tnh OperationContract thc hin, cch lm nh sau:
[ServiceContract]
public interface ICalcService
{
[OperationContract(Name="AddInt")]
int Add(int x, int y);
[OperationContract(Name="AddDouble")]
double Add(double x, double y);
}
Cc bn c th thy l chng ta s dng c php np chng tn trong C# v s dng thm tham s
Name quy nh thm tn hm dch v. Ngoi u im trong vic gii quyt np chng tn hm, ta
cn thy mt li ch khc na l, vic quy nh tham s Name trong thuc tnh OperationContract
cn cho ta thm linh hot trong vic i tn cc hm trong giao din m khng lm thay i nh ngha
dch v, ngha l cc ng dng khc s dng dch v ny khng cn phi bin dch li.
1.3.2 Explicit programming (Phng php lp trnh trc tip)
L phng php lp trnh hng i tng, bn lm vic trc tip vi cc lp v giao din cung cp
bi m hnh i tng ca WCF. Lm vic trc tip vi m hnh i tng cho php nh pht trin tnh
linh hot cao hn v kh nng iu khin tt hn thng qua m ngun ca h. Thm na n cho php
iu khin su hn rt nhiu so vi phng php khai bo v phng php s dng tp tin cu hnh.
1.3.3 Phng php s dng tp tin cu hnh
Cng ging nh phng php khai bo, c rt nhiu th m bn c th quy nh lin quan n hnh
x ca mt dch v thng qua tp tin cu hnh ca dch v. iu hay trong cch tip cn ny l nhng
thay i tp tin cu hnh hon ton khng cn phi bin dch li dch v mi s dng c.
Sau y l v d s dng tp tin cu hnh nh ngha dch v tnh ton trong v d ca phn
phng php khai bo.
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 8
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 9
2 Xy dng mt dch v WCF
2.1 Ci t WCF
2.1.1 .NET Framework 3.5 SP1
xy dng mt dch v WCF, u tin bn cn phi ci t .NET Framework 3.5 SP1. Thc ra ch
cn .NET Framework 3.0 l , tuy nhin .NET Framework 3.5 SP1 cn cung cp thm cho bn nhiu
tnh nng na, nn bn nn ci .NET Framework 3.5 SP1. Bn ci t ca framework c Microsoft
cung cp trang web http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-
8319-81da479ab0d7&displaylang=en hoc ti http://download.microsoft.com/download/2/0/e/20e90413-
712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe
2.1.2 Visual Studio 2008 SP1
Sau khi ci t .NET Framework 3.5 SP1, bn thc hin ci t Visual Studio 2008 bn Express
hoc bn Professional tu theo bn c bn no. Nu kinh ph hn hp, bn c th ti v bn Visual Studio
2008 Express Edition min ph trn trang web ca Microsoft, link y:
http://go.microsoft.com/?linkid=9350817
Gi y bn sn sng to ra dch v u tin trn WCF
2.2 To dch v WCF u tin ca bn
Bn c th hnh dung ng dng chng ta s xy dng nh sau. Cng ty Contoso cn xy dng mt
h thng qun l cc nhn vin ca cng ty. Ban u, chng ta cn phi xy dng mt ng dng server
Cung cp danh sch cc nhn vin, v
Cho php hi v ngy sinh ca mt nhn vin no .
Sau cn mt ng dng pha client lm nhng vic sau
Hin th danh sch cc nhn vin
Chn mt nhn vin v hin th ngy sinh ca nhn vin .
2.2.1 To ng dng pha server
Bc 1. To ng dng
1. M Visual Studio 2008, chn to mi C# Console Project t tn l StaffService, xem
Figure 1
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 10
Figure 1 To mi project
2. Thm tham chiu ti System.ServiceModel.dll.
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 11
Figure 2 Tham chiu ti ServiceModel
Bc 2. To contract dch v
1. nh ngha giao din s c s dng nh l contract cho ng dng ca chng ta, thm
vo thuc tnh ServiceContract cho giao din
2. nh ngha 2 hm nh on m ngun sau, cc hm ny ng vai tr l cc contract
operations miu t chc nng ca dch v
[ServiceContract]
public interface IStaff
{
[OperationContract]
string DisplayStaff();
[OperationContract]
DateTime GetBirthday(int staffId);
}
Bc 3. Ci t dch v
1. nh ngha lp Staff ci t giao din IStaff
2. Thc hin ci t cho 2 hm c nh ngha trong giao din IStaff
using System;
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 12
namespace StaffService
{
public class Staff : IStaff
{
#region IStaff Members
public string DisplayStaff()
{
return "1. L Anh\n2. Trn Vn Bnh\n3. Nguyn Vn
Cng\n4.inh Vn Dng";
}
public DateTime GetBirthday(int staffId)
{
switch (staffId)
{
case 1:
return new DateTime(1979, 1, 20);
case 2:
return new DateTime(1975, 5, 1);
case 3:
return new DateTime(1967, 2, 26);
case 4:
return new DateTime(1958, 10, 11);
default:
return DateTime.Now;
}
}
#endregion
}
}
Bc 4. To vt cha dch v
1. Thm on m ngun sau vo hm main
ServiceHost sh = new ServiceHost(typeof(Staff));
try
{
sh.Open();
Console.WriteLine("Staff Service opened successfully");
Console.WriteLine("Press Enter to terminate Staff Service");
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 13
Console.ReadLine();
}
finally
{
sh.Close();
}
Bc 5. To cc cu hnh dch v
1. Compile project ca bn, m bo rng khng c li xy ra trong qu trnh bin dch
2. M trnh son tho dch v, Service Configuration Editor v np tp ng dng, bng
cch trong Visual Studio 2008, chn menu Tools, chn la chn WCF Service Configuration
Editor
3. Chn New Config, t tn l Staff.Service
Figure 3 To config cho service
4. t contract dch v l StaffService.IStaff
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 14
Figure 4 t tn cho contract dch v
5. Chn cch lin lc l HTTP
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 15
Figure 5 Chn cch lin lc
6. Tip theo chn phng php lm vic l Advanced Web Services interoperability, v t
kiu lin kt l Simplex Communication
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 16
Figure 6 Chn Simplex communication
7. t mc nh (trng) cho trng a ch, v bm Finish, bn s thy kt qu sau
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 17
Figure 7 Kt qa cu hnh dch v
8. Gi bn bm vo biu tng Host pha bn tri, sau chn thm mi a ch c s cho
dch v ca bn, t a ch l http://localhost:8000/StaffService
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 18
Figure 8 Thm a ch c s
9. M rng nt EndPoints, chn im cui, ri t tn l ep1
Figure 9 t tn cho im cui
10. Kt thc qu trnh ny bn s c tp cu hnh nh sau:
2.2.2 Pht hnh thng tin v dch v
pht hnh thng tin v dch v cho cc ng dng khc khai thc, ta cn theo cc bc sau:
1. M rng nt Advanced (bn tri), sau chn nt Service Behaviors v bm vo New
Service Behavior Configuration bn phi
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 19
Figure 10 To mi cu hnh cho hnh x dch v
2. t tn l MetaDataBehavior, bm Add thm thnh phn hnh x, chn
ServiceMetaData
Figure 11 Thm hnh s siu d liu
3. Chn nt serviceMetadata bn tri v nhp vo gi tr HttpGetEnabled thnh true l
HttpGetUrl l http://localhost:8000/StaffService
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 20
Figure 12 t cu hnh cho serviceMetadata
4. Gi bn chn nt StaffService.Staff v t Behavior Configuration vi gi tr l
MetaDataBehavior
Figure 13 t BehaviorConfiguration cho dch v
5. Cui cng l to im cui cc ng dng c th kt ni ti dch v ly cc thng
tin v dch v. Bm chut phi vo Endpoints vo chn New Service Endpoint sau t cu
hnh nh sau:
Name: ep2
Address: mex
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 21
Binding: mexHttpBinding
Contract: ImetaDataExchange
Figure 14 Cu hnh cho im cui
6. Bm menu Save bn s c tp cu hnh nh sau:
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 22
7. Gi bn c th chy dch v. S khng c li g xy ra v bn s c mn hnh nh sau:
Figure 15 Thc hin dch v
8. Nu s dng Internet Explorer truy xut ti a ch
http://localhost:8000/StaffService bn s thy mn hnh sau:
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 23
Figure 16 S dng IE xem dch v
2.2.3 To ng dng pha client
Phn ny hng dn cc bn to ng dng pha client truy xut cc hm do dch v trn cung cp.
im hay trong WCF l bn ch cn s dng mt dng m ngun gi n dch v StaffService, ch
mt dng m thi, nhng th khc c to ra t ng s dng cng c svcutil.exe.
1. M console dng lnh v chuyn ti th mc bn mun to cc tp, g vo lnh sau v
bm Enter:
Svcutil.exe http://localhost:8000/StaffService?wsdl
Bn s thy kt qu sau:
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 24
Figure 17 Kt qu to ra khai bo dch v
2. To ra mt console project mi t tn l StaffClient v thm tham chiu ti
System.ServiceModel. Thm vo tp va to ra l Staff.cs, ng thi i tn tp cu hnh thnh
app.config v thm vo project. Kt qu nh sau:
Figure 18 To client
3. Sau khi bin dch v chy chng trnh bn c kt qu sau:
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 25
Figure 19 Kt qu chy chng trnh
2.3 Cch khc to tham chiu client
Ngoi cch thc hin bng dng lnh nh trn, ta hon ton c th s dng s gip ca cng c
Visual Studio to ra tham chiu dch v pha client. Cch ny thc hin rt nhanh v rt tin li. Cch
lm nh sau:
Bc 1. Chn chut phi vo project cn thm tham chiu, y l StaffClient, sau chn menu
l Add Service Reference nh hnh sau:
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 26
Figure 20 Thm tham chiu dch v
Bc 2. G vo a ch ca dch v cn thm, sau bm nt Go, pha di t tn cho tham chiu
dch v l StaffService nh hnh di.
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 27
Figure 21 Cu hnh cc tham s cho tham chiu dch v
Sau bc ny bn hon ton c th s dng lp StaffClient ci t ng dng pha client.
3 Cu hi n tp
1. Lit k cc m hnh lp trnh vi WCF
C 2 m hnh lp trnh ch yu vi WCF l phng php hng i tng v phng php
hng dch v. Phng php hng i tng thng thng c s dng khi pht trin ng
dng desktop, cn phng php hng dch v c s dng pht trin cc dch v pha
server. Mi lin kt gia hai phng php ny thng qua cc lp v giao din (hng i tng)
v cc thuc tnh WCF trn cc lp hay giao din (hng dch v)
2. Cc phng php lp trnh vi WCF
C 3 phng php lp trnh vi WCF l phng php khai bo, phng php hin hin, v
phng php s dng tp tin cu hnh. Thng thng khi lm vic vi WCF, ta khng s dng
Microsoft Vietnam DPE Team | Bi 2: M hnh lp trnh vi WCF 28
ring bit mt phng php no m s dng kt hp c ba phng php t c kt qu tt
nht.
4 Ti liu tham kho
1. Programming your first WCF service (URL:
http://www.myitblog.com/sundararajan/programming-your-first-wcf-service.html)
2. Your first WCF Service (URL: http://eng.ahmedelmalt.googlepages.com/wcf02.htm)