304 61 1MB
Russian Pages 33 Year 2009
2 Первый взгляд: Microsoft
®
Silverlight 3 ™
Лоуренс Морони
П р ы ля : Microsoft® Silverlight™ 3
Пр
ар т льная
рс я
уре с
р
и
У И Microsoft Press A Division of Microsoft Corporation One Microsoft Way Redmond, Washington 98052-6399 Copyright © 2009 by Laurence Moroney . . 1 2 3 4 5 6 7 8 9 QWT 4 3 2 1 0 9 . Д Microsoft www.microsoft.com/mspress.
Microsoft Press (425) 936-7329. [email protected].
-
Microsoft Press International
Microsoft, Microsoft Press, Access, DirectShow, Expression, Expression Blend, InfoPath, IntelliSense, Internet Explorer, MSDN, Outlook, Silverlight, SQL Server, Visio, Visual Basic, Visual C#, Visual Studio, Win32, Windows, Windows Media, Windows NT, Windows Server Windows Vista Microsoft. Д . ,
,
,
,
,
. ,
,
, ,
,
,
, ,
,
. Д
.И . ,
Body Part No. X15-53872
, , Microsoft Corporation,
,
, .
Н
Silverlight 3
от, кто ко Silverlight 2, е к , у е еет о о е к от .NET по т ое е о по о е те кт те ет‐п ло е . о Silverlight 3 п едл ет ел д о о о о те , екото е кото о у д т д о деле. л ко д ее е т лк л Silverlight, екото е п еде е де е т код XAML‐ л о ут пок т е кол ко т . то лу е, лу е п опу т т тот дел е ут к е у по ле п о те е о о т л о о те л к . у те, кто ет о Silverlight е по л ке, пе ед! Я у е е , по т то, о е де у ете. д о деле удут от е кл 3D‐ ект , едле е е де п ло е , пол
екото е е к е о е у к , по е SL3, , подде ку део о те H.264, п к ел е е е у е .
Од о олее т о о о те , до ле Silverlight 3, л ет п ео о пе пект . д у ло , п ео о пе пект – то п ео о , кото е о ут п е т к ле е т XAML дл одел о е т е е о п о т т е. ледует от ет т , то то е еал ое 3D‐п о т т о, по кол ку де ет т е е о о одел о по о еток, по т ое те е , уд ле к т л п ., о т о о о т по ол ет одел о т 3D‐ ект по о XAML. о
от
, к к то дел ет :
д о п е е п ед т ле XAML‐код, оп о е е к . ( л то то о, де к к до т л ту к т ку, ко ее е о, е е по е л !) л пол т тот код у е е подде ко Silverlight, удет полу е о леду ее о ( . 1).
6
к е
л е
. 1
ед т ле
е о
е
к е пе пект
епе п ед т , то к л ет т е е , е т к л о – о Y, о л к по е о от о е т е е о п о т к , ео од о т о е е от т е ует е ут о е е т к, то т , е е пол ет от о тел о о
п о т о т – о Z. т е, т к то о тел о о лу к у .
т о . о о т л о – то о л т е ует о д т пе тле е е о ле т «у од л лу » Y. ло о о , е л од л е о е л
пе л д, о ет пок т , то ео од о е ут о е е от о тел о о Z, о то о , пе пе д кул к пло ко т к . к о о , е е от о тел о то о т е е о п о т т е п едет л к е е у л п ед т ле о е . т к, от код, о е пе о от 45 ду о от о тел
пе пект о о Y:
ое п ед т ле
е о
е
путе
7
е ул т т п ед т ле
. 2.
. 2
е
е о
е
е от о тел
ло о, о о лу к удет у од т е
8
о о Y
е е от о тел о о , о о о д т пе пект л т о е .
у, ко д
от
п
е :
е ул т т п ед т ле
. 3:
. 3.
е
е от о тел
о о
9
О т те е, то Silverlight т ет о е к к п о ач е. к о о , е л е ут к т ку т к, то о по е ул к т л о то о о , у д пе е е утое о е е. т к, е л о т у Rotation ( о о от) д т е е 135 ду о , полу е ул т т, подо п ед т ле о у . 4.
. 4. то о
пол о
е п ео
о
пе пект
дл п о
от
о
е
т л
о
по о кл Storyboard ( к д о к ) о о пол т о от . од о ее о оте о Storyboard к ет л е 5, « о XAML», по то у е л код к ет е кол ко т , е от те , о е е е о е е е .
Этот е т код п о то о е пе ет о д е Storyboard, пол е о те е е 2 еку д е е о е е RotationX от 0 до 360, по то е е то о п о е . е ул т те о д ет ект по то о о е о е ок у о т е е о п о т т е.
11
у к
едле по ол т о д т пол о т л е пе л е ект , кл ект подп л «п у ». Silverlight 3 по т л ет до т ое у к едле п о т т е е System.Windows.Media.Animation. олее под о о о о у д т л е 5, « о XAML». пол о е у к едле у е т е о уп о п д е е л т о о по еде , по кол ку то лу е д т ку п о е .
ет от
о ку е п
п е , е л ео од о о е пе т е л т ое «подп е», о о то тел о п о е т те т е к е ет , оп е ку т ко п т оот ет т у у п о у, л о пол о т т ое у у к подп по ед т о до е е о ле е т EasingFunction ( у к .
екто од т
о л о о по еде едле
, ) те
от тот е . Silverlight дл пе е е е лл п е у по к у пол ует о ект , до е ле е т кото о о ( о т т п Double) оп ет по еде е о т Top ( е ) лл п . Что уп о т т ту д у, п о то до л е оп е у к едле , к к пок о д о п е е:
12
Оп
е EasingFunction ( деле о то ) кл ет пол уе т п едле . К д т п еет е п ет дл оп едле . т к, п е , дл одел о подп уп е о о ект , п о то д т л ое ко е ое поло е е е о е (от 0 до 300) пол ует у к едле дл оп по еде подп . д о лу е д о, то о ект подп ет 10 ко це (по кол ку EasingMode д о е е EaseOut). ет те, у е т ует т е п е ет ко це EaseInOut, п кото о (п е о поло
едле : EaseIn, п кото о ; EaseOut, п кото о о п е т д о о д е п о од у пут п е ет е EaseIn
т к, п ед т ект подп 100 п е ет у к едле пол о л е о
, оп ее, ко д дл е л подп едле п о од т леду
у к едле ет ачале ; т к к ле, т к ко е те EaseOut). е
е е ет от 0 до . то лу е п ее:
EaseIn – е е е ет от 0 до 100. то у к о е пе т коле тел е е е е о л т 0 д ое кол е т о , то о д т ект подп о ект ок у л о то к пе е е е . EaseOut – е е е ет от 0 до 100, о у к , п е де е о ект до т ет ко е о то к пе е е е , о е пе ет коле тел е е е е о л т 100 д ое кол е т о , то о д т ект подп о ект ок у ко е о то к . EaseInOut о е пе ет п удл ое о ет е п ед ду д у е о , ко д е е «коле лет » к к ле, т к ко е д о о д п о пе е е е .
п ед ду е п е е пол о л е е те т е ект «подп »
EaseOut, по кол ку о о е пе ет олее п оуд е т е до по е о т .
т ое е у к едле пол т п о т т е е System.Windows.Media.Animation. еде е д лее оп о о т е е EaseIn, о е о о дел т од о ект , о д е лу е п е е е о EaseOut EaseInOut. ту по еде т у к тол ко л , то дл лу е о по ео од о п о то по к пе е т о т о то тел о.
13
К т ое
у к
едле
от о т :
BackEase О е пе ет е ол о од о ект а ад ле д е . Это е о о по ет то, к к едет е ол е, ко д о е о о отк т ет д, п е де е т д т пе ед. BounceEase К к ло пок о п ед ду е п е е, т у к о д ет ект подп . CircleEase О е пе ет е е е у ко е оот ет т е о т о о ет е ко у к , по тепе т е у ко е . CubicEase одо о CircleEase, о е е е у ко е о у е т л ет по пе оле (ку е кое у е е е е ), то о у ло л ет олее едле ое е е е у ко е ле олее т ое е о е е е ко е д е . ElasticEase одо о BounceEase то , то о е пе ет о лл е ок у д о то к . ExponentialEase одо о CircleEase CubicEase, о е пе ет к по е л ое е е е у ко е е от од о о е к д у о у. PowerEase О е пе ет к по е л ое е е е у ко е , п кото о е е ко е т у ко е п опо о л о тепе е е . QuadraticEase одо о CubicEase кл е е то о, то д о лу е е е п опо о л о к д ту е е . QuarticEase одо о QuadraticEase CubicEase. д о лу е е е п опо о л о е е 3 тепе . QuinticEase одо о QuadraticEase, CubicEase QuarticEase. д о лу е е е п опо о л о е е 5 тепе . SineEase О е пе ет е е е е по у о де.
О т те е, то е то кл , т.е. о е т оот ет т у е о т по ол т ко у о т т т т е . п е , пол уе п е е BounceEase оде т о т дл оп кол е т коле ( п е , е е е д п о е п е е п ле оте у к едле ед тел о у те доку е т о е пе т ео од е ект .
, кото е п ед ду е «п у е т » д е ). по API, то
H264 Silverlight 3 до ле подде к декоде H264, т к о о , о ет о е пе т о п о еде е Silverlight оде о о, код о о о о те H264. Это е тел ое о т е дл ко п , ло ед т о о ку о е у о тот о т ел пол о т п е у е т Silverlight дл по т ое е пол о тел к те е о .
14
л ко д ее е от л H264, то о о дел т пол о е Expression Encoder 2, кото п л п кет о о ле Service Pack 1 подде ет код о е тот о т. л у ет Expression Encoder 2, е пл т кодек о о т по д е у http://www.h264encoder.com. лее д Encoder.
о
деле удет
т
Expression Encoder о о по т ло о те MOD, кото п
т
код
о
о т л о о е ет о о
е
о деок
ло пол о
е Expression
т . о пол уе е .
пу т Expression Encoder е у к к опку Import ( по т о т ). о л, Expression Encoder у т под ото т е о. е де е пол т код кл дке Encoder (Коде ) е у п о о т пол уе п о л код едл е е п о л део п ед т ле . 5.
де
е о о
те е, .
. 5.
л
део, п едл
е
е Expression Encoder 15
К к ол
д те, дл H.264 п едл о .
ет д п о
л : Large ( ол
о ) Small (
л
е
).
те
Что т т део п дл код о (е л т е ует е т т део), пе е е те елт ке по е е о к ле, пол е у под ок о део. Щелк те п о к опко е те Mark In ( ет т до), то о е т е до то о о е т , л Mark Out ( ет т по ле), то о е т е по ле ке . те е Encode (Код о т ). о е е код о полу е MP4‐ л, код о о те H.264. ко л о ет т о п о еде по о Silverlight‐ ле е т MediaElement. О т те подде от
е, то Expression Encoder 2 SP1 п код о о ет Silverlight. Эт подде к по т леду е е .
т H.264 е
п о то п
е
е . О
т те
е, то пол ует
е
л .MP4:
Это о е пе т о п о еде е H264‐ оде о т о то л е 10. е п ед т ле
16
. 6.
о о MediaElement Silverlight. олее под о
о
. 6.
о п о
е о т о, то о п о е т о. О
еде
ко о к п
е оде
о о о
те H.264
п к ел е де (Pixel Shaders) WPF. к ел е е де – т ук , пол уе дл ле ет отдел 1 е. О о о пол т GPU , т к о о , от т о е 2 ке о отк полуто о HLSL , т к кото о о подо е .
л отек System.Windows.Media.Effects оде т т ое е п к ел дл т о д те е . Эт е де о ут т до ле о е е о о т Effect (Э ект) коде л XAML. от
п
е е де е по о
е :
К к то
18
л д т, о
о у
дет
. 7:
. 7.
пол о
е т ое
екто Blur Drop Shadow 19
по о HLSL о о т к е о д т о т е е п к ел е е де . од о о у де е то о од т к д о к , о де о т о ел п о то п е . WPF ( Silverlight) ло , о д
ект о о код ект «о е е
у т » о
де .FX‐ е :
л . от п
ое от
е од о о т к
sampler2D implicitInput : register(s0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 color = tex2D(implicitInput, uv);
float4 complement;
complement.rgb = color.r*.3 + color.g*.59 + color.b*.11;
complement.a = color.a;
return complement;
}
Э
ект о е е о д ет путе ле е е ет п к ел у о е е к о о (Red), еле о о (Green) е о (Blue) к ло екото ко е т. д о п е е те о т к о о к л ок ет до 30% от од о о е , еле о о – до 59%, е о – до 11%.
HLSL‐код ко п л ует PS‐ л ( од код, к к п ло, т л ), кото дол е т до тупе е у Silverlight‐п ло е . Это о е пе по о т у е т fxc DirectX SDK.
де .fx‐ ет
о о у ледо т кл от ShaderEffect е о е о д т Brush (К т ), к к леду е п е е. ет те, то URISource (URI то к ) дл PixelShader ( к ел е де ) ук ет ко п л о ps: public class ApplyGreyEffect : ShaderEffect
20
{
private static PixelShader _pixelShader = new PixelShader() { UriSource = new Uri("ps/Greyeffect.ps", UriKind.RelativeOrAbsolute) };
public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(ApplyGreyEffect), 0);
public ApplyGreyEffect()
{
PixelShader = _pixelShader;
UpdateShaderValue(InputProperty);
}
public Brush Input
{
get { return (Brush)GetValue(InputProperty); }
set { SetValue(InputProperty, value); }
}
}
епе
тот пе
л
кл
о
о пол о т к к п к ел
е де коде.
ApplyGreyEffect _effect = new ApplyGreyEffect(); Img1.Effect = _effect;
, Silverlight 3 по л ет о о о т п т SIlverlight‐п ло е , пол е е у е . Это по ол ет о д т п ло е о т е ок о , кото е о ут т до ле е у к л о тол. дел т то о е п о то, к к удет пок о е е о е е: ео од о л е т екото е т о к е т п ло е , оп едел е о о о т е о пол е то о о е е. 21
о д д о ое Silverlight‐п ло е е SlOOB. о т у по у ол то‐то п о те кое, п е , тек то лок «Hello World», пол п ло е е. О о удет пол е о у е е, к к о о. Од ко по ел ку оде о о Silverlight п о к опко по т е , кото о о о у дет о ле е т, Save for Offline Use ( о т дл пол о то о о е е), е кт д о лу е. Это пок о . 8.
. 8.
о
о
о т
пол е
е
у е
кл
е
Что кл т ту у к , ео од о е т екото е Это л AppManifest.xml п пке Properties ( о т ). О удет
л дет п
е
е е
е т п
ло е
о т к:
е дело , до п ет EntryPointAssembly ( о к то к од ) EntryPointType ( п то к од ). л п ло е SLOOB то дол т SLOOB SLOOB.App, оот ет т е о. епе
е т
л д т леду
о
о :
лее ео од о до т п ло е ). е удут пол
е т дел Application Identity ( до то е е е т к ткое , оло ок от п ло е .
Title ( оло ок) ото ет т п ло е е. Short name (К ткое ) ото Blurb ( от ) пол ует о о у дет п п о от е о
е то п ед т ле о
оке
оло к отдел
о о ок
, кото о
ет л к о е о тол / л е деле «Comments» (Ко е т ) дл т п ло е Windows Explorer.
пол
ет
у к. л . о
е те де :
Do really cool stuff at home or on the go.
епе , пу т п ло е е елк у п пу кт е Save for Offline Use кт е . л
о к опко
т Save for Offline Use, Silverlight п ед т
т д
оде
ое, о
ло о ое ок о, пок
о у
ое
дет , то
р
. 9. 23
. 9. Saving for Offline Use
ет е
, то то о е Silverlight.
то д ло о о то о о е т . Щелк то от е т
т
е
то о д
ло , о
о ет
т
ок е п ед т ле оп о е п ло е е л о е у к, л о о е о тол . д те Confirm ( одт е д т ), то подт е д т .
л елк ут Confirm, удут о е ок е. Это о о у дет . 10.
л к , п
ло е
е е
око
тел
о
дл пол о о лу е о е т о к , л No,
е удет пу к т
о т е
о
. 10.
ло е
е,
пол
ее о т е
о ок е
О т те е, то по ел ку п о к опко Remove This Application ( д л т то п ло е е), кото е е то поло е , де о о у т о ле о.
24
то о п ло е п едл ет оп о е пе ет уд ле е п ло е
т п е дл п ло е пол у т к , п едо т л е е Silverlight по у ол . о о пе еоп едел т по о PNG‐ ло о к ет е е о . к о о , дол т п едо т ле PNG е 16 16, 32 32, 64 64 128 128, оот ет т у е ео од к . о до т до е то поло е Content ( оде от
т оп е е т п ло е , оп едел ее т е ло , д т Visual Studio о т у Build Action ко е е ое). е т п
ло е
:
Do really cool stuff at home or on the go.
sl16.png sl32.png sl64.png sl128.png
т к, тепе по ле пу к п ло е о е е, полу д е к !
е
е о дл пол о
то о
о
25
Д
Save File
епе Silverlight 3 кл ет д ло о ое ок о Save File ( о пол о тел о ут о т оде ое е тк д к. о о о т пол о тел е о е л ол о от
п о то п
л о д д
е пол о
о ое Silverlight‐п
д ло е
ло о о о ок
т л), по о кото о о пол о то л е . Save File о п
ло е
.
е SFDialog.
о т д т Page.xaml тек то ое поле (Text Box) к опку (Button). о о т е ел к к опко . е ул т те, XAML‐код дол е л дет леду о
уе о :
о ел ку к опк дол о отк т л , ло у те у удет п Text Box. е то п о от
од т о
т
д
ло о ое ок о Save File. т тек то л, оде
о е то д ло е тек т, еде
btn_Click.
код: private void btn_Click(object sender, RoutedEventArgs e) { SaveFileDialog mySaveDialog = new SaveFileDialog(); bool? ret = mySaveDialog.ShowDialog(); if (ret == true) { using (Stream fs = (Stream)mySaveDialog.OpenFile()) { byte[] info = (new UTF8Encoding(true)).GetBytes(tts.Text); fs.Write(info, 0, info.Length);
26
fs.Close(); }
} }
Ко е о, е то пол ет де о т о ел е кл ет ко т ол до то е о ок, о тел е л п ло е . д о лу е п едпол ет , то пол о тел е д од т де т тел пут .
о т
код о е пе ет о д е о о о к е пл кл SaveFileDialog ( ло о т л) о е о етод ShowDialog() ( ок т д ло ), кото о е пе ет од д ло к . о ел ку пол о тел OK л Cancel (От е т ) поток пол е удет о т п о у, п то о то е д ло о о о ок о ет д о к е пл е кл . т к, е л пол о тел по ле од е л елк ет OK, етод OpenFile() кт е к отк ет л п . О т л о код пол ет е л оде о о тек то о о пол то поток, кото о ет т п . от
е то де т
.
. 11 пок
о п
ло е
е:
. 11.
ло е
е тек то , кото
дол е
т о
е 27
о т к опк Save Me ( о о кол ку пол у Windows 7, 7.
е ) отк ке к
ет д ло о ое ок о Save File ( . 12). о о у дет т д т д ло Windows
. 12.
ло о ое ок о Save File
де е д т д т е л т п п оте т о т п ло е е, ед те де т ук те елк те Save ( о т ).
л , по то у тек то т ок пу т . Что тел ое л , п е Test.txt, т п е
л удет п д к т ло . д о лу е, п о тол. Отк о те л у д те, то е ее тек то у т оку.
л о тол, т.е. л т оде ое, еде ое
о т кл SaveFileDialog по ол т д т п ок л т о ло л. л т д т де дел е о о е т к л о е то п к , кл тек то ое оп е, кото ледует л т , леду ее тек то ое оп т к, кл (*.*) л
е к оп
д
ло Save, по ол леду о о :
т тек то
е о е, т.д.
л (*.txt) л е
mySaveDialog.Filter = "Text Files (.txt)|*.txt|All Files|*.*";
28
л
к е о о д т л т по у ол . Это о е п п ке Filter ( л т ), кото то п ок ет е ул , по то у то (.txt)», о т о FilterIndex ( дек л
елое е е, о о ее по дко удет пол о т по у ол . ет те, дел т л т о по у ол «Text files т ) дол о т д о леду о о :
mySaveDialog.FilterIndex = 1;
епе
. 13 п ед т ле о ое улу
е
ое д
ло о ое ок о Save File.
. 13.
ло о ое ок о Save As
т к, тепе пол о тел о ут о ел .
л т
т д
е
е тк
д к л
о к т ло по
XAML л ко по е то XAML о о ео од о у т е от к . п е , то д т у о ект по о пол у к , ео од екото код дл ле е е пол у к , по к оот ет т у е о о ект по е (д е о ет е п т е е о ект , по то у от ку п дет до т ) д е о . Это о д ет д .
о е т е
е , кото
т е ует
у
у о
т
т о е
т
л
е
29
Silverlight 3 по л ет ле е то д у д у о , т к то е е т . от упо ет
л
ут
д
е д ле е то . Это по ол ет о о , п е е од о о ле е т
е е . епе XAML.
леду е е те код оп п оу ол к:
о о ет
ет ле е т уп
ле
т е л о
т о т е ле е т
е
ко о код ,
slider (пол у ок) т п Slider
К к д те, дл п оу ол к Binding ( к ). к е т е е е, д «slider», о т Value ( е е). к е е п оу ол о то
е по у ол
д от 100 п к ело , д к к е е е ле е т (ElementName), кото о то е е, кото ое пе ед ет от то о ле е т , – е е е о о о , л ое пе е е е е пол у к удет п од т к к .
п ед т ле о
. 14.
. 14.
е д
ле е то XAML
л пе е е т т пол у ок вп аво, е е е о о т Value у ел у ел е п оу ол к . Это от е о . 15. 30
т , то п
едет к
. 15.
п
ел
е
е
п
оу ол
к по о
пол у к
о о от, е л пе е е т т пол у ок влево, е е Value у е оу ол к т ет у е. Это о о у дет . 16.
т , т к
о
о ,
. 16.
е
е
е
п
оу ол
к по о
пол у к
олее под о о е д т к д т к л ет у е л о ет пол о т оп по еде ле е то , к к ло пок о е.
т дл е д
т л е 14. , т к е дл
31
д
о л е п ед т ле о е кол ко о т о о о те , по о е т у е то Silverlight 3. Ко е о, то е е, л ед ко ул екото , т о т , пол е п ло е е у е . ел д о л – д т о у е то о, то о о дел т . О тел о п о т те о о е под о ее, ко д к удет опу л ко пол о т по е то оду.
32
е
ɉɟɪɜɵɣɜɡ ɝ ɥɹɞ Microsoft Silverlight 3 ™
®
ɉɊȿȾȼȺɊɂɌȿɅɖɇȺə ȼȿɊɋɂə Ваш первый взгляд на инструменты и технологии создания приложений с использованием Silverlight . Начните применять Silverlight —кросс-платформенный, кросс-браузерный плагин для представления расширенных мультимедийных интерактивных приложений и пользовательских интерфейсов следующего поколения. Книга основана на знаниях команды разработчиков Microsoft Silverlight, процесс изучения построен с использованием практических упражнений, подробных указаний и примеров кода, чтобы вы сразу могли перейти к собственным разработкам.
Об авторе Laurence Moroney (Лоуренс Морони) является ведущим экспертом по технологиям Microsoft,специализирующимся на Silverlight и User Experience. Имеет более чем десятилетний опыт разработки и реализации программного обеспечения и является автором около десятка книг по разнообразнейшим тематикам, среди которых Windows Presentation Foundation, Веб-разработка, безопасность и способность к взаимодействию.
Изучите как: •
Использовать XAML для отрисовки, масштабирования и анимации
•
Воспользоваться мощью Microsoft .NET и удобством языков поддерживаемых Visual Studio®
•
Применять разнообразные компоненты, создавая и расширяя свои собственные
•
Экспериментировать с возможностями медиа и Deep Zoom
•
Создавать подключаемые приложения
•
Применять динамические языки, такие как Ruby и Python
•
Управлять приложениями Silverlight при помощи ASP.NET
ПОЛЕЗНЫЕ РЕСУРСЫ MICROSOFT ® Для дизайнеров •
Веб-сайт Expression
•
Бюллетень Expression для дизайнеров
www.microsoft.com/rus/expression www.microsoft.com/rus/expression /news-press/newsletter
Для веб-разработчиков •
Веб-технологии Microsoft
•
Центр разработки ASP.NET
www.microsoft.com/rus/web
ɋɥɟɞɢɬ ɟɡ ɚɨɛɧɨɜɥɟɧɢɹɦɢɤ ɧɢɝ ɢɧɚ www.remix.ru и www.microsoft.com/rus/expression/resources
msdn microsoft.com/ru-ru/asp.net
Для разработчиков •
Инструменты на русском языке
•
Веб-сайт для разработчиков
www.visualstudio2008.ru msdn.microsoft.com/ru-ru
Part No. X14-55516
Подробнее см. на msdn.microsoft.com/ru-ru
ISBN-13: 978-0-7356-2528-0ɉ ISBN-10: 0-7356-2528-X
[msdn.microsoft.com/ru-ru]
Программирование/Веб