Você está na página 1de 11

Aplica-se a:

ADO.NET .NET Language Integrated Query (LINQ) SQL Server

Resumo: Eliminar a diferena de impedn ia entre apli a!e" e "ervi#" de dad#" #m# emi""$# de relat%ri#"& an'li"e e repli a$# #fere id#" #m# parte d# pr#dut# SQL Server aumentand# a a("tra$# d# n)vel l%gi # (rela i#nal) para # n)vel #n eitual (entidade). A" pe""#a" *ue apena" utili+am # "#ft,are n$# re #n-e em a di. uldade *ue / e" rev01l#. O de"ign e # de"env#lviment# "$# a" parte" divertida". A parte dif) il / fa+er #m *ue ele "e2a e3e utad# #rretamente (e #m a rapide+ ne e""'ria). 4ara # pr#gramad#r / #m# "e uma refei$# #mea""e #m um deli i#"# -ee"e a5e dupl# de af/ #m reme e termina""e #m reme de e"pinafre. O m#tiv# pel# *ual di+em#" *ue a pr#grama$# / uma arte& e n$# uma i0n ia #u di" iplina da engen-aria& / p#r*ue ainda n$# #n"eguim#" dividi1la em "ua" etapa" #n"tituinte" e me ani+'1la. Ap%" fa+erm#" i""# #m 03it#& uma n#va e" ala de p#""i(ilidade" "urge6 pr#grama" *ue e" revem pr#grama" de linguagen" de pr#2et# #rientada" a pe""#a" (4ODL)& pr#grama" para pr#var a #rre$# d# pr#grama e para anali"ar e "up#rtar a #n"ulta "emnti a. At/ e""e p#nt#& p#r/m& a pr#grama$# #ntinua "end# uma arte #u pel# men#" / i""# # *ue a "a(ed#ria #nven i#nal di+. 7a" a""im #m# a #nte e #m grande parte da "a(ed#ria #nven i#nal& e""a anal#gia n$# re"i"te a um e3ame mai" detal-ad#. A ria$# de um pr#grama (e 2' fa+em#" i""# -' mai" de 89 an#") n$# /& na verdade& nada pare id# #m arte : pel# men#" n$# a arte de e" rever . $# (e tam(/m 2' fa+em#" i""# -' mai" de 89 an#"). ;#u ilu"trar e""a *ue"t$# #m e"te" d#i" fragment#" de pr#grama e pr#"a. E"te primeir# e3empl# / parte de um anali"ad#r l/3i # para anali"ar # ;i"ual <==> ?.@. Ele / a""im6 if ( inde3 AB T#5enID66la"tCey,#rd() ) D "tring t#5en B t#5enString( inde3 )E if (( i"digit( t#5enF 9 G )) HH ( t#5enF9G BB I1J )) D Kifdef TELLL7E di"play( MNN T#5enSet66t#5enIdentify6 M& Ma literal digit6 M& t#5en )E Kendif return T#5enID66TCLLiteralE O O E"te "egund# e3empl# / a a(ertura de um #nt# *ue e" revi -' er a de 8? an#"& *uand# m#rava em Tu "#n& n# Ari+#na& le i#nava e e" revia pr#"a6 Pe ,ere -er pride #f @9& 7i"" Ste,ard named u"6 t-e 4r#digal& 4-#eni3& Qen2amin& and per"pi a i#u"& pa i. Su+anne. Ru"-& -ild. Qen2amin& (e "till& 7i"" Ste,ard #mmanded -im gently. 4e#ple are never 2u"t.

