Condividi tramite


Il presente articolo è stato tradotto automaticamente.

Il programmatore al lavoro

Guida introduttiva di quercia

Ted Neward

Ted NewardÈ interessante, a volte, a guardare i cambiamenti avvenuti all'interno della nostra industria negli ultimi 50 anni. Un laureato nel 1960 potrebbe, ragionevolmente, hanno ottenuto un lavoro come programmatore e, in tutta l'ampiezza della sua carriera, visto il suo lavoro andare dalla compilazione di schede perforate per una macchina di programmazione le dimensioni di una stanza con un enorme 4K di memoria attiva (e non di storage online); visto l'aumento di linguaggi di programmazione come COBOL mainframe e poi minicomputer come il PC di IBM; modifiche con esperienza nella tecnologia di interfaccia utente come ad esempio la GUI; Guardati il portatile diventa il computer standard di scelta; testimone della "nascita" di Internet e del Web — e finalmente in pensione diritto circa il tempo che compresse e dispositivi mobili stanno diventando il consumatore dispositivi di scelta di calcolo.

Ma è anche altrettanto vero che le modifiche che si verificano all'interno di alcune tasche dell'industria, e lo stesso tipo di "rivoluzioni" si svolgono all'interno di un cerchio più piccolo di tecnologia o di dominio. Un tale cerchio rapidamente mutevole della tecnologia è quella del sito Web onnipresente: da script Common Gateway Interface (CGI), scritto in Perl o C; per le estensioni del server Web come ISAPI; "orientato alla pagina" strumenti come ASP. al fondamenti più potente dietro quegli strumenti orientati alla pagina (ASP.NET, sostenuta da CLR anziché codice nativo); e così via. Sempre più spesso, l'approccio di scelta per questi strumenti si muove lontano da lingue "staticamente tipizzati", ad esempio c#, a più "dinamicamente tipizzati" linguaggi, come Ruby o Python. Dibattiti di collera, tuttavia, sopra la gravità delle sanzioni alla programmazione con un linguaggio dinamico (in cui il compilatore non può intercettare errori comuni) e come commercio fuori contro il sovraccarico (il processo di compilazione e di dover lavorare con o intorno al sistema tipo) di un linguaggio statico. Questi dibattiti hanno ancora resa un travolgente "vincitore", e di conseguenza, alcuni sviluppatori stanno iniziando a studiare il modo di prendere il meglio dei due mondi.

Rovere, un progetto open source da Amir Rajan (Twitter: @amirrajan; Web: amirrajan.NET), è un tale tentativo di sfruttare la funzionalità dinamica inerente all'interno di c# (tramite il parola chiave/tipo "dinamico" e il Dynamic Language Runtime o DLR, entrambi introdotti in Visual Studio 2010) e di ottenere i vantaggi di produttività di un sistema come Ruby on Rails, ma tenere tutto in un linguaggio (c#) che offre statico tipo controllo e verifica.

Impostazione di

Rovere è disponibile come pacchetto NuGet, ma una cosa che gli sviluppatori provenienti da Oak devono capire è che, prima di tutte le altre cose, rovere è più di un approccio allo sviluppo di stile di vita più "solo" una biblioteca. Quercia avrà un diverso approccio alla creazione di applicazioni da quello che lo sviluppatore MVC ASP.NET tradizionale può essere usato per. Ad esempio, l'accento sul feedback estremamente rapida significherà quercia vuole costruire continuamente in background (o almeno sembrano essere), tale che semplicemente salvando il file con estensione cs sarà sufficiente per visualizzare i risultati nel browser — nessun passo esplicito "compilazione" dovrebbe essere necessario. Non (come quercia realizza questo in realtà è scienza missilistica, come vedremo). Il risultato finale dello sviluppo rovere sarà un'applicazione ASP.NET "tradizionale", così i ragazzi di operazioni non saprà mai che è costruito in modo diverso da come hai usato per, fortunatamente.

Utensileria

