visual basic 2010 e .net 4. guida professionale - bill sheldon

2315

Upload: martemartemarte

Post on 10-Nov-2015

213 views

Category:

Documents


56 download

DESCRIPTION

Visual Basic 2010 e .NET 4. Guida Professionale - Bill Sheldon

TRANSCRIPT

  • VisualBasic2010e.NET4Guidaprofessionale

  • BillSheldon,BillyHollis,KentSharkey,JonathanMarbutt,RobWindsor,GastnC.Hillar

    VisualBasic2010e.NET4Guidaprofessionale

    EDITOREULRICOHOEPLIMILANO

  • Titolooriginale:ProfessionalVisualBasic2010and.NET4Copyright2010ByWileyPublishing,Inc.Indianapolis,IndianaAllrightsreservedincludingtherightofreproductioninwholeorinpartinanyform.ThistranslationpublishedbyarrangementwithJohnWileyandSons,Inc.

    PerledizioneitalianaCopyrightUlricoHoepliEditoreS.p.A.2010viaHoepli5,20121Milano(Italy)[email protected]

    SeguicisuTwitter:@Hoepli_1870

    www.hoepli.it

    Tuttiidirittisonoriservatianormadileggeeanormadelleconvenzioniinternazionali

    ISBN978-88-203-5521-0

    Progettoeditoriale:MaurizioVedovati,Trio-Servizieditoriali([email protected])Realizzazione:Trio-Servizieditoriali(www.iltrio.it)Traduzionedi:AnnaRizzon,RosarioViscardiRevisionetecnica:DanieleBochicchio,MatteoCasati,MarcoDeSanctis,StefanoMostarda

    Copertina:SaraTaglialegne,Trio-Servizieditoriali([email protected])

    Realizzazionedigitale:Promedia,Torino

  • INDICEPERCAPITOLI

    INTRODUZIONE

    PARTEI:COSTRUTTIDELLINGUAGGIOEAMBIENTEDISVILUPPO

    CAPITOLO1:VisualStudio2010

    CAPITOLO2:OggettieVisualBasic

    CAPITOLO3:Oggettipersonalizzati

    CAPITOLO4:IlCLR(CommonLanguageRuntime)

    CAPITOLO5:ProgrammazionedichiarativaconVisualBasic

    CAPITOLO6:Gestionedelleeccezioniedebug

    CAPITOLO7:TestDrivenDevelopment

    PARTEII-OGGETTIDIBUSINESSEACCESSOAIDATI

    CAPITOLO8:Array,collectionegenerics

    CAPITOLO9:UtilizzareXMLconVisualBasic

    CAPITOLO10:ADO.NETeLINQ

    CAPITOLO11:AccessoaidaticonEntityFramework

    CAPITOLO12:LavorareconSQLServer

    CAPITOLO13:Servizi(XML/WCF)

    PARTEIII-APPLICAZIONISMARTCLIENT

    CAPITOLO14:WindowsForms

    CAPITOLO15:WindowsFormsavanzato

    CAPITOLO16:UsercontrolchecombinanoWPFeWindowsForms

    CAPITOLO17:ApplicazionidesktopWPF

    CAPITOLO18:ExpressionBlend3

    CAPITOLO19:Silverlight

    PARTEIV-APPLICAZIONIINTERNET

    CAPITOLO20:Silverlighteservizi

  • CAPITOLO21:LavorareconASP.NET

    CAPITOLO22:FunzionalitavanzatediASP.NET

    CAPITOLO23:ASP.NETMVC

    CAPITOLO24:SviluppoconSharePoint2010

    PARTEV-LIBRERIEEARGOMENTISPECIALIZZATI

    CAPITOLO25:VisualStudioToolsperMicrosoftOffice

    CAPITOLO26:WindowsWorkflowFoundation

    CAPITOLO27:Localizzazione

    CAPITOLO28:COM-Interop

    CAPITOLO29:Programmazionedirete

    CAPITOLO30:Applicationservices

    CAPITOLO31:Assemblyereflection

    CAPITOLO32:Sicurezzain.NETFramework

    CAPITOLO33:Programmazioneinparallelocontaskethread

    CAPITOLO34:Distribuzione

    APPENDICEA:IlcompilatoreVisualBasic

    APPENDICEB:VisualBasicPowerPacks

    APPENDICEC:SpecifichediWorkflow2008

    APPENDICED:EnterpriseServices

    APPENDICEE:Programmazioneperilcloud

    INDICEANALITICO

  • RINGRAZIAMENTI

    AllamiasplendidamoglieTracie,obbligataasopportarmiquandomiisoloperconcentramisullascrittura.EallaprossimagenerazionedibambinichesisonounitiallanostrafamigliaSheldonallargata(lamiaequelladeimieifratelli)negliultimicinqueanni:Nick,Elena,Ben,BillyV,AbigaileJohnny.Ognunodivoiunapartepreziosadellenostrevite.

    BILLSHELDON

    Vorreidavveroringraziarelamiafamiglia,chehainqualchemodoimparatoadaccettarelemiesessionidiscritturadamaratoneta,eilmiopartnercommercialeGaryBailey,chemantienesoddisfattiinostriclientimentreioscrivo.

    BILLYHOLLIS

    ABabi,chemitienevivoemisopporta,speropermoltotempoancora.

    KENTSHARKEY

    AllamiabellissimamoglieJennifer,ilmiopigrandeincoraggiamentononostantelelunghegiornatepassateascrivereealavorare.EallamiaadoratafigliaKathryn,cheriescesempreafarnascereunsorrisosulmiovoltodopounalungagiornatadilavoro.

    JONATHANMARBUTT

    Amiopadre,chenonsilamentatroppodeiweekendchepassoascrivereanzichagiocareagolfconlui.

    ROBWINDSOR

    AmiofiglioKevin.

    GASTNHILLAR

  • INDICE

    Circalautore

    INTRODUZIONE

    PARTEI-COSTRUTTIDELLINGUAGGIOEAMBIENTEDISVILUPPO

    CAPITOLO1:VISUALSTUDIO2010

    VisualStudio2010:daExpressaUltimateLeparolechiaveelasintassidiVisualBasicApplicazioniconsoleCreareunprogettopartendodauntemplateSolutionExplorerLeproprietdelprogettoLafinestraAssemblyInformationImpostazionidelcompilatoreProprietdidebugRiferimentiRisorseImpostazioniAltreschededelleproprietdelprogetto

    PROJECTPROVB_VS2010LeproprietdelformimpostatenelcodiceAreedicodiceTabfluttuantiEseguireProVB_VS2010PersonalizzareleditorditestoIntelliSense,espansionedelcodiceecodesnippetIcomponentiaggiuntividiVisualStudio

    MigliorarelapplicazionediesempioPersonalizzareilcodiceCompilareleapplicazioniEseguireunapplicazioneneldebuggerAltrefinestrecollegatealdebugRiutilizzareilprimoWindowsForm

    FunzionalitutilidiVisualStudio2010ConfigurazionidicompilazioneLaTaskListLafinestraCommand

  • ServerExplorerRegistrareeutilizzarelemacroinVisualStudio2010IdiagrammidelleclassiGestionedelciclodivitadellapplicazioneStrumentiperleprestazioni

    Riepilogo

    CAPITOLO2:OGGETTIEVISUALBASIC

    LaterminologiadellobjectorientedprogrammingOggetti,classieistanzeComposizionediunoggettoSystem.Object

    UtilizzareitipididatidiVisualBasicTipidivaloreetipidiriferimentoTipididatiprimitivi

    ComandicondizionaliIfThenOperatoridiconfrontoSelectCase

    Itipidivalore(strutture)BooleanItipiIntegerTipiunsignedTipidecimaliChareByteDateTime

    Tipidiriferimento(classi)LaclasseObjectLaclasseStringLaclasseStringimmutabileValoriXMLliteralsLaclasseDBNullelafunzioneIsDBNull

    PassaggiodiparametriParamArray

    AmbitodivaliditdellevariabiliLavorareconglioggettiDichiarazionedioggettiecreazionedellistanzaRiferimentiaglioggettiAnnullareiriferimentiaglioggettiEarlybindingelatebinding

    ConversionetratipididatiEseguireconversioniesplicite

    CreareleclassiClassibaseGestireglieventi

  • GestireeventimutipliLaparolachiaveWithEventsDichiarareescatenareglieventipersonalizzatiRicevereeventiconWithEventsRicevereeventiconAddHandlerMetodiperilcostruttoreTerminazioneepulizia

    ConcettiavanzatiOverloaddeimetodiOverloaddeimetodicostruttoriMetodi,variabiliedeventistaticiOverloaddeglioperatoriDelegateClassiecomponentLambda

    Riepilogo

    CAPITOLO3:OGGETTIPERSONALIZZATI

    lEreditarietImplementarelereditarietOverloaddeimetodiOverridedeimetodiLaparolachiaveOverridableLaparolachiaveOverridesLaparolachiaveMyBaseMetodivirtualiInteragireconlaclassebase,lapropriaclasseeloggettoCostruttorisempliciAmbitoProtectedCreareunaclassebaseastratta

    InterfaccemultipleLeinterfaccedeglioggettiInterfaccesecondarie

    AstrazioneIncapsulamentoPolimorfismoFirmedeimetodi

    EreditarietQuandousarelereditarietQuantoandareinprofondit?

    Riepilogo

    CAPITOLO4:ILCLR(COMMONLANGUAGERUNTIME)

    Elementidiunapplicazione.NET

  • ModuleAssemblyTipi

    ControllodelleversioniedistribuzioneUnmigliorsupportodelcontrollodelleversioniMajor.Minor.Build.RevisionMigliorieinfasedidistribuzione

    IntegrazioneconaltrilinguaggiIlcommontypesystemMetadatiMigliorsupportoperimetadatiAttributiLAPIReflection

    DisassemblerdellILGestionedellamemoriaGarbageCollectiontradizionaleUnallocazionepirapidadellamemoriaperglioggettiOttimizzazionidelGarbageCollector

    NamespaceChecosunnamespace?NamespaceeriferimentiNamespacecomuniImportareinamespaceecreareglialiasCreareglialiasperinamespaceFareriferimentoainamespaceinASP.NET

    CreareiproprinamespaceLaparolachiaveMyMy.ApplicationMy.ComputerIlnamespaceMy.FormsMy.ResourcesMy.User

    EstendereilnamespaceMyRiepilogo

    CAPITOLO5:PROGRAMMAZIONEDICHIARATIVACONVISUALBASIC

    ProgrammazionedichiarativaeVisualBasicUtilizzareXAMLpercreareunafinestraSintassiXAMLConcettibasedellinguaggioXAMLDirettiveXAML

    UtilizzareXAMLperdichiarareunworkflowRiepilogo

    CAPITOLO6:GESTIONEDELLEECCEZIONIEDEBUG

  • NovitdiVisualStudio2010TeamSystem:ildebugcronologicoNotesullacompatibilitconVB6Eccezioniin.NETProprietemetodiimportantidiuneccezione

    ParolechiavepergestireleeccezioniinformastrutturataLeparolechiaveTry,CatcheFinallyLaparolachiaveThrowGenerareunanuovaeccezioneListruzioneExitTryStruttureTrynidificateUtilizzareleproprietdiExceptionLaproprietMessageLeproprietInnerExceptioneTargetSite

    InteroperabilitconlagestionedeglierroriinstileVB6LogdeglierroriEventlogEventi,metodieproprietScrivereneifileditracing

    Riepilogo

    CAPITOLO7:TESTDRIVENDEVELOPMENT

    QuandoecometestareUtilizzareleasserzioni

    StrumentiTDDdiVisualStudioUnittestpassopassoCreareuntestEseguireuntestTestareilcodicecheaccedeaidatiUtilizzarelafunzionalitGeneratefromUsage

    AltreversionidiVisualStudioFrameworkditerzepartiperitestRiepilogo

    PARTEII-OGGETTIDIBUSINESSEACCESSOAIDATI

    CAPITOLO8:ARRAY,COLLECTIONEGENERICS

    ArrayArraymultidimensionaliLafunzioneUBoundListruzioneReDimLaparolachiavePreserve

    CollectionIstruzioniiterative

    Generics

  • UtilizzareigenericsTipinullableTipigenericMetodigeneric

    CreareigenericsTipidigenericMetodigenericVincoliGenericselatebindingCovarianzaecontrovarianza

    Riepilogo

    CAPITOLO9:UTILIZZAREXMLCONVISUALBASIC

    IntroduzioneaXMLSerializzazioneXMLAttributidistiledelcodicesorgente

    SupportodocumentiSystem.XmlParserdiunostreamXMLScrivereinunostreamXMLLeggereunostreamXMLDOM(DocumentObjectModel)

    TrasformazioniXSLTrasformazioniXSLTtrastandardXMLAltreclassieinterfacceinSystem.Xml.Xsl

    XMLinASP.NETIlcontrolloserverXmlDataSourceIlproblemadelnamespacedelcontrolloXmlDataSourceIlcontrolloserverXml

    LINQtoXMLOggettiXMLdisupportoaLINQXDocumentXElementXNamespaceXAttribute

    VisualBasiceXMLliteralsUtilizzareLINQperinterrogareidocumentiXMLInterrogaredocumentiXMLstaticiInterrogaredocumentiXMLdinamici

    UtilizzareidocumentiXMLLeggeredatidaundocumentoXMLScriveredatiinundocumentoXML

    LambdaexpressioninVisualBasicRiepilogo

    CAPITOLO10:ADO.NETELINQ

  • LarchitetturaADO.NETFunzionalitbasediADO.NETAttivitcomunidiADO.NETNamespaceeclassibasediADO.NETComponentiADO.NET

    Dataprovider.NETLoggettoConnectionLoggettoCommandUtilizzarelestoredprocedureconglioggettiCommandLoggettoDataReaderEseguireicomandiinmodoasincronoOggettiDataAdapterIldataproviderSQLServer.NETIldataproviderOLEDB.NET

    IlcomponenteDataSetDataTableCollectionDataRelationCollectionExtendedPropertiesCreareeusareglioggettiDataSetOggettiADO.NETDataTableFunzionalitADO.NETavanzatedeglioggettiDataSeteDataTable

    UtilizzareilcommonprovidermodelConnectionpoolinginADO.NETTransactioneSystem.TransactionsCreareletransazioniCreareglihandlerdirisorse

    LINQtoSQLLINQtoSQLeVisualBasicRecuperaredatiattraversoLINQtoSQL:crearelapplicazioneconsoleO/RDesignerCreareloggettoProduct

    ComemappareglioggettidatabaseaglioggettiLINQLoggettoDataContextLoggettoTable(TEntity)

    InterrogareildatabaseUtilizzareleespressionidiqueryEspressionidiqueryindettaglioFiltrareleespressioniEseguirelejoinRaggruppareglielementi

    StoredprocedureAggiornareilDatabaseRiepilogo

    CAPITOLO11:ACCESSOAIDATICONENTITYFRAMEWORK

  • ObjectrealtionalmappingArchitetturadiEntityFrameworkIlconceptualmodelStoragemodelMappingmodelDaLINQalleentitObjectContext

    MappingdioggettisuentitMappingsempliceUtilizzareunasingolatabellapermolteplicioggettiUtilizzaremolteplicitabelleperunoggetto

    GenerareildatabasedaunmodelloAggiornareilmodello

    Riepilogo

    CAPITOLO12:LAVORARECONSQLSERVER

    SQLServerCompactCollegarsiaundatabaseSQLServerCompactSincronizzareidati

    FunzionalitXMLincorporateinSQLServerIntegrazioneCLRinSQLServerT-SQLoVisualBasic?CrearetipididatidefinitidallutenteCrearelestoredprocedureEsporreWebservicedaSQLServerFunzionalitdiSQLServer2008

    WCFdataservicesRESTAtomeJSONEsporredatiusandoWCFDataServicesWCFDataServicesClientLibrary

    Riepilogo

    CAPITOLO13:SERVIZI(XML/WCF)

    IntroduzioneaiserviziIlpuntodivistadellareteSviluppodelleapplicazioniUnirelareteallosviluppodelleapplicazioniLefondamentadeiWebserviceIproblemiQualchealtrogiocatoreWebserviceChecosacomponeunservizioWCF

    LospostamentoversoSOA

  • CaratteristichediWCFContractemetadatiUtilizzareiprotocolliWS-*

    CostruireunservizioWCFCrearelinterfacciaUtilizzarelinterfacciaRiesaminareildocumentoWSDL

    CostruireunconsumerWCFAggiungereunServiceReferenceEsaminarelareferenceModifichealfilediconfigurazioneScrivereilcodicecheutilizzailservizio

    UtilizzareidatacontractCostruireunservizioconundatacontract

    NamespaceCostruirelhostCostruireilconsumerIlWSDLeloschemadiHelloCustomerService

    Riepilogo

    PARTEIII-APPLICAZIONISMARTCLIENT

    CAPITOLO14:WINDOWSFORMS

    IlnamespaceSystem.Windows.FormsUsareiformImpostareunformdiavvioVisualizzareiformtramiteSubMainAltreinformazionisullaclasseApplicationLaposizioneinizialediunformIbordidelformSempreinprimopiano:laproprietTopMostFormsecondariRendereiformtrasparentietraslucidiEreditarietgraficaFormconscrollingFormMDIUnesempioMDIinVB2010FinestredidialogoFormaruntimeIstanzedidefaultdiunForm

    ControlliOrdineditabulazionedeicontrolliProprietdituttiicontrolliRidimensionamentoeposizionamentodinamicodeicontrolli

  • IlcontrolloFlowLayoutPanelIlcontrolloTableLayoutPanelIcontrollicontenitorePaneleGroupBoxExtenderproviderCapacitavanzateperlinserimentodeidatiConvalidareidatiinseritiLebarredeglistrumentieilcontrolloToolStripMenuFinestredidialogostandardDrag&DropRiepilogodeicontrollistandarddiWindows.FormsGestiregruppidicontrollicorrelatiAggiungerecontrolliinfasediesecuzione

    AltripraticisuggerimentidiprogrammazioneRiepilogo

    CAPITOLO15:WINDOWSFORMSAVANZATO

    ImpacchettarelalogicaneicontrollivisualiControllipersonalizzatiinWindowsFormsEreditaredauncontrolloesistenteCostruireuncontrollocompositoScrivereuncontrollodazero

    EreditaredauncontrolloesistentePanoramicadelprocessoScrivereilcodicediuncontrollocheereditadaunaltrocontrolloAltriattributiutiliDefinireuneventopersonalizzatoperilcontrolloereditatoUnaCheckedListBoxchelimitaglielementiselezionati

    LeclassibaseControleUserControlLaclasseControlLaclasseUserControl

    UserControlcompositoCreareUserControlcompositiRidimensionareilcontrolloEsporreleproprietdeicontrollicontenutiCostruirelesempiopassopasso

    CostruireuncontrollopartendodazeroDisegnareuncontrollopersonalizzatomedianteGDI+

    AssociareuniconaperlatoolboxIncorporarecontrolliinaltricontrolliRiepilogo

    CAPITOLO16:USERCONTROLCHECOMBINANOWPFEWINDOWSFORMS

    Lalibreriadiintegrazione

  • InsereirecontrolliWPFinWindowsFormsCreareunaWPFControlLibraryLapplicazioneWindowsForms

    InserirecontrolliWindowsFormsinWPFLimitidellintegrazioneRiepilogo

    CAPITOLO17:APPLICAZIONIDESKTOPWPF

    Cosa,dove,perch,come:lastrategiadiWPFGraficarasteregraficavettorialeSceltadiWPFperunprogettoWindowsCreazionediunapplicazioneWPFImplementazionediunapplicazioneWPFpersonalizzataPersonalizzazionedellinterfacciautentePersonalizzazionedeipulsanti

    Riepilogo

    CAPITOLO18:EXPRESSIONBLEND3

    IntroduzioneaBlendCreazionediunnuovoprogetto

    SketchFlowIltuoprimoSketchFlowSketchFlowPlayerDocumentazionediSketchFlow

    Riepilogo

    CAPITOLO19:SILVERLIGHT

    SilverlightSmoothStreamingStandardvideodisettoreDRM(DigitalRightsManagement)

    AvviodiunprogettoSilverlightApplicazioneSilverlightApplicazioneSilverlighconsupportoallanavigazioneLibreriadiclassiSilverlight

    SoluzioneSilverlightApplicazioneWebSalvareincachelelibreriedellapplicazioneApplicazioneSilverlight

    ControlliGestionedellayout

    AggiuntadielementialprogettoSilverlightUsercontrolperSilverlightClassediapplicazioneperSilverlight

  • PaginaperSilverlightChildWindowsperSilverlightControlloditipotemplateperSilverlightResourceDictionaryperSilverlight

    UsodiSilverlightinmodalitoutofbrowserRiepilogo

    PARTEIV-APPLICAZIONIINTERNET

    CAPITOLO20:SILVERLIGHTESERVIZI

    ServizieSilverlightWebserviceASMXServizioWCFADO.NETDataService

    MVVM(Model-View-ViewModel)Separazionedellecompetenze(SeparationofConcerns)ModelViewViewModel

    Riepilogo

    CAPITOLO21:LAVORARECONASP.NET

    LastoriadiASP.NETFunzionalitprincipalidiASP.NETProduttivitdellosviluppatorePrestazioniescalabilitLocalizzazioneHealthMonitoringAccessoaidatisemplificatoAmministrazioneegestione

    SupportodiVisualStudioperASP.NETProgettipersitoWebeapplicazioniWebCartelledisistemadiASP.NETOpzionidelserverWeb

    CreazionediapplicazioniASP.NETconWebFormsPagine,form,controlliedeventi

    ApplicazionibasatesuidatiDatabindingconilcontrolloSqlDataSourceDatabindingconilcontrolloLinqDataSourceDatabindingconilcontrolloObjectDataSource

    Riepilogo

    CAPITOLO22:FUNZIONALITAVANZATEDIASP.NET

  • MasterpageCreazionediunamasterpageCreazionedellacontentpageContenutopredefinitonellamasterpage

    NavigazioneUsodelcontrolloserverSiteMapPathControlloserverMenu

    UtilizzodelprovidermodelASP.NETCreazionediundatabasedegliapplicationservices

    GestionediMembershipedeiruoliProprietdelprofiloMicrosoftAjax(ASP.NETAJAX)ComprensionedellesigenzadiAjaxImplementazionediMicrosoftAjaxControlloUpdatePanelechiamateaiservizilatoclientIntroduzionealprogettodiesempioAggiuntadelcontrolloUpdatePanelInvocazionidiservizidalclienteusodiclienttemplate

    Riepilogo

    CAPITOLO23:ASP.NETMVC

    Model-View-ControllereASP.NETCreazionediunapplicazioneASP.NETMVCCreazionedelprogettoControllereactionAggiuntadelModelViewRoutingScaffoldingeoperazioniCRUDValidazione

    Riepilogo

    CAPITOLO24:SVILUPPOCONSHAREPOINT2010

    IntroduzioneSharePointFoundation2010SharePointServer2010TerminologiadiSharePointLambientedisviluppoSharePoint

    FeatureeSolutionsFrameworkFeatureSolutionsFramework

    StrumentidiVisualStudioperlosviluppoSharePointItemplateaoggettidiSharePoint2010Templateaoggettiserver

  • ModelliaoggetticlientCreazionediWebpartRiepilogo

    PARTEV-LIBRERIEEARGOMENTISPECIALIZZATI

    CAPITOLO25:VISUALSTUDIOTOOLSPERMICROSOFTOFFICE

    AnalisidelleversionidiVSTOOfficeAutomationeVSTODistribuzionesenzaPIATipidiprogettoVSTO

    ArchitetturadelleapplicazioniaziendaliOfficeUtilizzodiVBAeVSTOCreazionediuntemplatedidocumento(Word)AggiuntadiuncontenutoaldocumentoAggiuntadiunabarramultifunzioneediunriquadrodelleazioniAttivazionedelriquadrodelleazioniAggiornamentodiunContentControl

    CreazionediunAdd-indiOffice(Excel)AreedimoduloOutlookRiepilogo

    CAPITOLO26:WINDOWSWORKFLOWFOUNDATION

    WorkflownelleapplicazioniCreazionediworkflowAggiuntadelworkflowconWindowsWorkflowFoundationUnsempliceworkflowAttivitstandardUnworkflowmenosempliceCreazionediattivitpersonalizzateCaricamentodinamicodeiworkflow

    HostingdiprogettazioneworkflowRiepilogo

    CAPITOLO27:LOCALIZZAZIONE

    CultureeareegeograficheComprensionedeitipidicultureAnalisidelthreadDichiarazioneglobaledellacultureinASP.NETAdozionedelleimpostazionidicultureinASP.NET

    TraduzionedivaloriecomportamentiComprensionedelledifferenzenelledateDifferenzeneinumerienellevalute

  • ComprensionedelledifferenzenellordinamentoFiledirisorseASP.NETUsodellerisorselocaliRisorseglobali

    FiledirisorseinWindowsFormsRiepilogo

    CAPITOLO28:COM-INTEROP

    ComprensionediCOMCOMe.NETinpraticaUncomponentelegacyLapplicazione.NETProvadellesempioUsodirettodiTlbImpLatebinding

    ControlliActiveXIlcontrolloActiveXlegacyUnapplicazione.NET(dinuovo)Provadellesempio

    Usodeicomponenti.NETnelmondoCOMUncomponente.NETRegAsmTlbExp

    P/InvokeWindowsAPICodePack

    Riepilogo

    CAPITOLO29:PROGRAMMAZIONEDIRETE

    Protocolli,indirizzieporteIndirizzienomiPorteFirewall

    IlnamespaceSystem.NetRichiesteerisposteWebSemplificazionedellerichiesteWebcomuniconWebClient

    SocketCreazionedellapplicazioneCreazionedellefinestrediconversazioneInviodimessaggiChiusuradellapplicazione

    UsodiInternetExplorernelleapplicazioniWindowsFormseHTML

    Riepilogo

    CAPITOLO30:APPLICATIONSERVICES

  • UsodiIISpergliapplicationservicesWindowsServicesCaratteristichediunservizioWindowsInterazioneconiserviziWindowsCreazionediunservizioWindowsClassidi.NETFrameworkperiserviziWindowsAltritipidiserviziWindows

    CreazionediunservizioWindowsinVisualBasicCreazionediunservizioFileWatcherCreazionediunasoluzioneperilservizioWindowsAggiuntadicomponenti.NETalservizioInstallazionedelservizioAvviodelservizioDisinstallazionedelservizio

    ComunicazioneconilservizioLaclasseServiceControllerIntegrazionediunServiceControllernellesempioUlterioriinformazionisuServiceController

    ComandipersonalizzatiPassaggiodistringheaunservizioDebugdelservizioRiepilogo

    CAPITOLO31:ASSEMBLYEREFLECTION

    AssemblyIlmanifestIdentitdegliassemblyAssemblyreferenziati

    AssemblyedistribuzioneAssemblyprivatialivellodiapplicazioneAssemblycondivisi

    ProblemilegatialcontrollodelleversioniIsolamentodelleapplicazioniEsecuzioneside-by-sideComponentiautodescriventiCriteridicontrollodelleversioniFilediconfigurazione

    NozionifondamentalisullareflectionLaclasseAssemblyRecuperodegliassemblyattualmentecaricatiLaclasseType

    CaricamentodinamicodegliassemblyIlmetodoLoadFromdellaclasseAssemblyEsempiodicaricamentodinamicoUsopraticodegliassembly

  • Riepilogo

    CAPITOLO32:SICUREZZAIN.NETFRAMEWORK

    ConcettiedefinizionirelativiallasicurezzaAutorizzazioninelnamespaceSystem.Security.PermissionsAutorizzazionidiaccessoalcodiceAutorizzazionidiidentityAutorizzazionibasatesulruolo

    GestionedeisetdiautorizzazionidiaccessoalcodiceControllodellaccessoutenteDefinizionedelleimpostazionidellapplicazioneStrumentidiprotezioneEccezioniconlaclasseSecurityException

    NozionifondamentalisullacrittografiaAlgoritmihash

    Riepilogo

    CAPITOLO33:PROGRAMMAZIONEINPARALLELOCONTASKETHREAD

    AvvioditaskinparalleloClasseSystem.Threading.Tasks.ParallelParallel.Invoke

    TrasformazionedicodicesequenzialeincodiceparalelloRilevamentodihotspotMisurazionedelguadagnodivelocitdovutoallesecuzioneinparalleloComprensionedellesecuzionesimultaneaeinparallelo

    CicliinparalleloParallel.ForParallel.ForEachUscitadaicicliparalleli

    SceltadelgradodesideratodiparallelismoParallelOptionsComprensionedeithreadhardwareedeicorelogici

    CreazioneegestionedeitaskSystem.Threading.Tasks.TaskComprensionedelciclodivitadiuntaskUsodeitaskattivitperilcodiceinparalleloRestituzionedivaloridaitaskPreparazionedelcodiceperlaconcorrenzaeilparallelismoComprensionedellefunzionalitdegliinsiemisimultaneiTrasformazionediLINQinPLINQ

    Riepilogo

    CAPITOLO34:DISTRIBUZIONE

    Distribuzionedelleapplicazioni

  • Semplicitdelladistribuzionein.NETDistribuzioneXCOPYUsodiWindowsInstallerDistribuzioneClickOnce

    SceltadiunaversionedelFrameworkProgettididistribuzionediVisualStudioTemplatediprogettoCreazionediunprogettodidistribuzione

    ModificadelprogettodidistribuzioneProprietdelprogettoFileSystemEditorRegistryEditorFileTypesEditorUserInterfaceEditorCustomActionsEditorLaunchConditionsEditorCompilazione

    DistribuzioneInternetdelleapplicazioniWindowsDistribuzioneno-touchDistribuzioneClickOnce

    IISWebDeploymentToolRiepilogo

    APPENDICEA:ILCOMPILATOREVISUALBASIC

    Ilfilevbc.exe.configSemplicipassaggiperlacompilazioneOpzionidelcompilatoreFiledioutputFilediinputRisorseGenerazionedelcodiceErrorieavvisiLinguaggioVarieFunzionalitavanzate

    Ilfilevbc.rsp

    APPENDICEB:VISUALBASICPOWERPACKS

    VisualBasicPowerPacksRecuperodeiVisualBasicPowerPacks

    UsodiInteropFormsToolkit2.1CreazionediunsempliceInteropFormDistribuzioneDebug

  • SviluppoVB6Suggerimentifinalisullinteroperabilit

    UsodeglistrumentidiPowerPacks3.0Riepilogo

    APPENDICEC:SPECIFICHEDIWORKFLOW2008

    CreazionediworkflowUnsempliceworkflowAttivitstandardCreazionediattivitpersonalizzate

    UsodeiworkflowconaltreapplicazioniUsodiWorkflowFoundationconWindowsForms

    Riepilogo

    APPENDICED:ENTERPRISESERVICES

    TransazioniIltestACID

    ComponentitransazionaliUnesempioditransazioni

    AltriaspettidelletransazioniJITPoolingdioggetti

    ComponentiincodaUnesempiodicomponentiincodaTransazioniconicomponentiincoda

    Riepilogo

    APPENDICEE:PROGRAMMAZIONEPERILCLOUD

    LanascitadelcloudScenaridicloud

    AzureIlfabricServiziStorageServiziComputeWindowsAzureToolsforVisualStudioDistribuzionedelservizio

    Riepilogo

    INDICEANALITICO

    Informazionisullibro

  • REVISORIPERLEDIZIONEITALIANA

    DanieleBochicchioilcontentmanagerdiASPItalia.comNetwork,lastoricacommunityitalianadedicataallosviluppo.Danieleanchetraico-fondatoridi5DLabs.it,agenziadiconsulenzaspecializzatainwebedigitalmedia.autoredidiversilibri,initalianoeininglese,suASP.NET,.NETFrameworkeSilverlight.

    MatteoCasati,nellasuaesperienzalavorativa,haavutomododiconfrontarsiconsvariatetipologiediprogetto(e-commerce,corporatewebsites, intranetedextranet)ediarchitettura (data-centric,distributedapplicatione serviceorientedarchitecture).statodocente incorsidi formazionesuperiore inambito informatico.Attualmente lavoracomeconsulenteedpartedellostaffdiASPItalia.comcomeTechnicalContributor.

    Marco De Sanctis content manager di ASPItalia.com e si occupa di progettazione e sviluppo di applicazioni enterprise basate sutecnologia.NET.MicrosoftMVPperASP.NET.

    StefanoMostarda sioccupadiprogettazionee sviluppodiapplicativiWebsupiattaformaMicrosoft.cofondatoredi5DLabs.itedMicrosoftMVPnellacategoriaDataAccess.

  • GLIAUTORI

    BillSheldonun ingegnereeunarchitettodelsoftware,natoaBaltimoranelMaryland.Billhaconseguitouna laurea inscienzeinformatichepressolIllinoisInstituteofTechnology(IIT)edstatoattivamenteimpiegatocomeingegneredelsoftwarefindalsuocongedodallaMarinadegliStatiUniti.unMicrosoftMVPperVisualBasic e lavora aCarlsbad, inCalifornia.Bill ancheuninsegnanteneicorsisu.NETpressolaUniversityofCaliforniaSanDiegoExtension.Oltreascriverelibri,Billhapubblicatodecinediarticoli,tracuilaDeveloperUpdateNewsletter,articoliperlarivistaSQLServerMagazineealtrepubblicazionidiPenton.Tieneconferenze online perMSDN e partecipa a eventi dal vivo qualiVSLive,DevConnections,OfficeDevelopersConference e altrieventicomunitaricomequelliperigruppidiutentieicodecamp.Billunappassionatociclistaesioccupaattivamentedellalottaaldiabete.Puessereseguitosulsuoblog,allindirizzowww.nerdnotes.net/blog,otramiteTwitter:NerdNotes.

    BillyHollisunautoreeunconsulenteinformaticodiNashville,Tennessee.BillystatocoautoredelprimolibromaipubblicatosuVisual Basic .NET e dimolti altri libri sullo sviluppo software. membro del programmaMicrosoft RegionalDirector ed unMicrosoftMVP.Nel2002Billystatosceltocomeunadelleoriginali.NETSoftwareLegend.attivonelcampodellaconsulenza,dellaformazioneedellosvilupposullapiattaforma.NET,occupandosiprincipalmentediarchitettura,svilupposmartclient,pacchettibusinessetecnologiedellinterfacciautente.Parlaspessodisvilupposoftwarepressoleprincipaliconferenzeintuttoilmondo,tracui gli eventi Microsoft PDC e TechEd events, DevConnections, VSLive ed eventi relativi allarchitettura come il Patterns andPracticesArchitectSummit.

    KentSharkeyunconsulenteindipendentecheviveescrivecodiceaComox,nellaBritishColumbia.Primadimettersiinproprio,KenthalavoratopressoMicrosoftcomeevangelisttecnicoestrategadelcontenuto,promuovendolusodelletecnologie.NET.ViveconsuamoglieMargaretetrepargoli:Squirrel,CicaeToffee.

  • JonathanMarbuttvice-presidentallosviluppoperWayCoolSoftware,Inc.,consedeaBirmingham,Alabama.Halavoratocomeprofessionistanellosvilupposoftwarefindal1996,occupandosididiversetecnologieMicrosoftdaVB6a.NET.NegliultimianniJonathansioccupatodellosviluppoconSilverlightperlacreazionediapplicazioniInternetline-of-businessperilsettoreno-profit.Attraversoquesto sviluppo, ha iniziato a concentrarsi sullesperienzautente (UX,UserExperience) utilizzandoprodottiMicrosoftcome Expression Blend e tecnologie quali Silverlight. Per ulteriori informazioni, Jonathan pu essere contattato allindirizzowww.jmtechware.com.

    RobWindsor uno sviluppatore, un istruttore, un autore e un SeniorConsultant diObjectSharpConsulting, unMicrosoftGoldPartnerconsedeaToronto,inCanada.Haoltre15annidiesperienzanellosviluppodiapplicazionirich-clienteWebconDelphi,VB,C#eVB.NET;attualmentededicalamaggiorpartedelsuotempoallavoroconSharePoint.RobmembrosiadellINETASpeakersBureau sia delMSDNCanadaSpeakersBureau e partecipa regolarmente a conferenze, camp code e gruppi di utenti nelNordAmerica e in Europa. presidente del TorontoVisual Basic User Group ed stato riconosciuto comeMicrosoftMost ValuableProfessionalperilsuocoinvolgimentonellacomunitdeglisviluppatori.

    GastnC.Hillar lavoraconicomputerdaquandoavevaottoanni.HainiziatoaprogrammareconileggendariTexasTI-99/4AeCommodore64alliniziodeglianniOttanta.Halavoratocomesviluppatore,architettoeprojectmanagerpermoltesocietdiBuenosAires,inArgentina;oggiunconsulenteITindipendentechecollaboracondiversesocietspagnole,tedescheedellAmericalatina,nonchautorefreelance.sempreallaricercadinuoveavventurenelmondo.

    Gastn lautore di pi di 40 libri in spagnolo e ha scritto due libri in inglese.Ha contribuito al portale di programmazioneDr.DobbsGoParallelallindirizzowww.ddj.com/go-parallel/,aDr.Dobbsallindirizzohttp://drdobbs.comeaggiornaregolarmenteilblogdiIntelSoftwareNetworkallindirizzohttp://software.intel.com.ViveconsuamoglieVanesaesuofiglioKevin.Quandononarmeggiacon icomputer,amasviluppareegiocarecondispositiviegiochielettroniciwirelessperlarealtvirtualeassiemeasuopadre,asuofiglioeasuonipoteNico.Puesserecontattatoallindirizzogastonhillar@hotmail.com.LindirizzoperseguirlosuTwitterhttp://twitter.com/gastonhillar.IlblogdiGastnsitrovaallindirizzohttp://csharpmulticore.blogspot.com.

  • ITECHNICALEDITOR

    DianneSieboldunasviluppatricesoftwareeunautricespecializzatainVB,C#,.NETFramework,WCF,ADOeSQLServer.Halavorato per numerosi partner Microsoft scrivendo applicazioni business che pongono laccento sui servizi e laccesso ai dati.Attualmente lavora perMicrosoft scrivendo la documentazione per gli sviluppatori del gruppo di prodotti Dynamics. Pu [email protected].

    DougParsons un architetto software .NET e un redattore tecnico professionista specializzato in C#, SQL Server e numerosiparadigmiarchitettonici.Nelcorsodellasuacarrierahalavoratoaunamiriadediprogetti;ilpiimportantestatoilsitoWebperlacampagnapresidenzialedel2008per il candidatoallapresidenzadegliStatiUniti JohnMcCain.Attualmente lavoraperNJINewMedia, scrivendo software per clienti in ambito prevalentemente politico. Pu essere contattato via e-mail [email protected].

    DougWaterfield unarchitetto softwareeun ingegnerechevivecon la sua famiglia adAvon, Indiana.DopoaverottenutounalaureainscienzeinformatichepressoilRose-HulmanInstituteofTechnology,Doughaprogettatoesviluppatoapplicazionibusinesseenterpriseconunampiavarietditecnologie.Doughaguidatorepartieteamdisviluppoperdiverseaziendeprimadidiventareunconsulenteindipendenteperletecnologie.NET.unufficialeinpensionedellesercitoamericano(USArmyReserve)edunaguidavolontariaperiCubScoutseiBoyScouts.

  • INTRODUZIONE

    Nel2002VisualBasichacompiutoilpigrandesaltonellinnovazionedalsuoprimorilascio,conlintroduzionediVisualBasic.NET(comefupoichiamato).Dopooltreundecennio,cisiaspettavaunaprofondarevisionediVisualBasic.Tuttavia,ilnuovo.NETandatobelaldildelleaspettative.LemodifichehannoinfluenzatoquasiogniaspettodellosviluppoinVisualBasic.LinteromodelloruntimesispostatoinunnuovoambienteCLR(CommonLanguageRuntime)eillinguaggiocheprimasibasavasuglioggettiadessoorientatoaglioggetti.DallintegrazionedellefunzionalitperInternet alla creazione di framework orientati agli oggetti, Visual Basic .NET ha costretto itradizionalisviluppatoriVBadapprenderenuoviconcettienuovetecniche.

    Le varie versioni, da allora, hanno continuato a fornire sempre nuovimiglioramenti al linguaggioVisual Basic. Sono state aggiunte funzionalit che hanno cementato il ruolo di questo linguaggiocome un vero linguaggio orientato agli oggetti e fornito laccesso a nuove e migliori tecnologie.Visual Basic 2010 continua questa evoluzione e, anche se impararlo resta una sfida per glisviluppatoriVB6,facileperchihagifamiliaritconleversioniprecedentiequestolibrostatoscrittoperdareunamanolungoilcammino.

    VisualStudio2010distribuitoconlaversione4di.NETFramework.QuestolibroforniscedettaglinonsolosullaversionepirecentediVisualBasic,la10,maanchesulnuovo.NETFramework4.Insieme, questi prodotti offrono agli sviluppatori Visual Basic la possibilit di creare applicazioniutilizzando Windows Presentation Foundation (WPF), Windows Forms, Visual Studio Tools forOffice e applicazioni e libreriebasate sulle caratteristichediWindowsCommunicationFoundation(WCF),WindowsWorkflowFoundation(WF)eSharePoint.

    .NETFramework4rappresentailcambiamentopisignificativoapportatoalframeworkdibaseda

    .NETFramework2.0.Fortunatamente,comeaccadutoconVisualStudio2008,VisualStudio2010consente agli sviluppatori di continuare a costruire e distribuire applicazioni destinate sia allaversioneappenarilasciatadi.NETsiaalleversioniprecedentidi.NETFramework.

    ChihadapocodecisodiabbandonareilmodellodisviluppodiVB6,troverchequestaversionediVisualBasicProfessionalmiratamenochemaialletradizionalidifferenzedicodicerispettoaVB6.Con ciascuna delle quattro versioni di .NET, il linguaggio di base ha continuato a progredire e adifferenziarsidacicheera10annifaopi.Inalcunicasi,lastessafunzionalitimplementatainmododiverso.Questononstatofattoarbitrariamente,maperbuonimotivi.Tuttavia,bisognaesseredispostiaperderelevecchieabitudinieadapprenderelenuovetecniche.

    Bisogna anche essere aperti ai nuovi concetti. Lorientamento completo agli oggetti, le nuovetecniche basate sui componenti, i nuovi strumenti visivi sia per le interfacce locali sia per quelleInternet,tuttoquestoealtroancoradevediventarepartedellecapacitdellosviluppatorechedesideracreareefficacementeapplicazioniinVisualBasic.

    QuestolibroparladiVisualBasicdallinizioallafine.IniziaintroducendoVisualStudio2010.PoichlostrumentochesiuserperlavorareconVisualBasic,comprenderelecapacitdibasediVisual

  • Studiorappresentalachiavedelsuccessoedeldivertimentonellacreazionediapplicazioni.NET.Inqueste pagine il lettore ha lopportunit di apprendere ogni cosa: accesso ai database, LINQ(LanguageIntegratedQuery),EntityFramework,integrazioneconaltretecnologiecomeWPF,WCFesoluzionibasatesuiservizi.Oltreaesaminareindettagliolenuovefunzionalit,sivedrcheVisualBasic10emersocomeunpotentelinguaggiocheconsentedicreareapplicazioniperInternetconlastessafacilitconcuisicreanoprogrammiperildesktop.Questolibrodescrive.NETFramework4.

  • ILFUTURODIVISUALBASIC

    Nelleprimefasidelciclodiadozionedi.NET,ilnuovolinguaggioMicrosoft,C#hafattolapartedelleone.Tuttavia, al crescere delladozionedi .NET diventata semprepi evidente limportanzadiVisual Basic. Microsoft ha dichiarato pubblicamente che considera Visual Basic il linguaggioprincipaleperglisviluppatoricheconsideranolaproduttivitunadelleprioritpialte.

    Il futuro sviluppo di Visual Basic enfatizzer le capacit che consentono di accedere allinteroestensione del .NETFramework nelmodo pi produttivo. In passato era comune, perMicrosoft ealtri,puntareadiversistilidisviluppo;conVisualStudio2010,MicrosofthaannunciatocheVBeC# seguiranno un processo di coevoluzione. A mano a mano che saranno sviluppate, nuovefunzionalit del linguaggio saranno introdotte contemporaneamente in Visual Basic e C#. Questaversioneilprimopassoinquestoprocesso,sebbenealmomentononsiaancoracompleto.

    Coevoluzionenonsignificacheilinguaggisarannoidentici,mapiuttostochesupporterannolestessecapacit.Peresempio,VisualBasichaivalori letteraliXML,maquestononsignificacheC#avresattamentelastessafunzionalit,inquantoC#ingradodilavorareconXMLattraversoleclassiframeworkesistenti. Ilvecchioprocessodi introdurreprimauna funzionalit inVisualBasicepoinellesuccessiveversionidiC#eviceversafinito.Amanoamanochesarannointrodotte,lenuovefunzionalitecaratteristicheapparirannocontemporaneamenteinVisualBasiceinC#.

    Comestatodettoinprecedenza,sebbenelemodifichenonsianocomplete,laprossimaversionediVisualBasic sarcoordinataconunanuovaversionediVisualStudioe lecapacitdiC#eVisualBasicdovrebberorispecchiarsiperfettamente,poichentrambisarannolinguaggidisviluppo.NETdiprima categoria. Questo risponde al ruolo tradizionale di Visual Basic come linguaggio che glisviluppatoriusanonelmondorealepercreareapplicazionibusinessilpivelocementepossibile.

    Uno dei vantaggi pi importanti di .NET Framework che consente di scrivere applicazioni conmoltomenocodice.Nelmondodelleapplicazionibusiness lobiettivoconcentrarsi sulla scritturadella logicaoperativa eliminandoquantopipossibile le operazionidi codificadi routine. In altreparole,lelementodimaggiorvaloreinquestonuovoparadigmalascritturadiapplicazionirobusteeutilisenzadoversfornareunsaccodicodice.

    Visual Basic perfetto per questo tipo di programmazione, che costituisce lamaggior parte dellosvilupposoftwarenelleconomiaodierna.

  • PERCHIPENSATOQUESTOLIBRO

    Questo librostatoscrittoperaiutaregli sviluppatoriconesperienzanellapprendimentodiVisualBasic 2010. Fornisce informazioni sulle pi comuni attivit di programmazione e sui concettifondamentaliacolorochehannoappenainiziatolatransizionedaversioniprecedentieacolorochehannoutilizzatoVisualBasicperunpoditempoehannobisognodiacquisireunacomprensionepiprofonda.

    Il librooffreunampiapresentazionedeiconcettidiVisualBasic,ma .NETFramework talmenteampioedesauriente chenessun singolo libropudescriverlo tutto.Questo libro si concentra sulletecnologiechiavechesonopiimportantiperglisviluppatoriVisualBasic.Fornisceunaconoscenzasufficiente a lavorare in una qualsiasi di queste aree, sebbenegli sviluppatori possano scegliere diaggiungereallaloroconoscenzaleinformazioniottenutedaunaltrolibrodedicatointeramenteaunaspecificaareatecnologica.

  • COSANECESSARIOPERUSAREQUESTOLIBRO

    Anche se possibile creare applicazioni Visual Basic utilizzando gli strumenti basati su riga dicomando contenuti in .NET Framework, per ottenere il massimo da questo libro si consiglia diadoperareVisualStudio2010(edizionestandardosuperiore),cheinclude.NETFramework4.Sipuutilizzare Visual Basic Express Edition, ma in alcuni casi gli esercizi non funzioneranno perchalcunecapacitefunzionalitnonsonodisponibiliinquestaversionelimitata.Inoltre:

    necessariodisporredi.NETFramework4,cheinstallatoconqualsiasiversionediVisualStudio2010.

    AlcunicapitoliusanoSQLServer2008.possibileeseguireilcodicediesempioutilizzandoMicrosoftSQLExpress,fornitoassiemeaVisualStudio2010.

    Il Capitolo 7 fa riferimento agli strumenti Unit Test, che sono inclusi in Visual StudioProfessionalEditioneversionisuperiori.

    Diversi capitoli usano IIS (Internet Information Services). IIS fa parte di ogni sistemaoperativo rilasciato da Microsoft a partire da Windows XP, ma sui sistemi operativi pirecenti necessario eseguirlo come amministratore per poterlo utilizzare nel processo disviluppo.Inalternativa,sipusfruttareilserverdisviluppofornitoassiemeaVisualStudio2010.

    IlCapitolo18usaExpressionBlend3.0.BlenddisponibilecongliabbonamentiMSDNdilivellosuperiore,madovrebbeesserepossibilesfruttareunaversionediprovaperesplorarelefunzionalitdescritteinquestocapitolo.

    IlCapitolo24 esamina lo sviluppodiSharePoint. I serviziSharePoint sono forniti con leversionidiWindowsServer.LaversionecompletadiMicrosoftOfficeSharePointServerun prodotto che richiede una licenza, anche se gli abbonati a MSDN possono ottenerelaccessoaunserverdisviluppo.

    IlCapitolo25sioccupadiVisualStudioToolsperOffice.Cos,alfinedisfruttareiprodotticostruitisullasuitediOffice,necessariaunacopiadelprodottospecificato.

    LAppendiceDfausodiMSMQperlavorareconlecodedi transazioni.MSMQfornitoancheconWindows,manoninstallatoautomaticamente.

    LAppendiceEdescriveiservizionlineaccessibiliaglisviluppatoriMicrosoft.Azurehaunperiododiprova,percipossibilelavorarecongliesempiinquestocapitolo.

  • GLIARGOMENTITRATTATI

    Parte I, Costrutti del linguaggio e ambiente di sviluppo. I primi sette capitoli del libro siconcentrano sugli elementi principali del linguaggio e sugli strumenti di sviluppo utilizzati daglisviluppatoridiVisualBasic.Questaparte introduceVisualStudio2010,glioggetti, la sintassi e ildebug.

    Capitolo 1, Visual Studio 2010. Inizia con lambiente in cui si lavorer con Visual Basic 10.QuestocapitoloesaminailnuovoambientedisviluppoVisualStudiobasatosuWPF.IntroducendounsempliceprogettoWindowsFormsedescrivendofunzionalitchiavecomeildebugger,ilcapitoloaiuterillettoreaprepararsieadacquisiredimestichezzaconquestopotenteambiente.

    Capitolo 2, Oggetti e Visual Basic. Questo il primo dei tre capitoli che esplorano laprogrammazioneorientataaglioggettieilruolodi.NETFrameworkinVisualBasic.Questocapitolointroduce i principi fondamentali degli oggetti, i tipi di dati, la conversione dei tipi, i tipi diriferimentoelasintassichiavechecostituisceilnucleodiVisualBasic.

    Capitolo3,Oggettipersonalizzati.Questocapitolodescrive lacreazionedeglioggetti e spiegacomefunzionainVisualBasic.Iniziandoconlereditariet,sicreerannoclassisemplicieastratteesiimpareracreareclassibasedacuipossibilederivarealtreclassi.Questocapitolometteinpraticala teoria dello sviluppo orientato agli oggetti. Descrive i quattro concetti alla base dellaprogrammazione orientata agli oggetti (incapsulamento, astrazione, ereditariet e polimorfismo) emostracomequesticoncettipossanoessereapplicatidurantelaprogettazioneelosviluppopercreareapplicazioniefficaciorientateaglioggetti.

    Capitolo 4, Il CLR (Common Language Runtime). Questo capitolo esamina il nucleo dellapiattaforma .NET: il CLR (CommonLanguageRuntime). Il CLR gestisce lesecuzione del codicecompilato per la piattaforma .NET. Il capitolo parla di controllo delle versioni e distribuzione,gestionedellamemoria, integrazione tra i linguaggi,metadatie ILDisassembler. Introduceanche inamespace e la loro struttura gerarchica. Fornisce una spiegazione dei namespace e alcuni esempicomuni.Inoltre,descriveinamespacepersonalizzatiemostracomeimportareinamespaceesistentieassegnare alias allinterno dei progetti. Il capitolo esamina anche il namespace My disponibile inVisualBasic.

    Capitolo 5, Programmazione dichiarativa con Visual Basic. Lintroduzione di WindowsPresentation Foundation, WindowsWorkflow (WF) e Silverlight ha portato una nuova sintassi a.NET:XAML.XMLApplicationMarkupLanguagefondamentalidelTestDrivenDevelopmentilnucleo di un nuovo modello di programmazione dichiarativa. Utilizzando questo modello glisviluppatori descrivono ci che vogliono, per esempio una finestra. Il codice che implementa lacreazioneditalefinestraestrattodallarichiesta.Comeosservato,XAMLunasintassicheattivamoltenuovefunzionalit.QuestocapitolointroduceglielementidibasecomunidellasintassiXAMLperoffrireunabaseaglialtricapitolichesfruttanoquestasintassi.

    Capitolo6,Gestionedelleeccezioniedebug.Questocapitolospiegacomegestireglierrorieildebug in Visual Basic 2010 descrivendo il gestore delle eccezioni CLR e la strutturaTry...Catch...Finally.Parlaanchedeglierroriedellaregistrazionedelleanalisi.Inoltre,mostracomeutilizzarequestimetodiperottenerecommentiesuggerimentisulmodoincuiilprogrammastafunzionando.

  • Capitolo7,TestDrivenDevelopment.QuestocapitolointroduceiconcettifondamentalidelTestDrivenDevelopment(TDD)conVisualStudio2010elostrumentoUnitTest.

    ParteII,Oggettidibusinesseaccessoaidati.Isuccessivisettecapitoli,dalCapitolo8finoalCapitolo14,esaminanolestrutturecomuniutilizzatepercontenereidatieaccedervi.Sonodescrittigli elementi del framework come gli array e le collection,XML, laccesso ai database e i serviziWCF(WindowsCommunicationFoundation).Questi capitoli si concentrano sulla raccoltadeidatiutilizzatiallinternodelleapplicazioni.

    Capitolo8,Array,collectionegenerics.Questocapitolopresentagliarrayelecollectioncomepunto di partenza per avere una serie di elementi correlati. Poi espande queste strutture di baseesplorando i generics. Introdotti con laversione2.0di .NETFramework, i generics consentonodiutilizzare collection strongly typed. Una delle nuove e importanti funzionalit associate a .NETFramework4lestensionedelsupportogenericperincluderelacovarianza.

    Capitolo9,UtilizzareXMLconVisualBasic.Questocapitolopresentalefunzionalitdel.NETFramework che semplificano la generazione e la manipolazione di XML. Descrive i namespacerelativiaXMLin .NETFrameworkedesaminaindettagliounsottoinsiemedelleclassiespostedaquesti namespace. Questo capitolo menziona brevemente anche alcune tecnologie che utilizzanoXML,inparticolareADO.NETeSQLServer. Infine,spiegaindettagliocomeutilizzareLINQperXML.

    Capitolo10,ADO.NETeLINQ.QuestocapitolosiconcentrasucichenecessariosaperedelmodelloaoggettidiADO.NETpercostruireapplicazionieoggetti flessibili,velocie scalabili cheaccedanoaidati.SiparladellevoluzionediADOinADO.NETedeiprincipalioggettiinADO.NETchenecessarioconoscereperconsentirealleapplicazioni.NETdiaccedereaidati.Inoltre,questocapitolo approfondisce LINQ to SQL. LINQ offre la possibilit di accedere facilmente ai datisottostanti; fondamentalmente un livello sopra ADO. NET. Microsoft ha fornito LINQ comelightweightfacadechefornisceuninterfacciastronglytypedversogliarchivididatisottostanti.

    Capitolo11,AccessoaidaticonEntityFramework.UnodeiprincipalimiglioramentirilasciaticonVisual Studio 2010 EF (Entity Framework).EF rappresenta limplementazioneMicrosoft diuno strumento ERM (Entity Relationship Modeling). Utilizzando EF gli sviluppatori possonogenerareclassiperrappresentarelestrutturedatidefiniteallinternodiSQLServeresfruttarequestioggettinelleloroapplicazioni.

    Capitolo12,LavorareconSQLServer.QuestocapitolospiegacomeutilizzareSQLServer2008con le applicazioni .NET. SQL Server fornisce una forte connessione alle applicazioni e questocapitolomostracomeutilizzareefficacementequestopotentedatabase.

    Capitolo 13, Servizi (XML/WCF). Questo capitolo esamina il modo pi recente di generarecomponenti orientati ai servizi che consentono di realizzare comunicazioni basate su standardattraversonumerosiprotocolli.WCFlarispostapirecentediMicrosoftperlecomunicazionideicomponenti allinterno e allesterno dellimpresa.Questo capitolo descrive anche la creazione e ilconsumo deiWeb serviceXML. Sono descritte le classi astratte fornite dal CLR per impostare eusareiWebservice,comepurealcunedelletecnologiechelisupportano.Sonodescrittianchealcunisvantaggilegatiallutilizzodellearchitetturedistribuite.

    ParteIII,ApplicazioniSmartClient. I successiviseicapitoli,dalCapitolo15 finoalCapitolo20, si concentrano sulla creazione di applicazioni client. Iniziando dal modello di applicazione

  • Windows Forms, introdotto con .NET 1.0, questi capitoli passano attraverso la migrazione aWindowsPresentationFoundationeintroduconoilmotorediprogettazioneBlendeSilverlight.

    Capitolo 14, Windows Forms. Questo capitolo esamina Windows Forms, concentrandosiprincipalmentesuiformeicontrolliincorporati.SpiegacosacdinuovoecosacambiatorispettoalleversioniprecedentidiVisualBasic;inoltredescriveilnamespaceSystem.Windows.Forms.

    Capitolo15,WindowsFormsavanzato.Questocapitoloanalizzaalcunedelle funzionalitpiavanzatedisponibiliquandosicreanoapplicazioniWindowsForms.

    Capitolo16, User control cheunisconoWPFeWindowsForms.Una delle best practice percreareapplicazioniclientWindowssuggeriscediusaregliusercontrol.Gliusercontrolconsentonodi incapsulare elementi dellinterfaccia utente correlati. Inoltre, questi controlli diventanofondamentaliperlamigrazionedaWindowsFormsaWPF.PoichmolteorganizzazionihannofattoinvestimentisignificativiinWindowsFormsenonsonoancorapronteapassarecompletamenteallenuovatecnologia,MicrosofthafornitounsupportosignificativoperintegrareWPFnelleapplicazioniWindowsForms,comepurelacapacitdiportareicomponentiWindowsFormsinunapplicazioneWPF.

    Capitolo 17, Applicazioni desktop WPF. Una tecnologia introdotta in .NET 3.0, WindowsPresentation Foundation, offre unmeccanismo alternativo per creare applicazioni desktop. QuestocapitolomostrainchemodoWPFfornisceunlivellodipresentazionepifluidoepiricco.

    Capitolo18,ExpressionBlend3.InconcomitanzaconilrilasciodiWPF,MicrosofthaintrodottounnuovopacchettodistrumentichiamatoExpressionStudio.Questistrumentisonodestinatiallacostruzione di ricche interfacce utente basate suXAML.Blend (incluso in Expression Studio), inparticolare, hadimostratodi esserepreziosoper laprogettazionedi interfacceutenteWPF.Questocapitolo presenta Expression Blend, che fornisce un potente set di strumenti per progettareapplicazionielavorareconXAML.

    Capitolo 19, Silverlight. Questo capitolo esamina limpiego pi recente di XAML per lacostruzione di interfacce utente: Silverlight. Silverlight fornisce una soluzione indipendente dallapiattaforma per lo sviluppo di applicazioni client basate su .NET. Silverlight consente aglisviluppatori di utilizzare il markup XAML e rende lesperienza dellutente finale pi fluida nelbrowserosuldesktop.

    ParteIV,ApplicazioniInternet. I successivicinquecapitoli,dalCapitolo20alCapitolo24,siconcentrano sulla costruzione di applicazioni per il Web. Sfruttando Silverlight, questi capitoliintroduconoASP.NETefunzionalitqualiAJAXeMVC,incluselesoluzionicompletamentebasatesuInternet;infineintroduconoSharePoint.

    Capitolo20,Silverlighteservizi.UnavoltaintrodottoSilverlightecicheessopufareperleapplicazioniclient,questocapitoloesaminasialhostingdiSilverlightallinternodiunWebsitesiailcollegamentoaWebserviceperforniredatioperativi.

    Capitolo21,LavorareconASP.NET.QuestocapitoloanalizzaindettagliolenozionidibasediASP.NET. Descrive la costruzione di applicazioni Web via Visual Studio e include discussionisullapplicazionegeneraleeiframeworkdipagina.

    Capitolo22, Funzionalit avanzatediASP.NET.Questo capitolo esamina alcune funzionalitavanzatediASP.NET,concentrandosiinparticolaresuAJAX.Alcuniesempidiargomentiaffrontati

  • inquestepaginesonoilposttrapagine,lepaginemaster,lesplorazionedelsito,lapersonalizzazioneecosvia.

    Capitolo 23, ASP.NET MVC. Visual Studio 2010 introduce il modello MVC (Model-View-Controller) perASP.NET per lo sviluppomainstream.Questomodello fornisce un framework pistrutturatoperlosviluppodiapplicazioniWeb.Ilcapitoloevidenziaivantaggi legatiallutilizzoditalemodelloperinuoviprogettiASP.NET.

    Capitolo 24, Sviluppo con SharePoint 2010. SharePoint, che comprende numerosi servizi etecnologie,ilprodottoMicrosoftchecrescepirapidamente.QuestocapitolospiegainchemodoglisviluppatoriVisualBasicpossonopersonalizzareesfruttaretalestrumentoversatileperlhostingdisoluzionipersonalizzate.

    ParteV,Librerieeargomentispecializzati.Gliultimi10capitoli,dalCapitolo25alCapitolo34, si concentrano su un insieme disparato di argomenti specializzati. Questi argomenti fannoriferimento a specifiche librerie .NET che probabilmente interessano agli sviluppatori che creanonuovesoluzioniemodificanoquelleesistenti.

    Capitolo 25, Visual Studio Tools perMicrosoft Office. Questo capitolo esamina lutilizzo diVisualBasicperinteragireconleapplicazionidiMicrosoftOffice.

    Capitolo26,WindowsWorkflowFoundation.Questo capitolo dedicato allimplementazionedelworkflowappenaaggiornato.LenuovefunzionalitintrodotteconVisualStudio2010agevolanolintegrazionedelworkflownelleapplicazioni.WindowsWorkflowFoundationstatointrodottoin.NET Framework 3.0,ma la nuova versione si differenzia notevolmente dalla logica originale (laspiegazionedelworkfloworiginaletrattatanellAppendiceD).

    Capitolo27,Localizzazione.Questocapitoloaffrontaalcuniargomentiimportantidaconsideraredurante la creazione di applicazioni usate in tutto il mondo. Esamina da vicino il namespaceSystem.Globalizationetuttocicheoffrealleapplicazioni.

    Capitolo 28, COM-Interop. Questo capitolo si occupa di COM e dellinteroperabilit deicomponenti.NET.Descriveinoltreglistrumenticheaiutanoacollegareleduetecnologie.

    Capitolo 29, Programmazione di rete. Questo capitolo dedicato al lavoro con alcuni deiprotocolli di rete disponibili nello sviluppo e spiega come incorporare una rete pi ampia nellefunzionalitdelleapplicazioni.

    Capitolo 30, Application services. Questo capitolo mostra come Visual Basic pu essereutilizzato per produrre servizi Windows. Tra gli argomenti trattati: la creazione, linstallazione,lesecuzioneeildebugdeiserviziWindows.

    Capitolo 31, Assembly e reflection. Questo capitolo esamina gli assembly e il loro utilizzoallinternodelCLR.Descrivelastrutturadiunassembly,ilsuocontenutoeleinformazioniinessoincluse. Inoltre esamina ilmanifestdellassemblye il suo ruolonelladistribuzione, e spiegacomeutilizzareiserviziremoti.Ilcapitolodescrivelarchitetturadibasedelcontrolloremotoecostruisceunserverdibaseeunclientcheutilizzaunoggettosingletonperrispondereallerichiestedeiclientallivello operativo. Il capitolo spiega come utilizzare la serializzazione per trasmettere oggetti picomplessidalserveralclientecomeadoperareilcontestodichiamataperpassaredatiaggiuntividalclientalserverassiemeaognichiamata,senzadovermodificareilmodellodioggetto.

  • Capitolo32,Sicurezza in .NETFramework.Questo capitolo esamina funzionalit e strumentiaggiuntivi relativi alla sicurezza forniti da .NET.SonodescrittiCaspol.exe ePermview.exe, cheaiutano a stabilire e mantenere i criteri di protezione. descritto anche il namespaceSystem.Security.Permissions, incluso il modo in cui in relazione con la gestione delleautorizzazioni. Infine, il capitolo esamina il namespace System. Security.Cryptography edescriveilcodicechedimostralesuecapacit.

    Capitolo 33, Programmazione in parallelo con task e thread. Questo capitolo esplora ilthreading e spiega come i vari oggetti in .NET Framework consentano ai loro consumatori disviluppare applicazionimultithread. Il capitolo insegna a creare i thread,mostra comemetterli inrelazionecon iprocessi e spiega ledifferenze tra ilmultitaskinge ilmultithreading.VisualStudio2010introduceunframeworkcompletamentenuovodielaborazioneparallelachevienedescrittoinquestocapitolo.

    Capitolo 34, Distribuzione. Questo capitolo esamina da vicino le opzioni di distribuzionedisponibiliperWindowsFormseWebForms,incluselefunzionalitdidistribuzioneClickOnceelacreazionedifile.msi.

    AppendiceA,IlcompilatoreVisualBasic.Questaappendicepresentavbc.exe,ilcompilatorediVisualBasicelefunzionalitcheoffre.

    AppendiceB, VisualBasicPowerPacks.Questa appendicedescriveVisualBasicPowerPackTools, originariamente rilasciato come pacchetto di supporto per gli sviluppatori che gestisconoapplicazioniVisualBasic 6.0 tradizionali o che sono alla ricerca di funzionalit simili a quelle diVisualBasic6.QuestistrumentisonostatiintegratiinVisualStudioeaiutanoainiziareilprocessoditransizioneallaversionecorrentediVisualBasic.

    Appendice C, Specifiche di Workflow 2008. Windows Workflow Foundation, introdotto con.NET3.0esupportatodaVisualStudio2008,statocompletamenterifattoconVisualStudio2010.Tuttavia, la descrizione dei servizi workflow originali stata spostata in questa appendice perconsentireaglisviluppatoridiconsultarlaperlesoluzioniesistenti.

    AppendiceD,EnterpriseServices.Nelcorsodeltempo,conilnuovosupportoperletransazionielefunzionalitcorrelate,leinformazionicontenuteinquestaappendice,cheinprecedenzaavevanouncapitolotuttoloro,sonodiventatemenoapplicabili.Leinformazionisonostatespostateinquestaappendice per supportare coloro che hanno implementazioni esistenti che fanno riferimento aEnterprise Services. Questo capitolo analizza i servizi dei componenti .NET, in particolarelelaborazionedelletransazionielecodedicomponenti.

    AppendiceE, Programmazione per il cloud. Questo capitolo esamina diversi nuovi ambientibasati su Internet introdotti daMicrosoft e spiega come influenzano lo sviluppatoreVisual Basic.Questo capitolo aiuter chi stamantenendo dati o sviluppando applicazioni che opereranno in thecloudacapirequestonuovoparadigmadiapplicazione.

  • CONVENZIONI

    Per aiutarvi a ottenere ilmassimodal testo e a tenere traccia di ci che sta accadendo, sono stateutilizzatealcuneconvenzioniintuttoillibro.

    I riquadri come questo contengono informazioni importanti, da non dimenticare,strettamentecorrelatealtestocircostante.

    Consigli, suggerimenti, trucchi relativialladiscussionecorrentesonorappresentatiinquestomodo.

    Questisonoglistiliusatineltesto:Itermininuovieleparoleimportanti,laprimavoltacheappaiono,sonoincorsivo.Lecombinazioniditastisonoscrittecos:Ctrl+A.Inomideifile,gliURLeilcodiceallinternodeltestosonorappresentatiinquestomodo:

    persistence.properties.Ilcodicerappresentatoinduemodidiversi:

    Lamaggiorpartedelcodicescrittoincaratteremonospaziatosenzaalcunaevidenziazione.

    Il grassetto usato per enfatizzare il codice particolarmente importante nel contesto attuale o perevidenziarelemodificheapportateaunframmentodicodiceprecedente.

  • CODICESORGENTE

    Gli esempi descritti in questo libro possono essere scritti manualmente riga per riga oppure sipossonoutilizzareifiledicodicesorgentefornitiassiemeallibro.Tuttoilcodicesorgenteutilizzatoin questo libro pu essere scaricato dal sito www.hoeplieditore.it/4563/1 e dahttp://www.wrox.com.UnavoltagiuntisulsitodiWroxsufficienteindividuareiltitolodellibronelsito(utilizzandolacaselladi ricercaounodeglielenchidi titoli)efareclicsul linkDownloadCode che appare nella pagina relativa ai dettagli del libro. Il codice incluso nel sito Web contrassegnatodalliconaseguente:

    Ilistatiriportanoilnomedelfileneltitolo.Sesitrattasolodiunframmentodicodice,ilnomedelfileappareinunanotacomequestapostaallafinedelcodice:

    FrammentodicodicedanomeFile

    Poichmolti librihanno titoli simili,purisultarepisempliceeseguire la ricercaperISBN;ilcodiceISBNdellaversioneoriginaleininglesediquestolibro978-0-470-50224-2.

    Unavoltascaricatoilcodice,nonbisognafarealtrochescompattarloconunostrumentoapposito.Inalternativa si pu andare alla pagina di download principale(www.wrox.com/dynamic/books/download.aspx)pervedereilcodicedisponibileperquestoepertuttiglialtrilibridiWrox.

  • ERRATACORRIGE

    statofattoognisforzopergarantire lassenzadierrorinel testoenelcodice.Tuttavia,nessunoperfettoeglierroriaccadono.Chitrovaunerrorenellibro,peresempiounerrorediortografiaounframmento di codice difettoso, pu inviare un feedback alleditore; ci far risparmiare agli altrilettori ore di frustrazione e allo stesso tempo aiuter a fornire informazioni di qualit ancorasuperiore.

    Per trovare la pagina dedicata agli errata corrige di questo libro sufficiente visitare il sitowww.wrox.com,individuareiltitoloutilizzandolacaselladiricercaounodeglielenchidititoli,aprirelapaginachecontieneidettaglidellibroefareclicsullinkBookErrata.Lapaginariportatuttiglierratacorrigeriscontrati inquesto libro.Unelencocompletodei libri,compresi icollegamentiaglierratacorrigediognilibro,pubblicatosuwww.wrox.com/misc-pages/booklist.shtml.

    Chi non trova il proprio errore nella pagina Book Errata, si colleghi awww.wrox.com/contact/techsupport.shtmlecompletiilmoduloperinviareunadescrizionedelnuovoerroreindividuato.Leditorecontrollerleinformazionie,nelcaso,pubblicherunmessaggionellapaginadeglierratacorrigedellibroecorreggerilproblemanelleedizionisuccessive.

  • P2P.WROX.COM

    Per contattare lautore e partecipare alle discussioni si possono utilizzare i forum P2P dip2p.wrox.com.IforumsonounsistemabasatosulWebcheconsentedipubblicaremessaggisuilibriWroxelerelativetecnologieediinteragireconglialtrilettorieutenti.disponibileunafunzionalitdisottoscrizionecheconsenteailettoridiricevereautomaticamenteinuovimessaggipubblicatisuiforumviapostaelettronica.Partecipanoaquestiforumgliautori,iredattorieglialtriespertiWroxdelsettore,comepureglialtrilettori.

    Sulsitohttp://p2p.wrox.comsitrovanosvariatiforumchefornisconounaiutononsolodurantelaletturadiquesto libro,maanchenella fasedi sviluppodelleapplicazioni.Perpartecipareai forumbastasvolgereiseguentipassaggi:1.Accederealsitop2p.wrox.comefareclicsullinkRegister.2.LeggerelecondizionidusoefareclicsuAgree.3. Fornireleinformazionirichiesteperaderire,comepureeventualiinformazionifacoltative,

    quindifareclicsuSubmit.4.Illettorericeverunmessaggiodipostaelettronicacontenenteleinformazionichespiegano

    comeverificareilproprioaccountecompletareilprocessodiadesione.

    possibileleggereimessaggipubblicatineiforumsenzapartecipareaP2P,maperinviareiproprimessagginecessarioregistrarsi.

    Unavolta registrato, il lettorepotrpubblicarenuovimessaggie rispondereaimessaggideglialtriutentideiforum.possibileleggereimessaggiinqualsiasimomentosulWeb.Chidesideraricevereviapostaelettronica inuovimessaggidiunparticolare forumpufareclicsulliconaSubscribe tothisForumnellalistadeiforum.

    PerulterioriinformazionisuWroxP2P,siconsultinoleFAQdiP2PcherispondonoalledomandesucomefunzionailsoftwaredelforumemoltealtredomandecomunispecificheaP2PeailibriWrox.PerleggereledomandefrequentibastafareclicsullinkFAQsuunapaginaqualsiasidiP2P.

  • PARTEI

    Costruttidellinguaggioeambientedisviluppo

    CAPITOLO1:VisualStudio2010

    CAPITOLO2:GlioggettieVisualBasic

    CAPITOLO3:Oggettipersonalizzati

    CAPITOLO4:IlCLR(CommonLanguageRuntime)

    CAPITOLO5:LaprogrammazionedichiarativaconVisualBasic

    CAPITOLO6:Gestionedelleeccezioniedebug

    CAPITOLO7:TestDrivenDevelopment

  • 1VisualStudio2010CONTENUTO:

    LeversionidiVisualStudio

    IterminichiavediVisualBasic

    Lambienteruntime

    CreareunWindowsFormdiriferimentoinVisualBasic

    Templatediprogetto

    Proprietdelprogetto:applicazione,compilazioneedebug

    Impostarelepropriet

    IntelliSense,espansionedelcodiceesnippetdicodice

    Debug

    Registrareeutilizzarelemacro

    ClassDesigner

    TeamFoundationServer(TeamExplorer)

    possibile lavorareconVisualBasicsenzaVisualStudio; lAppendiceAspiegacomeutilizzare ilcompilatoreVisualBasicdallarigadicomando.Inpratica,per,lamaggiorpartedeglisviluppatoriconsidera quasi inseparabili i due elementi; chi non dispone di una versione di Visual Studio costrettoautilizzare la rigadicomandopercreare i filediprogettoamano,effettuarechiamateaicompilatori associati e configuraremanualmente gli strumenti necessari per creare lapplicazione.BenchVisualBasicsupportituttociallostessolivellodiC#,F#,C++edialtrilinguaggi.NET,unveroprofessionistadiVisualBasicadottaunapprocciocompletamentediverso.

    VisualBasicdeveilsuosuccessoallasuamaggioreproduttivitrispettoadaltrilinguaggidurantelacreazionediapplicazionibusiness.VisualStudio2010aumentalaproduttiviteoffreassistenzaneldebugdelleapplicazioni,percirappresentaunostrumentonaturaleperglisviluppatori.

    DiconseguenzalanuovaedizionediquestolibroiniziaintroducendoVisualStudio2010eilmodoincui si costruiscono e si gestiscono le applicazioni Visual Basic. Lobiettivo di questo capitolo garantire una serie di conoscenze di base comuni relative alle attivit di creazione e debug delleapplicazioniinVisualStudio2010.VisualStudio2010sarutilizzatointuttoillibropercrearenuovesoluzioni. bene ricordare che, bench si tratti di un capitolo iniziale, questa parte non unasempliceintroduzione.IlprimocapitolointroduceglielementichiavedellavoroinVisualStudio,mavaancheoltre.probabilecheillettoreritornisuccessivamenteaquestocapitoloperconsultaregliargomenti avanzati inizialmente sorvolati. Visual Studio uno strumento potente e, a volte,complessolacuipadronanzarichiedepidiunariletturadiquestocapitolo.

  • QuandofurilasciatoVisualStudio2005,MicrosoftsidilungsullediverseversionidiVisualStudiodisponibili.Laversionepieconomica,attualmentedistribuitagratuitamente,VisualBasicExpressEdition.QuestostrumentoconsentedicreareconVisualBasicsoloapplicazionidesktop.LaversionecompagnadedicataallosviluppoWebsichiamaVisualWebDeveloperExpresseconsentedicreareapplicazioniASP.NET.LaversionepicompletaoffertadaMicrosoftVisualStudioUltimate.Leversionidifasciaalta,valeadireProfessional,PremiumeUltimate,sonodisponibilicomepartediunabbonamentoMSDNeognunadiesseestendeulteriormentelefunzionalitdiVisualStudio2010oltre lIDE (Integrated Development Environment) di base per contribuire a migliorare laprogettazione,iltestingelacollaborazionetraglisviluppatori.

    Naturalmente lobiettivo di questo capitolo mostrare in che modo Visual Studio consente diutilizzare Visual Basic per creare applicazioni che rispondono ai principali obiettivi business:migliore,piveloceepiconveniente.AtalfinesarannoesaminatelefunzionalitdiVisualStudioa cominciare da quelle che fanno parte della versioneVisual Basic 2010 Express Edition fino adarrivarealpacchettocompletoVisualStudioTeamSuite.

    Questocapitolooffreunapanoramica sullenumerose funzionalitdiVisualStudio2010.ContieneancheunabreveintroduzionesullefunzionalitdisponibiliconleversionipiricchediVisualStudio.Gli sviluppatori esperti probabilmente sorvoleranno gran parte di queste informazioni; il consigliocomunque di esaminare almeno le nuove funzionalit di debug cronologicodisponibili inVisualStudio 2010 Ultimate. Lobiettivo dimostrare in che modo Visual Studio riesce a rendere glisviluppatoripiproduttiviedisuccesso.

  • VISUALSTUDIO2010:DAEXPRESSAULTIMATE

    Perchinonhafamiliaritconiprincipalielementidisviluppo.NETutilericordarelesistenzadiCLR(CommonLanguageRuntime),.NETFramework,deivaricompilatoridilinguaggioediVisualStudio. Ognuno di questi elementi svolge un ruolo importante, per esempio il CLR (descritto nelCapitolo 4) gestisce lesecuzione del codice sulla piattaforma .NET. Perci il codice pu essereprogettatoperfunzionaresuunaversionespecificadiquestoambienteruntime.

    .NETFramework fornisceuna seriedi classi chegli sviluppatori usanoabilmentenei linguaggidiimplementazione.Questoframework,olibreriadiclassi,progettatoperfunzionaresuunaspecificaversione minima del CLR. Visual Studio fa riferimento a questa libreria e ai compilatori dilinguaggio.VisualStudiopermettedicostruireapplicazionidestinateaunaopiversionidiquellochegenericamentevienechiamato.NET.

    Inalcunicasi,CLRe .NETFrameworksono identici;peresempio, .NETFramework1.0operasuCLR1.0. Inaltri casi,peresempio il compilatoreVisualBasicversione10, .NETFrameworkpuavereunaversionepirecentechepuntaaunavecchiaversionediCLR.

    GlistessiconcettivalgonoinVisualStudio.VisualStudio2003eraincentratosu.NET1.1,mentrelaversioneprecedentediVisualStudio.NET(2002)eraincentratasu.NET1.0.Originariamenteogniversione di Visual Studio era ottimizzata per una particolare versione di .NET. In modo analogoVisual Studio 2005 era ottimizzato per .NET 2.0; poi alla fine arriv leccezione rappresentata da.NETFramework3.0,che introdusseunnuovoframeworkcheerasupportatodallastessaversione2.0diCLR,machenondisponevadiunanuovaversionediVisualStudio.

    FortunatamenteMicrosoft scelse di non cambiareVisual Basic e ASP.NET per la versione 3.0 di.NETFramework.Tuttaviachiosservavaglielementidi.NETFramework3.0,peresempioWindowsPresentation Foundation,WindowsCommunication Foundation eWindowsWorkflow Foundation,scoprivachetalielementidovevanoessereapprontatialdifuoridiVisualStudio.Perciancheseeraseparato daVisualBasic, dalCLR e dallo sviluppo .NET, in realtVisual Studio era strettamentelegatoaciascunodiquestielementi.

    ConVisualStudio2008Microsofthaallentatoquestolegame,fornendounsupportorobustochehapermessoaglisviluppatoridiadoperareunaqualunquedelletrediverseversionidi.NETFramework.VisualStudio2010procedenellastessadirezione,consentendodiprogettareapplicazioniingradodifunzionaresu.NET2.0,.NET3.0,.NET3.5o.NET4.

    Tuttavia, come si vedr, questo supporto non implica cheVisualStudio 2010non sia strettamentelegatoaunaversionespecificadiognicompilatore.Inrealtilnuovosupportodiapplicazionimirateai framework progettato per supportare un ambiente runtime, non un ambiente in fase dicompilazione. Questo dettaglio importante perch i progetti delle precedenti versioni di VisualStudio convertiti nel formatoVisual Studio 2010 non possono poi essere riaperti da una versioneprecedente.

    LaragionecheilmotoredicompilazionesottostanteutilizzatodaVisualStudio2010accettanuovesintassi e funzionalit del linguaggio che le precedenti versioni diVisual Studio non riconoscono.PertantosesispostainunaversioneprecedentediVisualStudioilcodicesorgentescrittoinVisualStudio2010moltoprobabilechelacompilazionenonriesca.possibilespostaremanualmenteunprogetto tra leversionidiVisualStudio indiversimodi,nessunodeiqualipersupportato.AtalpropositoBillSheldon,unodegliautoridiquestolibro,hapubblicatonellagostodel2007unarticolo

  • suunblogchedescrive lasuaesperienzaconVisualStudio2008. Ilpost,chesi intitolaWorkingwithBothVS2005andVS2008B2ontheSameProject,puancoraessereapplicatodacolorochelavorano con Visual Studio 2010: http://nerdnotes.net/blog/default,date,2007-08-29.aspx.

    Il supporto multi target di Visual Studio 2010 garantisce che lapplicazione funzioner su unaversionespecificadelframework.PercipossibileutilizzareVisualStudio2010ancheselapropriaaziendanonsupporta.NET3.0,.NET3.5o.NET4.Ilcompilatoregenerailcodicebytebasatosullasintassidellinguaggioe,alsuointerno,questocodicebyteindipendentedaqualunqueversione.IproblemipossonopresentarsiquandosifariferimentoaunaopiclassichenonfannopartediunadeterminataversionediCLR.Perciquandosipuntaaunavecchiaversionedi.NET,VisualStudiogestisce i riferimenti per garantire che lapplicazionenon faccia riferimento a file di unadi quellealtre versioni del framework. Ilmulti target ci che consente di distribuire il software inmodosicurosenzacheiclientidebbanoscaricarecomponentidiframeworkaggiuntivichenonservono.

    Tenendocontodiquesteregoledibase,qualiversionidiVisualStudio2010sonodisponibiliequalisonoleprincipalidifferenze?Comegiaccennato,VisualBasic2010Expressrappresentail livellopibassointerminidiprezzoedicaratteristiche.AlsuofiancositrovaVisual,WebDeveloper2010Express Edition, dedicato a quegli sviluppatori che creano applicazioniWeb anzich applicazionidesktop.Questi due strumenti sono separati,ma entrambi supportano lo sviluppodi diversi tipi diapplicazioniVisualBasic,edentrambisonogratuiti.Sinoti,tuttavia,chenessunadelledueversioniestendibile; si tratta di strumenti introduttivi e la licenza diMicrosoft impedisce ai rivenditori diestenderequestistrumenticonmigliorielegateallaproduttivit.

    TuttaviaentrambeleversioniExpressEditionsonodistribuiteinsiemeaduecomponentiaggiuntividescrittipiavanti:MSDNExpressEditioneSQLServer2008ExpressEdition.MSDNrappresentaovviamenteMicrosoftDeveloperNetwork,chehamessoonlinelamaggiorpartedelsuocontenuto. la fonte non solo della documentazione dei linguaggi di base relativa aVisualBasic,ma anchedegliarticolicheriguardanoquasituttiiprodottiorientatiaglisviluppatoricheusanolatecnologiadiMicrosoft.InsiemealleversionicompletediVisualStudiodistribuitatuttalalibreriaMSDN,percigli sviluppatori hanno la possibilit di consultare il contenuto anche localmente. Gli strumentiExpressEdition,invece,dispongonodiunaversioneridottadeifiledelladocumentazione.

    Analogo al linguaggio e agli strumenti basati sulWeb,Microsoft ha anche un pacchetto ExpressEditiondiSQLServer.Talepacchettohaunastoria,nelsensochesostituisceilmotoredidatabaseMSDEcheeradisponibileconSQLServer2000.IlmotorediSQLServerExpressfornisceilmotoredatabasedibasediSQLServer2008.PerulterioriinformazionisuSQLServerExpresssivisitiilsitowww.microsoft.com/express/database. Si noti che disponibile unapplicazione gratuita digestionedatabasetramiteundownloadseparatodalsitodiMicrosoft.

    Quando si installa Visual Studio 2010, anche nel caso delle versioni Express Edition, si ha lapossibilitdi installarequestomotoredatabasedibase.Gli elementidi talemotorepossonoesseredistribuiti liberamente,quindi chi sta cercandouna seriedi funzionalitdatabasedibasebasate suADO.NET pu creare unapplicazione e distribuire il database SQL Server 2008 Express Editionsenzapreoccuparsidialcunalicenza.

    Tornandoalledifferenzetralevarieversioni,glistrumentiExpressEditionfornisconoicomponentidibasenecessaripercreareapplicazioniVisualBasic(WindowsoWeb)basatesullIDEdibase.La

  • Tabella1.1fornisceunabrevesintesidelleversionidisponibiliedescriveinchemodoognunadiesseestendelefunzionalitdiVisualStudio.

    TABELLA1.1 LeVersionidiVisualStudio.

    VERSIONE DESCRIZIONE

    Visual Basic2008ExpressEdition

    Questo linsieme di base delle funzionalit necessarie per creare applicazioniWindows.IncludelIDEconsupportocompletoperildebuglocaleeilsupportopercinquetipidiprogetto:WindowsFormsApplication,DynamicLinkLibrary,WPFApplication,WPFBrowserApplicationeConsoleApplication

    Visual WebDeveloper2008ExpressEdition

    Linsieme di base delle funzionalit necessarie per costruire applicazioni Web.SupportasiaVisualBasicsiaC#econsenteildebuglocaledelleapplicazioniWeb

    VisualStudio 2010StandardEdition

    Fornisce un ambiente di sviluppo combinato per i principali linguaggi di VisualStudio (J#, VB, C# e C++). Aggiunge lo strumento ObjectModeling e forniscesupportocombinatosiaperapplicazioniWindowssiaperapplicazioniWeb.InoltrefornisceunulterioresupportoperladistribuzionedelleapplicazionieunsupportoperMobileApplicationDevelopment,lintegrazioneconunostrumentodicontrollosorgenteemacroVisualStudio;inoltreestensibile

    VisualStudio 2010ProfessionalEdition

    Espande Visual Studio Standard Edition con lintegrazione aggiuntiva di SQLServereilsupportoperXSLT.IncludeancheilsupportoperVisualStudio2010TO(Visual Studio Tools for Office) che consente di creare applicazioni clientpersonalizzate (Word, Excel, Outlook e cos via) e applicazioni SharePointWorkflow. Questa versione consente di eseguire anche il debug remoto diapplicazioni Web e gli unit testing di tutti i progetti (questa versione supportaVSTOmalabbonamentoMSDNassociatononincludeunalicenzaperOffice)

    VisualStudio 2010PremiumEdition

    Questa versione supporta molte delle estensioni originariamente introdotte conquellocheun tempoerachiamatoTeamSuite.Questaversioneha funzionalitditest avanzate come Code Coverage e il supporto di test UI codificati. Includestrumentichesupportanolosviluppodidatabase,lagestionedellemodifiche,itestecosvia,comepurestrumentiperlanalisistaticaelemetrichedelcodice

    VisualStudio 2010UltimateEdition

    QuestaversioneincludetuttelefunzionalitdibasediVisualStudio2010PremiumEdition.Aesseaggiungeildebugcronologico,glistrumentiditestWebedicarico,e una variet di strumenti correlati chemigliorano lo sviluppo. Questa versione,comelaprecedente,stataprogettataperaiutareglisviluppatoriaessereproduttiviinunambientecollaborativocondiviso

    LeversioniExpresssonopensateperglistudentiepercolorocheprogrammanoperhobby,nontantoperch non consentono di creare applicazioni serie, quanto perch forniscono solo un supporto

  • limitatoallosviluppointeam,hannounestendibilitlimitataeoffronounambienteindipendente.GlistrumentiExpressEditionsonorivoltiaglisviluppatorichelavoranoinmodoindipendenteeoffronoun accesso completo alle funzionalit del linguaggio Visual Basic. Il capitolo inizia a lavorarenellIDE usando le funzionalit disponibili in questa versione, che sono essenzialmente ilminimocomun denominatore, quindi procede descrivendo le capacit non supportate da questo strumentogratuito.

    Coltempo,tuttavia,losviluppatorehabisognodiulterioristrumentieprogetti.quicheentranoingiocoleversionicompletediVisualStudio2010(Standard,Professional,PremiumeUltimate).Conun crescente livello di supporto per lo sviluppo in team, queste versioni ricche di funzionalitaggiungono un supporto alle macro e, cosa pi importante, uno strumento che supporta lObjectModeling.ComespiegatonelparagrafointitolatoDiagrammidelleclassi,VisualStudiopermettedicreare una rappresentazione grafica delle classi usate nella soluzione e poi di convertire larappresentazione in codice. Lo strumento, inoltre, supporta anche il cosiddetto round tripengineering.Inpraticalosviluppatorepunonsoltantoutilizzareiltemplategraficopergenerareilcodice,maancheprendere i filedioriginediunprogettoe rigenerareunaversioneaggiornatadeltemplategrafico:ovvero,pumodificaretaletemplatenelsuoformatograficoepoiaggiornareifilesorgenteassociati.

    ChiscegliediutilizzareVisualStudio2008ProfessionalounaversionesuperiorehaadisposizioneVSTO (VisualStudioTools forOffice), dedicatoprincipalmente agli sviluppatori business, ossia acoloro che lavorano in organizzazioni aziendali (comedipendenti o consulenti/appaltatori).Questostrumento fornisce agli utenti di Microsoft Office 2007 e 2010 la possibilit di estendere talistrumenti di lavoro per lufficio con funzionalit che assomigliano ad applicazioni. Molteorganizzazioni usanoMicrosoftOfficeper attivit che rasentano applicazioni personalizzate.Ci particolarmente vero per Microsoft Excel. VSTO fornisce template di progetto basati su questiprodotti di Microsoft Office che, per esempio, consentono a un foglio di calcolo di recuperareinformazioni da un database SQL Server invece che dal file system locale. Questi strumentiforniscono la capacit non solo di manipolare il recupero e il salvataggio dei dati, ma anche dipersonalizzare linterfaccia utente, compreso laccesso diretto al riquadro attivit e alle opzioni dipersonalizzazionedellabarradeglistrumentiallinternodeiprodottidiMicrosoftOffice;perulterioridettaglisiconsultiilCapitolo25.

    VisualStudio 2010PremiumeUltimate estendono le capacit dello sviluppatore oltre la semplicescrittura del codice. Questi strumenti sono usati per esaminare i difetti del codice, per gestirelambiente di distribuzione e per definire le relazioni tra le applicazioni.Le versioni di fascia altaoffrono strumenti che supportano la ripetizione dei processi legali allo sviluppo software e le bestpractice. Permettono di esaminare il codice sorgente per individuare difetti nascosti che, pur noncausandoilbloccodelprogramma,potrebberonasconderefallenellasicurezzaorenderedifficilelamanutenzioneeladistribuzionedellapplicazione.Cosapiimportante,lasuiteincludestrumentipercrearestrumentidiunittestingchetentanodiprovocareunbloccodelcodiceattraversodatiinseritiinmodoerratoocarichipesanti.

    Ladescrizione completa di tutte le funzionalit diVisualStudioUltimate richiederebbeun libro aparte,soprattuttosesiprendonoinconsiderazionetuttelefunzionalitdicollaborazioneintrodottedaTeam Foundation Server e la sua stretta integrazione con TeamBuild e SharePoint Server. TeamFoundationServernonsemplicementeunsostitutodiVisualSourceSafe,macostituiscelabaseper

  • un vero sviluppo guidato dai processi e include anche la documentazione che aiuta a formareunorganizzazionesuiduetemplatediprocessosupportatidaMicrosoft.

  • LEPAROLECHIAVEELASINTASSIDIVISUALBASIC

    GlisviluppatoricheinpassatohannoutilizzatoVisualBasichannogifamiliaritconmolteparolechiavedellinguaggioeconlasintassi.Tuttavianontuttiilettoririentranoinquestacategoria,perciquestoparagrafointroduttivoperchinonconosceVisualBasic.Moltedelleparolechiaveelencatenelglossariosarannoutilizzatenellapartesuccessivadelparagrafo.

    Anchesenonrappresentanoilfulcrodelcapitolo,concostanteparolechiaveutileunglossario.LaTabella1.2 riassumebrevemente lamaggior parte dei termini utilizzati nel paragrafo precedente efornisceunabrevedescrizionedellorosignificatoinVisualBasic.SitengapresentechedueterminicomunementeutilizzatiinrealtnonsonoparolechiavediVisualBasic;questeparolechiavesono:

    metodo.Unnomegenerico assegnato a una serie di comandi identificati da un nome. InVisualBasic,siaSubsiaFunctionsonotipidimetodi;

    istanza.Quandosicreaunaclasse, loggettorisultanteunistanzadelladefinizionedellaclasse.

    TABELLA1.2ParolechiavecomunidiVisualBasic.

    PAROLACHIAVE DESCRIZIONE

    Namespace Una collection di classi che forniscono funzionalit correlate. Per esempio, ilnamespaceSystem.Drawingcontieneleclassiassociateallagrafica

    Class La definizione di un oggetto. Include propriet (variabili) e metodi che possonoessereSuboFunction

    SubUn metodo che contiene un insieme di comandi, consente di trasferire dati sottoformadiparametrieforniscelambitointornoallevariabililocalieaicomandi,manonrestituiscealcunvalore

    FunctionUnmetodo che contiene un insieme di comandi, restituisce un valore, consente iltrasferimento dei dati sotto forma di parametri e fornisce lambito intorno allevariabililocalieaicomandi

    Return TerminalesecuzionedellaSuboFunctioncorrente.Inoltrerestituisceunvalorenelcasodellefunzioni

    Dim Dichiaraedefinisceunanuovavariabile

    New Crealistanzadiunoggetto

    Nothing utilizzatoperindicarecheunavariabilenonhaalcunvalore.Equivalealnullusatoinaltrilinguaggiedatabase

    Me Unriferimentoallistanzadelloggettoincuiinesecuzioneunmetodo

    Un tipo di applicazione basata su uninterfaccia utente a riga di comando. Leapplicazionidiquestotiposonousatecomunementepersempliciframediprova.Si

  • Console riferisceancheaunaclasse.NETFrameworkchegestiscelaccessodellafinestradicomandomediantelaqualeleapplicazionipossonoleggereescriveredatiditesto

    ModuleUn blocco di codice che non una classe, ma che pu contenere metodi Sub eFunction.utilizzatoquandoinmemoriaservesolounasingolacopiadelcodiceodeidati

    Anche se il fulcro di questo capitolo rappresentato da Visual Studio, questa introduzione farriferimentoadalcunielementidibasediVisualBasiccherichiedonounaspiegazione.In talmododurante la lettura sar facile comprendere gli esempi. Il Capitolo 4, per esempio, si occupa deinamespace,mailterminemenzionatoanchedaalcuniesempiintrodottiinquestocapitolo;percilasuadefinizioneappareinquestepagine.

    Iniziamoconnamespace.Durantelacreazionedi.NETglisviluppatorisireserocontochetentarediorganizzare tuttequesteclassi richiedevaunsistema.Unnamespaceunsistemaarbitrariocheglisviluppatori .NETutilizzanoper raggruppare classi contenenti funzionalit comuni.Unnamespacepuaverediversilivellidiraggruppamentoseparatidaunpunto(.).CosilnamespaceSystemlabaseperleclassichesonoutilizzateintutto.NET,mentreilnamespaceMicrosoft.VisualBasicutilizzatoperleclassinel.NETFrameworksottostantespecificheaVisualBasic.Alsuolivellopielementare, un namespace non implica n indica nulla per quanto riguarda le relazioni tra leimplementazioni delle classi in tale namespace; solo unmododi gestire sia la complessit delleclassipersonalizzatedellapplicazione,chepossonorappresentareuninsiemepiccoloogrande,sialemigliaiadiclassidi.NETFramework.Comeosservatoinprecedenza,inamespacesonodescrittiindettaglionelCapitolo4.

    LaparolachiavesuccessivaClass.ICapitoli2e3fornisconoidettaglisullasintassiorientataaglioggettiesulleparolechiavecorrelateaitipieaglioggetti,maunadefinizionedibasediquestaparolachiave necessaria subito. La parola chiave Class designa un insieme comune di dati e uncomportamentoallinternodellapplicazione.Laclasseladefinizionediunoggetto,propriocomeilcodice sorgente, una volta compilato, la definizione di unapplicazione. Quando eseguito daqualcuno, il codice considerato unistanza dellapplicazione. Allo stessomodo quando il codicecreaoistanziaunoggettodalladefinizionedellaclasse,loggettoconsideratounistanzadiquellaclasseounistanzadiquelloggetto.

    Lacreazionediunistanzadiunoggettoavvieneinduefasi.Primadi tuttoilcomandoNewdicealcompilatore di creare unistanza di quella classe. Il comando costringe il codice a chiamare eistanziareladefinizionedelloggetto.Inalcunicasipotrebbeesserenecessarioeseguireunmetodoeottenereunvalorediritorno,malamaggiorpartedellevoltesiutilizzailcomandoNewperassegnarequellistanzadioggettoaunavariabile.Unavariabileletteralmentequalcosachepucontenereunriferimentoassociatoaquellistanzadiclasse.

    Per dichiarare una variabile in Visual Basic si utilizza listruzione Dim. Dim labbreviazione didimensiona e deriva dallantico linguaggio Basic, lantenato di Visual Basic. In pratica si stadicendoalsistemadiallocareodimensionareunasezionedimemoriaperconservaredeidati.Comesar spiegato nei prossimi capitoli dedicati agli oggetti, listruzione Dim pu essere sostituita daunaltra parola chiave, comePublic oPrivate, che non solo dimensiona il nuovo valore,ma nelimitaanchelaccessibilit.OgnidichiarazionedivariabileusaunistruzioneDimsimileallesempio

  • seguente,chedichiaraunanuovavariabilechiamatawinForm:DimwinFormAsSystem.Windows.Forms.Form=NewSystem.Windows.Forms.Form()

    Nellesempio precedente il codice dichiara una nuova variabile(winForm) di tipoForm. A questavariabilevienepoiassegnataunistanzadelloggettoForm.LesipotrebbeassegnareanchelistanzaesistentediunoggettoFormoinalternativaNothing.LaparolachiaveNothingpermettedidirealsistema che per ora la variabile non contiene alcun valore e, di conseguenza, in realt non stautilizzandolamemoria.Piavantiinquestocapitolo,nelcorsodelladiscussionesuitipidivaloreediriferimento,sitengapresentechesoloitipidiriferimentopossonoessereimpostatisuNothing.

    Unaclassecostituitadaunostatoedauncomportamento.Lostatounmodosimpaticodiindicareil fatto che la classe ha uno o pi valori, chiamati anche propriet, associati. Incorporate nelladefinizionedellaclassecisonozeroopiistruzioniDimchecreanolevariabiliusateperconservareleproprietdellaclasse.Levariabilisonocreatequandosicreaunistanzadellaclasse;nellamaggiorpartedei casi laclassecontiene la logicapercompilarle.La logicautilizzatapereseguirequestaealtreactiondettacomportamento.Ilcomportamentoincapsulatoinquellichenelmondoorientatoaglioggettisonochiamatimetodi.

    VisualBasic,comunque,nonhaunaparolachiavemethod.Usainvecealtredueparolechiavechesiportadietrodaigiorniincuieraunlinguaggioprocedurale.LaprimaSub.Sub,abbreviazionedisubroutinedefinisceunbloccodicodicecheesegueunaaction.Unavoltaeseguitoquestobloccodi codice, il controllo torna al codice che lo aveva chiamato e nessun valore viene restituito. IlseguenteframmentodicodiceillustraladichiarazionediunaSub:

    PrivateSubLoad(ByValobjectAsSystem.Object)

    EndSub

    LesempioprecedentemostraliniziodiunaSubchiamataLoad.PeradessosipuignorarelaparolaPrivate che appare allinizio della dichiarazione; il significato di tale parola, che fa riferimentoalloggetto,sarspiegatonelprossimocapitolo.QuestometodoimplementatocomeSubperchnonrestituisceunvaloreeaccettaunparametroquandovienechiamato.InaltrilinguaggipotrebbeessereconsideratoescrittoinmodoesplicitocomeunafunzionecherestituisceNothing.

    LaprecedentedichiarazionedimetodorelativaaSubLoad includeunsingoloparametro,object,chedichiaratoesseredi tipoSystem.Object. Il significatodelqualificatoreByValspiegatonelCapitolo2,ma legatoalmodo incui talevalorevienepassatoalmetodo. Il codiceche in realtcaricaloggettoandrebbescrittotralalineachedichiarailmetodoelarigaEndSub.

    Inalternativaunmetodopurestituireunvalore;VisualBasicutilizzalaparolachiaveFunctionperdescriverequestocomportamento.InVisualBasiclunicadifferenzatraunaSubeunaFunctioniltipodidatorestituito.

    LadichiarazionediFunctionillustratanelseguenteesempiodicodicespecificacheiltiporestituitodellafunzioneunvaloreLong.LaFunction funzionapropriocomeunaSubcon leccezionecheunaFunctionrestituisceunvalorechepuessereNothing.Questadistinzioneimportanteperchquando si dichiara una funzione il compilatore si aspetta che essa contenga unistruzioneReturn.Listruzione Return usata per indicare che eventuali successive righe di codice presenti in unaFunction o in unaSub non devono essere eseguite. In questo caso laFunction o laSub devonoterminarelelaborazioneincorrispondenzadellarigacorrentee,nelcasodiunafunzione,deveessere

  • restituitounvalorediritorno.PerdichiarareunaFunctionnecessarioscrivere:PublicFunctionAdd(ByValParamArrayvalues()AsInteger)AsLong

    DimresultAsLong=0'DAFATE:ImplementarequestafunzioneReturnresult'EsecifossealtrocodiceReturnresult

    EndFunction

    Nellesempioprecedentesinotiche,dopolasecondarigadicodice,appareunistruzioneReturn.Ilcodice contiene due istruzioniReturn, tuttavia non appena raggiunge la prima, il programmanonesegue pi la parte di codice rimanente di questa funzione. Listruzione Return interrompeimmediatamentelesecuzionediunmetodo,ancheallinternodiunciclo.

    Comeillustratonellesempioprecedente,ilvalorerestituitodallafunzioneassegnatoaunavariabilelocale fino a quando non restituito come parte dellistruzioneReturn.Nel caso di unaSub nonapparirebbealcunvaloresullarigadellistruzioneReturn,inquantoleSubnonrestituiscononessunvaloreallorocompletamento.Ilvalorerestituitovienegeneralmenteassegnatoaqualcosaltro,comedimostratodallaseguenterigadicodicechechiamaunafunzioneperrecuperareilcontrolloattivosulWindowsForminesecuzione:

    Dimctrl=Me.Add(1,2)

    Lesempioprecedentemostraunachiamataaunafunzione.IlvalorerestituitodallafunzioneAddunvaloreLongcheilcodiceassegnaallavariabilectrl.Listruzioneusaancheunaltraparolachiavechemeritaattenzione:Me.LaparolachiaveMepermettedifareriferimentoallinternodiunoggettoallistanzacorrentediquelloggetto.

    In tuttigliesempidicodicepresentati finora,ogni rigauncomandocompleto.Chihafamiliaritconunaltro linguaggiodiprogrammazionepuessereabituatoavedereuncaratterespecificocheindica la finediuna seriecompletadi comandi.Diversi linguaggiutilizzano ilpuntoevirgolaperindicarelafinediunarigadicomando.

    VisualBasicnonusaalcunapunteggiaturavisibileallafinedellerighe.Pertradizione,lafamigliadilinguaggiBASICconsiderailfilesorgentecomeunasortadilistatoincuiognielementooccupaunariga tutta sua.Auncertopunto fuadottato il terminedi listato sorgente. Inbasealle impostazionipredefiniteVisualBasicconsideracomerigadicomandoognivocedellistatosorgentecheterminaconunritornoacapo.Inalcunilinguaggi,nelfilesorgenteuncomandocomeX=Ypuestendersisupirighefinoaraggiungereunpuntoevirgolaoun