Am(#" #" e3empl#" tiveram uma ria$# inten"iva& #u "e2a& eu pa""ei muit# temp# ante" riand# a ar*uitetura geral d# tra(al-#& e #" fragment#" reSetem e""e e"f#r# de ria$#. O pr#grama tem uma fal-a de de"empen-# : eu re uper# a entrada de adeia de ara tere" na ta(ela de adeia de ara tere" a""# iada p#r val#r e n$# p#r p#nteir#. Se # %dig# pre i"a""e "er pr#du+id#& ele e3igiria uma revi"$# %(via. I""# n$# tem nada a ver #m a #rre$#& ma" apena" #m # de"empen-#. 4ara um pr#grama #m %dig# f#nte pe*uen#& a diferena de vel# idade n$# / men"ur'vel e& a""im& eu preferi a "inta3e de #(2et# mai" limpa e lenta& uma ve+ *ue n$# g#"t# d#" t#5en" de manipula$# de p#nteir#" da <T<==. Em(#ra min-a pr#"a n$# ten-a atra)d# mil-!e" de leit#re"& a*uele" *ue a leram apre iaram a #(ra #m "ua trama em# i#nal "#( uma rig#r#"a e"trutura "im(%li a. A*uele" *ue n$# apre iam a pr#"a tradi i#nal a -aram *ue ela era engan#"a& p#r*ue n$# -' nada de fun i#nal nela. A .nalidade da arte / pr#2etar "entiment#" e a realidade de uma vida privada "u(2etiva em mei# a#" event#" pU(li #" em um mei# pl'"ti # em parti ular : n# a"# da pr#"a& a" palavra". O(viamente& n$# -' val#r ni""#& n$# #m# # val#r intr)n"e # de um pr#grama. Eu g#"t# d# pr# e""# de ria$# de um pr#grama& e g#"t# de e3perimentar # m#d# #m# a" diferente" parte" interagem. Eu g#"t# de de.nir a("tra!e" #u fam)lia" de a("tra!e". Eu a" #n"ider# meu elen # de per"#nagen". V#"t# tam(/m de riar interfa e"& p#r*ue repre"entam a" #i"a" *ue meu" per"#nagen" fa+em. E / a""im #m# eu realmente e" rev# #" pr#grama". Eu n$# g#"t# de e" rever e3pre""!e" e de lara!e". Eu g#"taria *ue tiv/""em#" uma linguagem de pr#grama$# "im(%li a na *ual eu pen"a""e mel-#r e *ue pude""e mem#ri+ar. R#ne"tamente& eu n$# #n"ig# manter a lare+a de e3pre""!e" e anin-ament#" inter alad#". Em(#ra eu #n"iga manter #it# "e!e" "eparada" de te3t# em min-a a(ea e a" #mpare e a" e #e& eu n$# #n"ig# dar "entid# a um pr#grama al/m da" la""e" *ue ri# e "ua" interfa e". N# e3 elente artig# de W#-n 7ar5#X "#(re a indU"tria d# 4<& P-at t-e D#rm#u"e Said& ele de lara *ue # #(2etiv# d#" vi"i#n'ri#" ini iai" 1 #l# ar um #mputad#r Y di"p#"i$# de ada pe""#a 1 f#i #n reti+ad#. 7a" ele e"t' errad#. E""e #(2etiv# f#i #n reti+ad# apena" pela metade. O *ue -' de (#m em t#d# e""e p#der da #mputa$# "e uma pe""#a n$# p#de pr#gram'1laZ Ainda n$# reali+am#" "eu "#n-# p#r*ue ainda n$# de" #(rim#" #m# t#rnar a pr#grama$# uma arte para *ue t#d#" p#""am #mpartil-'1la. At/ l'& a pr#grama$# #ntinua n$# "end# uma di" iplina da i0n ia& nem um d#m)ni# da arte. 4#r en*uant#& a pr#grama$# / p#u # mai" d# *ue uma n#va al*uimia. Ningu/m realmente a entende e ningu/m ainda tran"f#rm#u uma e"pe i. a$# em #ur# verdadeir#. Stanley B. Lippman #me#u a tra(al-ar na linguagem <== 2unt# #m "eu riad#r& Q2arne Str#u"trup& em@[\]& na Qell La(#rat#rie". 7ai" tarde& Stan tra(al-#u em anima$# de .lme" na Di"ney e na DreamP#r5" e atu#u #m# diret#r t/ ni # de "#ft,are n# .lme ^anta"ia 8999. De"de ent$#& tem tra(al-ad# #m# #n"ult#r #nde #rad# da W4L e ar*uitet# na e*uipe d# ;i"ual <== da 7i r#"#ft. P Quand# ger# uma DLL #m "up#rte de aut#ma$# u"and# # ;i"ual <== > _.9& "$# gerada" alguma" fun!e" de regi"tr#& ma" n$# para an elar # regi"tr# da min-a DLL. E" revi um Dll`nregi"terServer *ue tem e"ta apar0n ia6 STDA4I Dll`nregi"terServer(v#id) D A^aL7ANAVELSTATE(Af3VetStati 7#duleState())E if (N<OleO(2e t^a t#ry66`nregi"terAll()) return be"ult^r#mS #de(SEL^bEVLEL<LASS)E return NOEbbObE

O <OleO(2e t^a t#ry66`nregi"terAll ret#rna Tb`E& ma" min-a DLL ainda e"t' regi"trada. <#m# dev# e" rever # %dig#Z

Ivan 4avli5
R Qem& v# 0 e"(arr#u em uma pe*uena fenda e"pe ial n# univer"# 7^<. `nregi"terAll pare e me"m# "er a fun$# a "er -amada para an elar # regi"tr# de "ua DLL. Se #l-ar n# #lefa t. pp& #nde # `nregi"terAll / implementad#& v# 0 ver' *ue / mai" #u men#" a""im6 f#r (Tc p^a t#ry B all fa t#rie" cT) D p^a t#ry1A`nregi"ter()E O I"t# /& ele fa+ um l##p "#(re t#da" a" f'(ri a" de "eu m%dul# e -ama # `nregi"ter para ada uma dela". At/ a*ui& tud# (em. O *ue # <OleO(2e t^a t#ry66`nregi"ter fa+Z O %dig# revela a -i"t%ria6 QOOL <OleO(2e t^a t#ry66`nregi"ter() D return Tb`EE O OpaN <#m# v# 0 p#de ver& # <OleO(2e t^a t#ry66`nregi"ter n$# fa+ nadaN Ele "imple"mente ret#rna Tb`E. I""# / muit# pe uliar& p#i" # <OleO(2e t^a t#ry66begi"ter regi"tra realmente "ua la""e <O7 -amand# 66<#begi"ter<la""O(2e t. 4#r #utr# lad#& -' uma #utra fun$#& <OleO(2e t^a t#ry66bev#5e& *ue -ama 66<#bev#5e<la""O(2e t para an elar # regi"tr# de "ua la""e <O7. 7^< -ama bev#5e aut#mati amente a partir de "eu de"truid#r de <OleO(2e t^a t#ry. Ent$#& # *ue / *ue e"t' a #nte end# a*uiZ O pr#(lema / uma #nfu"$# infeli+ na termin#l#gia& *ue tem #rigem n#" diferente" m#d#" de regi"trar a" la""e" <O7 para DLL" e EaE". 4ara DLL"& v# 0 regi"tra "ua la""e adi i#nand# -ave" a# regi"tr# d# Pind#," (<LSID& 4r#gID e a""im p#r diante). 4ara EaE"& v# 0 pre i"a -amar <#begi"ter<la""O(2e t para regi"trar "ua la""e n# "i"tema <O7 n# temp# de e3e u$#. A *ue"t$# . a ainda mai" #nfu"a pel# fat# de *ue para #" EaE"& # #p#"t# de regi"trar n$# / an elar # regi"tr#& ma" rev#gar (<#bev#5e<la""O(2e t). Quand# a" pe""#a" de bedm#nd adi i#naram # "up#rte <O7 a# 7^<& ela" .+eram # *ue puderam para fa ilitar a# m'3im# a vida da" pe""#a"& ma" nem "empre tiveram muit# "u e""#. <OleO(2e t^a t#ry66begi"ter tem e"ta apar0n ia6 TT in #lefa t. pp QOOL <OleO(2e t^a t#ry66begi"ter() D if (Naf3<#nte3tI"DLL) D 66<#begi"ter<la""O(2e t(...& <LS<TaLLO<ALLSEb;Eb& ..)E O

O ;# 0 p#de ver de imediat# *ue n$# fa+ nada para DLL"E ele "% regi"tra EaE" u"and# <LS<TaLLO<ALLSEb;Eb ( #nte3t# B "ervid#r l# al& EaE em e3e u$# na m'*uina l# al). Seguind# a < A4I ('"i a& a" pe""#a" de bedm#nd u"aram # me"m# n#me bev#5e para a fun$# *ue an ela # regi"tr# d# EaE6 <OleO(2e t^a t#ry66bev#5e (*ue / -amad# aut#mati amente pel# "eu de"truid#r de f'(ri a de la""e"). Ent$#& para # *ue "erve <OleO(2e t^a t#ry66`nregi"ter a fun$# *ue n$# fa+ nadaZ Talve+ a" pe""#a" de bedm#nd pretende""em fa+er #m *ue um dia begi"terT`nregi"ter fun i#na""em tam(/m para DLL". 7a"& d# 2eit# *ue e"t' ag#ra& n$# fun i#nam. 4ara regi"trar "eu DLL& v# 0 pre i"a de uma #utra fun$# #mpletamente diferente6 <OleO(2e t^a t#ry66`pdatebegi"try. E""a fun$# u"a um argument# (##lean# *ue di+ a# 7^< "e v# 0 *uer regi"trar #u an elar # regi"tr# de "ua la""e <O7. R' tam(/m `pdatebegi"tryAll& *ue e3e uta um l##p "#(re t#da" a" f'(ri a" de la""e"& -amand# `pdatebegi"try para ada uma. Ent$#& a*ui e"t' # m#d# ade*uad# para implementar "eu Dll`nregi"terServer66 STDA4I Dll`nregi"terServer(v#id) D A^aL7ANAVELSTATE(Af3VetStati 7#duleState())E return <OleO(2e t^a t#ry66`pdatebegi"tryAll(^ALSE) Z SLOC 6 SEL^bEVLEL<LASSE O Dllbegi"terServer deve pare er igual& ma" v# 0 deve pa""ar Tb`E em ve+ de ^ALSE para `pdatebegi"tryAll. A implementa$# padr$# para `pdatebegi"try fa+ # *ue p#de para adi i#nar #u rem#ver a" -ave" de regi"tr# apr#priada" em RC<bT<LSID:Inpr# Serverd8& 4r#gID& In"erta(le& T-reading7#del e a""im p#r diante& ma"& Y" ve+e"& v# 0 pre i"ar' de #utra" -ave" e"pe ). a" para "ua la""e <O7. 4#r e3empl#& p#de "er pre i"# regi"trar ateg#ria"& *ue "$# um tip# de e3ten"$# da antiga -ave MIn"erta(leM (# *ue "igni. a *ue "ua la""e <O7 p#de "er ign#rada em uma f#rma n# m#d# de de"ign). Ne""e a"#& v# 0 pre i"a ign#rar # `pdatebegi"try para adi i#nar #u rem#ver "ua" pr%pria" -ave". R' temp#"& n#" e3emplare" de n#vem(r# e de+em(r# de @[[[ d# 7i r#"#ft Sy"tem" W#urnal (ag#ra -amad#" de 7SDN>7aga+ine)& m#"trei #m# #n"truir um Qand O(2e t para Internet E3pl#rer u"and# a interfa e A tive Template Li(rary (ATL) Ibegi"trar. (Qand O(2e t" pre i"am "er regi"trad#" #m# uma ateg#ria e"pe ial <ATIDLDe"5Qand.) Ibegi"trar / uma ferramenta muit# (#a *ue permite *ue v# 0 e" reva um " ript de regi"tr# (ar*uiv# .bVS) para adi i#nar "ua" entrada" a# regi"tr#& em ve+ de -amar fun!e" de regi"tr# #m# begOpenCey& begSet;alue e #utra" mai". A ^igura @ m#"tra um " ript t)pi #. <#m# v# 0 p#de ver& Ibegi"trar permite *ue v# 0 de.na vari'vei" #m# e<la""Namee e eT-reading7#dele e dep#i" a" "u("titua #m val#re" reai" n# temp# de e3e u$#. <#m Ibegi"trar& v# 0 nun a mai" ter' de -amar a A4I de regi"tr#. ;# 0 p#de e" rever um " ript *ue "e parea mai" #m a" entrada" reai" d# regi"tr# e p#de& in lu"ive& u"ar # me"m# " ript para regi"trar #u an elar # regi"tr# de "ua DLL. I""# me"m#& # Ibegi"trar / inteligente # (a"tante para an elar # regi"tr#. O Ibegi"trar n$# e"t' d# umentad# #. ialmente em lugar algum *ue eu pude""e en #ntrar& ma" # %dig# e"t' a*ui (en #ntre1# em atlifa e.-). Se ainda n$# e"t' u"and# # Ibegi"trar para regi"trar e an elar # regi"tr# de "ua" <O7 DLL"& v# 0 deveria me"m# e3perimentar f i""# vai p#upar1l-e muit# tra(al-#. 4ara #(ter detal-e" #n"ulte meu artig# n# e3emplar de n#vem(r# de @[[[ .

P 7eu apli ativ# prin ipal tem um menu n#rmal #m um "u(menu de #mand#" Editar (be #rtar& <#piar& <#lar et .). V#"taria de e3i(ir # "u(menu Editar #m# um menu de #nte3t# *uand# # u"u'ri# li a #m # (#t$# direit# na 2anela prin ipal. O pr#(lema / #m# #(ter e""e "u(menu a partir d# menu prin ipal. 4are e *ue n$# e3i"te nen-uma ID de #mand# a""# iada a um "u(menu. 4#""# u"ar # )ndi e #meand# em +er#& ma" devid# Y per"#nali+a$# # menu Editar nem "empre "er' # "egund# menu. N$# p#""# pr# urar # te3t# MEditarM p#r*ue dam#" "up#rte a mUltipl#" idi#ma" e a palavra verdadeira p#de mudar. <#m# p#""# l# ali+ar # "u(menu Editar em t#d#" e""e" a"#"Z

Qrian 7anlin
R Qem& dei3e1me "alientar *ue # menu Editar deveria "er # "egund# "u(menu& "e v# 0 tiver um. A" diretri+e" de V`I d# Og ial Pind#,"> ne e""itam *ue #" tr0" primeir#" iten" de menu "e2am Ar*uiv#& Editar& E3i(ir& ne""a #rdem f para re e(erem "up#rte. <#n"ulte Pind#," Interfa e Vuideline" f#r

S#ft,are De"ign (em ingl0") (7i r#"#ft 4re"">& @[[h). Dit# i""#& p#""# a2ud'1l# a en #ntrar "eu
"u(menu Editar #u *ual*uer #utr# "u(menu de"e2ad#. ;# 0 e"t' #rret#6 n$# e3i"te ID de #mand# para um "u(menu. I""# a #nte e p#r*ue internamente # Pind#," u"a # amp# de ID de #mand# para arma+enar # R7EN` de "u(menu& "e # item de menu / um "u(menu. N$# "e pre# upe& "up#nd# *ue # "u(menu "empre manten-a um #mand# e"pe ). # (p#r e3empl# Editar H be #rtar) e "up#nd# *ue # #mand# "empre ten-a a me"ma ID (p#r e3empl#& IDLEDITL<`T)& / (em f' il e" rever uma fun$# *ue l# ali+e # "u(menu *ue #nt/m um determinad# #mand#. A ^igura 8 m#"tra # %dig#. <Su(menu^inder atua de fat# #m# um name"pa e para arma+enar a fun$# e"t'ti a ^ind<#mmandID& *ue -ama a "i me"ma re ur"ivamente para uma (u" a detal-ada n# menu e em t#d#" #" "u(menu" p#r um item u2a ID de #mand# #rre"p#nda Y pr# ura. E""e "egment# (u" a n# menu prin ipal um "u(menu *ue #nten-a um item de menu u2a ID de #mand# "e2a IDLEDITL<`T e ret#rna # "u(menu& "e l# ali+ad#. E" revi um pe*uen# pr#grama den#minad# Ed7enu para te"tar # <Su(menu^inder. O Ed7enu u"a # %dig# anteri#r para manipular P7L<ONTEaT7EN` de m#d# a e3i(ir um "u(menu editar e3atamente igual a# d# menu prin ipal& *uand# # u"u'ri# li a #m # (#t$# direit# na 2anela prin ipal. A redite em mim *uand# dig# *ue # <Su(menu^inder l# ali+a # menu editar #nde *uer *ue ele e"te2a dentr# d# menu prin ipal. Na verdade& eu # te"tei *uand# mudei temp#rariamente # menu Editar para adiante d# menu E3i(ir em uma de min-a" ria!e". E3perimente v# 0 me"m#& faa d#,nl#ad da f#nte. P <#m# #nvert# 7^< <String em String em <== geren iad#Z 4#r e3empl#& ten-# # "eguinte %dig# em <==6 v#id VetString(<Stringi m"g) D m"g B TT (uild a "tring O <#m# p#""# ree" rever e""a fun$# u"and# <== geren iad# e "u("tituind# # parmetr# <String p#r uma String geren iadaZ O pr#(lema / *ue VetString muda a <String d# -amad#r e eu *uer# fa+er a me"ma #i"a u"and# uma String geren iada.

Sumit 4ra5a"R Qem& a re"p#"ta depende de v# 0 e"tar u"and# a n#va "inta3e <==T<LI #u a" antiga" e3ten"!e" geren iada". O" d#i" tip#" de "inta3e p#dem "er #nfu"#"& ma" n$# ten-a med#& e"t#u a*ui para re"#lver "ua #nfu"$# de %dig#". ;am#" #mear pela n#va "inta3e& p#i" e"tam#" em 899_. O tru*ue para a ertar a "inta3e / lem(rar de dua" #i"a". 4rimeir#& em <==T<LI& #" #(2et#" geren iad#" u"am -ap/u". A""im& <String t#rna1"e

Stringj. Segund#& lem(re1"e de *ue # e*uivalente geren iad# Y refer0n ia (i) / a refer0n ia de ra"treament#& *ue em <==T<LI / e. Sei& v# 0 mal p#de en.ar j em "eu /re(r#& ma"& #m alguma pr'ti a& e tam(/m l#g# vai pare er n#rmal. Ent$#& a" n#va" fun!e" . am a""im6 TT u"ing <==T<LI v#id VetString(Stringje m"g) D m"g B TT (uild a "tring O I""# fa+ "entid#Z 4ara m#"trar *ue fun i#na de fat#& e" revi um pe*uen# pr#grama "trnet. pp (ve2a a ^igura d). Ele implementa dua" la""e"& <^##@ e <^##8& ada uma #m um mem(r# VetName. A primeira u"a <Stringi e a "egunda u"a Stringje. Se v# 0 #mpilar e e3e utar e""e pr#grama (u"and# T lr / lar#)& ver' *ue n#" d#i" a"#" f # *ue u"a <String e # *ue u"a String f # #(2et# pa""ad# (nativ# #u geren iad#) / m#di. ad# pela fun$# de mem(r#. 4#r falar ni""#& "empre u"e uma refer0n ia de ra"treament# (e) para #(2et#" geren iad#"& em ve+ de u"ar uma refer0n ia nativa (i& *ue tam(/m far' #mpila$#) p#r*ue a refer0n ia de ra"treament# ra"trear' a refer0n ia me"m# "e # #let#r de li3# m#ver # #(2et# dentr# de "ua pil-a geren iada. Se v# 0 e"t' u"and# a "inta3e n# e"til# antig# (T lr6#ldSynta3)& #m# p#de ainda viver na Idade 7/diaZ Nada tema& v# 0 p#de u"ar uma refer0n ia me"m# *ue "e2a antiga. Se v# 0 e"t' u"and# e3ten"!e" geren iada"& lem(re1"e apena" de *ue #" #(2et#" geren iad#" "$# LLg p#inter" e a""im <String tran"f#rma1"e em String LLg c. E& #m# # #mpilad#r 2' "a(e *ue String / um tip# geren iad#& v# 0 nem vai pre i"ar d# LLg E um p#nteir# "imple" (c) (a"tar'. A refer0n ia / a me"ma. Ent$#& a #nver"$# da "inta3e de e"til# antig# . a a""im6 TT LLg #mitted v#id VetString(Stringci m"g) D m"g B TT (uild a "tring O EntendeuZ ^a+ t#d# # "entid#. Sempre *ue tiver di. uldade em de" #(rir a "inta3e <==& a "#lu$# "er' v#ltar a# ('"i #. P be entemente gerei um apli ativ# de #n"#le <Lb #m # ;i"ual Studi# > 899h. beparei *ue # ;i"ual Studi# ri#u uma fun$# prin ipal #m# e"ta6 int main(arraykSy"tem66String jA jarg") D ... return 9E O I""# pare e "er uma mudana da antiga arg Targv #m *ue e"t#u familiari+ad# n# <T<==. Quand# tentei a e""ar arg"F9G& pen"and# *ue "eria # n#me d# ar*uiv# ( #m# em <T<==)& de" #(ri *ue arg"F9G

n$# / # n#me d# ar*uiv#& ma" # primeir# parmetr# da lin-a de #mand#. O *ue a #nte eu #m # n#me d# ar*uiv#Z 4#de me e3pli ar a ra+$# de"ta mudanaZ

Wa"#n Landre,
R A-& # mund# m#dern# em *ue n#" divertim#"N Nada / igual a# *ue era& n$# / verdadeZ ;ivem#" #m arg Targv de"de *ue a linguagem < f#i de"env#lvida em @[?8 e ag#ra a" pe""#a" de bedm#nd vieram e mudaram tud#. Talve+ ele" *ui"e""em ter erte+a de *ue t#d#" "a(eriam #m# u"ar a n#va matri+ de "inta3e. `ma ra+$# para a n#va "inta3e / gerar um pr#grama *ue #mpile #m T lr6"afe& *ue / a Ultima palavra em "egurana de %dig#. l #m# tran ar "eu pr#grama dentr# de uma "ala limpa f um da*uele" am(iente" e"t/rei" -ei#" de e*uipament#" de r#m#& em *ue / pre i"# entrar atrav/" de uma mara de v' u# de pre""$# negativa& u"and# apa ete e (#ta" e"pe iai". Quand# v# 0 a i#na # #mutad#r T lr6"afe& # #mpilad#r imp!e t#d#" #" tip#" de re"tri!e" tra(al-#"a". N$# / p#"")vel u"ar tip#" nativ#". N$# / p#"")vel u"ar gl#(ai". ;# 0 n$# p#de -amar fun!e" n$# geren iada". Em re"um#& v# 0 n$# p#de fa+er nada divertid#. E p#r *ue v# 0 "e "u2eitaria a tant# "#friment#Z 4ara ter erte+a t#tal e a("#luta de *ue # %dig# e"t' "egur#. Em term#" t/ ni #"& T lr6"afe gera %dig# Mveri. 'velM& # *ue "igni. a *ue # <Lb (<#mm#n Language buntime) p#de veri. ar *ue "eu %dig# n$# vi#la #n.gura!e" de "egurana& tai" #m# tentar a e""ar um ar*uiv# *uand# a" #n.gura!e" de "egurana d# u"u'ri# n$# permitem. `m d#" muit#" iten" da li"ta pr#i(ida d# T lr6"afe / p#nteir#" nativ#" f #u "e2a& p#nteir#". (MNativ#M / redundante& p#i" n$# "e p#de ter um p#nteir# de tip# geren iad#.) <#m# #" p#nteir#" n$# "$# permitid#" #m # T lr6"afe& a antiga de lara$# argv "imple"mente n$# fun i#na. A""im& a" pe""#a" de bedm#nd mudaram a de lara$# para u"ar uma matri+ Stringj. E #m# a" matri+e" #n-e em "eu #mpriment#& n$# -' ne e""idade de arg . A (i(li#te a de temp# de e3e u$# pr#p#r i#na # %dig# de ini iali+a$# apr#priad# para riar e ini iali+ar a matri+ de arg ante" de -amar "ua fun$# prin ipal. Se v# 0 n$# plane2a u"ar T lr6"afe& "empre / p#"")vel e" rever um prin ipal *ue u"e a antiga a""inatura arg Targv . I""# e3pli a # m#tiv# de "e u"ar uma matri+ geren iada& ma" e # arg"F9G& p#r *ue ele / # parmetr# d# primeir# #mand# e n$# # n#me d# ar*uiv#Z N$# p#""# falar pela" pe""#a" de bedm#nd& ma" talve+ ten-am a -ad# *ue faria mai" "entid# #mitir # n#me d# ar*uiv#& talve+ pen"a""em *ue v# 0 n$# pre i"aria di""#. De *ual*uer m#d#& n$# imp#rta muit# p#r*ue / f' il #(ter # n#me d# ar*uiv#. Ten-# erte+a de *ue e3i"tem muit#" m#d#" de fa+er i""#& ma" # mai" %(vi# e entrad# em <Lb ( #mpat)vel #m T lr6"afe) em *ue p#""# pen"ar / u"ar a la""e de Sy"tem66Envir#nment. Ela apre"enta # "eguinte m/t#d#6 "tati arraykStringjAj Vet<#mmandLineArg" () A# #ntr'ri# d# parmetr# arg" f#rne id# para # m/t#d# prin ipal& a matri+ ret#rnada p#r Envir#nment66Vet<#mmandLineArg" na verdade #mea #m # n#me d# ar*uiv# e3e ut'vel. ^inalmente& p#r *ue v# 0 de"e2aria "a(er # n#me de "eu pr%pri# ar*uiv# EaEZ A.nal de #nta"& "e v# 0 e"t' e" revend# # pr#grama& "up#"tamente "a(e #m# ele "e -ama. `m m#tiv# "eria gerar uma men"agem de a2uda *ue #nten-a # n#me d# pr#grama& "em #di. '1l#. A men"agem de a2uda p#deria "er mai" #u men#" a""im6 ^##^ile 11 Turn" every ,#rd in y#ur .le t# Mf##M u"age6 ^##^ile FTn6knum(erAG .le"pe .le"pe B t-e .le" y#u ,ant t# -ange knum(erA B -ange #nly t-e .r"t knum(erA # urren e"

A*ui& ^##^ile / # n#me d# pr#grama. Eu p#deria "imple"mente e" rever M^##^ileM em meu te3t# de a2uda& ma" aprendi -' muit# temp# *ue muita" ve+e" ren#mei# pr#grama" #u #pi# %dig#" de um pr#grama para #utr#. O(tend# # n#me d# pr#grama a partir d# pr%pri# pr#grama (p#r mei# de argv #u Envir#nment66Vet<#mmandLineArg")& min-a" men"agen" de a2uda "empre e3i(em # n#me #rret#& me"m# *ue eu ren#meie # ar*uiv# #u #pie meu %dig# em #utr# pr#grama. Q#a pr#grama$#N Envie pergunta" e #ment'ri#" para 4aul n# endere#6 pp*ammi r#"#ft. #m. Paul DiLascia / um #n"ult#r de "#ft,are independente e um de"igner de interfa e" de u"u'ri# e apli ativ#" Pe(. Ele / # aut#r de Pind#,"==6 Priting beu"a(le Pind#," <#de in <== (Addi"#n1Pe"ley& @[[8). Em "eu temp# livre& 4aul de"env#lve a 4i3ieLi(& uma (i(li#te a de la""e" d# 7^< di"p#n)vel em "eu "ite& -ttp6TT,,,.dila" ia. #mT.

C++ foi a linguagem contemplada com a maior quantidade de modi ca!"es no #isual Studio .$%& '(()* a pr+,ima -ers.o do #isual Studio .$%&. A" linguagen" mai" re #mendada" para # de"env#lviment# na plataf#rma .NET "$# "em dUvida # ;i"ual Qa"i e # <K. I"t# . a lar# a# "e #n"tatar *ue tant# a d# umenta$# #m# #" e3empl#" "$# "empre f#rne id#" na" da" linguagen" e& em muit#" a"#"& apena" ela". Efetivamente& # <K e # ;Q "$# pr#dutiv#" e f' ei" de aprender e u"ar. <#m# . a ent$# # <==Z O <== pa""a a "er #. ialmente #n"iderada uma linguagem mai" de M(ai3# n)velM 1 "e / *ue v# 0 2' n$# a -ava i"t# ante". Dentr# de"ta .l#"#.a& # <== d# ;i"ual Studi# .NET p#""ui algun" um re ur"# Uni #6 l a Uni a linguagem apa+ de gerar %dig# Mn$#1geren iad#M& #u "e2a& %dig# Pind8 #m# era de"env#lvid# ante" da plataf#rma .NET. I"t# #ntinua "end# ne e""'ri#& n#tavelmente na ria$# de Mdevi e1driver"M. Al/m dit#& / p#"")vel riar e3e ut'vei" #ntend# %dig# geren iad# e n$#1geren iad#& alg# intere""ante na ria$# de pr#grama" *ue devem interagir #m #" d#i" mund#"& #m# a" pr%pria" ferramenta" de de"env#lviment#. O ;i"ual Studi# 899d tra+ alguma" n#vidade" a mai" na linguagem <==6 ag#ra / p#"")vel riar apli ativ#" bAD e tam(/m gerar M %dig# veri. 'velM. Apli ativ#" bAD O paradigma de pr#grama$# bAD f#i intr#du+id# pel# ;i"ual Qa"i em @[[@ e amplamente #piad# p#r v'ria" #utra" ferramenta" de de"env#lviment#. Ne"te paradigma& #l# am#" M #mp#nente"M "#(re f#rmul'ri#"& a2u"tam#" pr#priedade" d#" #mp#nente" e inter eptam#" event#" d#" #mp#nente" em n#""# %dig#. Infeli+mente # ;i"ual Studi# .NET #riginal n$# tra+ia "up#rte a de"env#lviment# bAD na linguagem <==. <#m # ;i"ual Studi# .NET 899d / p#"")vel riar apli ativ#" MbADM em <==. 4#dem#" riar tant# MPind#," ^#rm" Appli ati#n"M #m# MPind#," <#ntr#l Li(rarie"M6

;e2a a 2anela prin ipal d# pr#2et# <==. O("erve *ue p#dem#" alterar pr#priedade" na 2anela da direita6

O("erve *ue #" #mp#nente" p#""uem diver"#" event#"& #m# n# a"# d# Qutt#n@ m#"trad# a "eguir6

O" event#" m#"trad#" a ima "$# event#" d#" pr%pri#" #mp#nente" da (i(li#te a .NET ^rame,#r5. ;e2a # %dig# para pr# e""ar # event# <li 5 d# (#t$#6

<%dig# ;eri. 'vel T#d# pr#grama riad# pel# #mpilad#r ;Q.NET e tam(/m a mai#ria d#" pr#grama" riad#" pel# #mpilad#r <K / dit# Mveri. 'velM. I"t# *uer di+er *ue # #mpilad#r WIT p#de& em temp# de e3e u$#T #mpila$# veri. ar e garantir *ue # pr#grama n$# faa nen-uma #pera$# *ue p#""a #mpr#meter a "egurana e integridade d# "i"tema.

4#de pare er e"tran-#& ma" e3i"tem in"tru!e" 7SIL apa+e" de a(rir (re -a" na "egurana d# "i"tema& #m# p#r e3empl#& para manu"ei# diret# de p#nteir#" #u manu"ei# da pil-a da <4`. E"ta" in"tru!e" "$# ne e""'ria" em algun" a"#"& #m# p#r e3empl# para *ue a pr%pria (i(li#te a -ame a A4I d# Pind#,". 4r#grama" *ue #ntem e"ta" in"tru!e" "$# dit#" Mn$#1veri. 'vei"M. Evidentemente / ne e""'ri# um privil/gi# e"pe ial de "egurana para r#dar pr#grama" n$#1veri. 'vei". O #mpilad#r <== d# ;i"ual Studi# 8998 "empre gera %dig# n$#1veri. 'vel& # *ue / "em dUvida uma de. i0n ia. W' # ;i"ual Studi# 899d p#de gerar %dig# veri. 'vel& de"de *ue "e faam algun" a2u"te" de #mpila$#. <riar %dig# veri. 'vel e3ige uma "e*n0n ia de a2u"te"& d# umentada "#( # t%pi # M4r#du ing ;eri.a(le <#mp#nent" ,it- 7anaged E3ten"i#n" f#r <==M6

<#n lu"$# O <== f#i "igni. ativamente mel-#rad# n# ;i"ual Studi# .NET 899d e #m erte+a agradar' #" "eu" entu"ia"ta"& tant# #m rela$# a# u"# de re ur"#" bAD #m# Y ria$# de %dig# veri. 'vel.

Você também pode gostar