Parte di questa regolazione lifestyle è che quercia non è solo un download di NuGet, ma richiede anche l'utilizzo di alcuni strumenti, che deve essere installato sulla vostra macchina per ottenere cominciata. IIS Express è uno strumento, che molti sviluppatori Microsoft .NET Framework avranno già se essi hanno sperimentato con Visual Studio LightSwitch a tutti. Un altro di questi strumenti è Ruby, che è usato in alcuni utensili e automazione della compilazione. Ancora una volta, Ruby non sarà necessario sui server di produzione, una volta che lo sviluppo è fatto, ma ne avrai bisogno per iniziare e sviluppare in rovere. Al momento, Ruby appena rilasciato la versione 2.0, ma la 1.9 versione opere altrettanto bene (e, per i miei soldi, mi dà più comfort che non correre in uno strano bug 2.0 che nessun altro ha mai visto). Infine, come parte del suo stile veloce, interattivo, rovere vuole essere in grado di flash i messaggi a voi dal sistema di compilazione continua in background, quercia vuole così Growl per Windows, un sistema di notifica che pop messaggi poco a voi sul desktop (come MSN Messenger utilizzato per) quando accadono eventi — come una compilazione corretta o infruttuosa in background. (Esplorerò il Growl API in una colonna successiva, a proposito, perché è un utile strumento per avere nella tasca posteriore.)

Una volta quelli installati, c'è un altro passo che rovere richiede: Gli script Ruby che utilizza necessità alcuni pacchetti disponibili tramite il gestore di pacchetti rubino, gemma. (Gemma rubino era, tra l'altro, molta dell'ispirazione per NuGet e altri gestori di pacchetti lingua come nodo npm e Haskell Cabal). Avviare un prompt dei comandi con Ruby sul percorso e fuoco spento questo comando dalla riga di comando:

C:\Projects\Exploration\Oak\Blog>gem install warmup

La gemma di riscaldamento (bit.ly/15e51Lx) è in realtà come si otterrà un rovere progetto iniziato — tirerà giù un modello contenente tutte le principali spostando parti rovere richiede.

Si può dire già che questo è un lungo cammino lontano dal "File | Nuovo | Progetto"con cui hai probabilmente familiarità.

A partire da rovere

Alzarsi un nuovo progetto di rovere e in esecuzione consiste nell'usare la gemma di riscaldamento dalla riga di comando per tirare giù il modello seme dalla sua casa in linea, in questo modo:

C:\Projects\Exploration\Oak\Blog>warmup https://github.com/amirrajan/loam Blog

Questo progetto di seme, una volta si è tirato giù alla vostra macchina, contiene un'implementazione di "weblog" scarno (e ho messo il weblog tra virgolette perché se questo può essere chiamato un weblog, quindi mie aspirazioni di basket NBA sono vive e bene, nonostante il fatto che io non posso dribblare, sparare o dunk). Una volta che il disco smette di filatura, aprire il file scaricato Blog.sln Visual Studio soluzione (quindi hai l'ambiente confortevole Visual Studio davanti a voi). Quindi, dalla riga di comando in cui emesso il comando riscaldamento, eseguire questi due comandi:

C:\Projects\Exploration\Oak\Blog>rake
C:\Projects\Exploration\Oak\Blog>rake server

Rake è lo strumento di rubino "compilazione", in modo analogo che "fare" è stato il C/C++ costruire tool per così tanti anni; emetterà una sequenza di fasi secondo un bersaglio. Il primo comando compilerà la soluzione, e la seconda dirà Rake per distribuire il codice nella directory IIS Express e avviare IIS Express. Porta 3000 (impostazione predefinita) ora sarà pronto ad accettare le richieste HTTP in ingresso.

Se siete curiosi di vedere l'elenco completo delle destinazioni che supporta il Rakefile, chiamata "rastrello -T," e vedrai l'output della riga di comando mostrato Figura 1. Nota: Un elenco molto più lungo, completo di destinazioni è disponibile con "rastrello -D," per coloro che vogliono vedere il testo della guida completa per ogni attività).

Figura 1 elenco degli obiettivi Rakefile supportati dalla riga di comando

C:\Projects\Exploration\Oak\Blog>rake -T
rake build                  # builds the solution
rake default                # builds and deploys website to directories iis...
rake deploy                 # deploys MVC app to directory that iis express...
rake export                 # if you have the nuget package oak installed, ...
rake reset                  # if you have the nuget package oak installed, ...
rake sample                 # if you have the nuget package oak installed, ...
rake server                 # start iis express for MVC app
rake simulate_load_balance  # simulate the web application as if it were lo...
rake stop_nginx             # stops nginx
rake sync[file]             # synchronizes a file specfied to the website d...
rake tests                  # run nspec tests
rake ui                     # run ui automation tests
rake ui_tests               # runs ui tests (without building)

Una volta IIS Express è installato e funzionante, avviare lo strumento di compilazione continuata, spalla:

C:\Projects\Exploration\Oak\Blog>sidekick

Sidekick è in realtà un file batch che utilizza il compilatore c# da riga di comando per compilare un programma piccolo .exe (sidekickapp.exe) che istituirà un analizzatore di file system per vedere quando i file nella directory albero cambio, e — se sono file sorgente — innescare un MSBuild per ricompilare il progetto. (Recenti esperimenti di Glenn Block con Roslyn per creare un ambiente c# REPL, ScriptCS, anche potrebbero essere utilizzati per realizzare la stessa cosa, più probabile).

Un rapido da parte prima di andare ulteriormente: Si noti che nel Figura 1 come Rake offre un'opzione per eseguire il "rastrello simulate_load_balance." Questo è — esattamente come suggerisce il nome, una simulazione di come l'applicazione comporterà un bilanciamento del carico round robin semplice, così si può testare l'applicazione (e, in particolare, come si comporterà lo stato dell'applicazione) in un ambiente senza dover smanettare con macchine virtuali (VM) di bilanciamento del carico, bilanciamento del carico hardware o software e IIS. È un piccolo nifty Add-on per l'intero progetto che quasi giustifica apprendimento rovere interamente da sola.

A questo punto, la quercia è installato e funzionante, e si può aprire un browser per localhost:3000 per dimostrarlo, come mostrato Figura 2.

Browsing to localhost:3000 to Ensure Oak Is Running
Figura 2 navigazione a localhost:3000 a garantire rovere è in esecuzione

Don' t sottolineare circa quello che Oak ti dice ora — che sarà cosa iniziare a esplorare successivamente. Per ora, è sufficiente a garantire che la quercia è attivo e funzionante.

risoluzione dei problemi

Se questo non funziona, potrebbe essere che il rastrello non sa dove tuo IIS Express si aspetta che i siti Web di risiedere; il Rakefile che imposta Oak utilizza un file di configurazione, dev.yml, sapere dove installare il ASP.NET-compilato il file. In quel file (nella stessa directory del file Blog.sln exe), imposta le seguenti righe a corrispondere a ciò che è sul vostro sistema:

website_port: 3000
website_deploy_directory: c:\Prg\iisexpress\Blog
solution_name: Blog # just the name, no .sln extension
mvc_project: Blog # just the folder name,
  no .csproj extension
test_project: Blog.Tests # just the folder name,
  no .csproj extension
iis_express: C:\Program Files\IIS Express

Su sistemi a 64 bit, ad esempio, IIS Express verrà installato in "C:\Program Files (x86) \IIS Express."

Più da esplorare

C'è un grande affare di quercia ancora da esplorare, infatti, il titolo di questo articolo probabilmente dovuto essere "Ghianda", dato che questo è il seme necessario da cui nascerà il resto del quadro (e serie di articoli). Quercia ha molto ancora da mostrarvi, a partire con la sua integrazione nella tradizionale struttura di sviluppo ASP.NET MVC (controller, viste e modelli) e che trasportano nelle sue interazioni del database. In più, avete ancora vedere cosa si compra questo utensili supplementari (Ruby e Growl). Appendere fuori per un po', la prossima volta inizia il vero divertimento.

Codificazione felice!

Ted Neward è il principale di Neward & Associates LLC. Ha scritto più di 100 articoli e autore e coautore di una dozzina di libri, tra cui "Professional F # 2.0" (Wrox, 2010). Egli è un MVP F # e parla a conferenze in tutto il mondo. Egli consulta e mentors regolarmente — contattarlo al ted@tedneward.com se siete interessati ad avere lui venire a lavorare con il vostro team, o leggere il suo blog a blogs.tedneward.com.

Si ringraziano i seguenti esperti tecnici per aver rivisto questo articolo: Amir rossi (creatore del progetto rovere)