You are on page 1of 60
ee | win q il Sedicade @ desarrolladores y Buscamos talento éTienes pasion por lo que haces? éle gusta compartir el conocimiento? éDisfrutas con los retos? éBuscas la evelucion constante? éQuieres haéer “- los mejores? Te estamos buscando. Contactanos en: recruitment@pasiona.com ¥ . www.pasiona.com a Cien... y gracias Bienvenido al ntmero 100 de dNM, correspondiente a marzo-abril de 2013, Ya lo ves, cien nimeros de dNM antes dotNet Mania} jah es nadal Aunque, cen es un nimero quesugete lo maximo a lo que se puede aspira, os grados alos que el agua se inde ycomienzaa herve porcentaje que indica el total. un numero que tras akcanzatio no se puede ir mas alla. A lo mejorporesto,lacifra noshahecha relexonar siestoes todo, o deberas seguir Tras pensarlo muy bien, hemnos decidido continuar, pero vamos a hacer cambias profundos para adaptarnasa los tiem pos que corren La primera decision es cambiarnuesta frecuencia de publicacéna bimesisal en lugar «de mensual Esta es una medida provisional que nos peri trabajaren otros proyectos de divul- «gacion de tecnologia que vamos. ligara este medio, probablemente, suman contenidos en otros formatos. Esperamos asi hacer de éste un proyecto rentable y sostenible, aunque cambiemos la forma yelmadelo. No quiero adelantar ms, porque el eto es dfidly mejor seré anunciarlo en unes. tadio mas avanzado. Estate atento si tenes interés en nuesto trabajo. De radios mados, para nosotros, cien es sola un numero redondo que significa muchos meses dle trabajo, pero unomenos que el ciento uno. a fin de cuentas. An asi voy a aprovecha para hacer pUblcos mis agradecimientos a todos los autores, patiacinadores y resto de personas que han tra- bajado de alguna manera para este media en estos mas de nueve afios Es imposible nombrat a oxo, pero me gustaria agradecer muy especialmente a Octavio Hemandez, sin cuya ayuda ydes- velos constantes esta revista no poctia hacerse.,y si se hiciera seria peor. Modesto, generoso, in- teligente y sabio, gracias por estar ah Octavio! Ademés, quiero agradecer muy especiaimente a (Miguel Katrb, que con su eauipo de la Universidad de La Habana, Grupo Weboo a aportado con tenidos de calidad desde los inicios En un mundo donde algunos autores se preacupan mas del SEO que deo que escrben, son una ara avis, con los que todos tenemos la Suerte de contar. Tam bin a Marino Posadas, que nos acomparia en este proyecto de cero a cien y que con sus entie vistas ha hecho més grande e internacional este media. Por sus "manos" han pasado los mas importantes personajes de nuestro mundo de tecnologia Su fidelidad y conocimientodelmedio han sido fundamentales para JNM. Ademas, es momento de recordar a Marfa Santos, quien durante un tiempo se encargé dela publicidad y que tistemente yano esté con nosotros Marat también exes parte de nuestra pequeria histovia no te olvidamos! Finalmente seria imperdonable cera sin agra decera Microsoft Ibérica su generosa aportacion durante anos, y muy especialmente a Alfonso Rodriguez y Javier Izquierdo, quienes nos apoyaron sin reservas en los inicios, No hubiéramosem- pezado, no seriamos nada, sin su ayuda Y, por supuesto, nuestro principal agradecimiento a los miles de andnimos lectores que nos habeis leido y atin nas legis, Obviamente, ésta es vuesta re Mista. todos, muchas gracias por estas cien craturas, Paco Marin Editor de dM 1015 e® Por Miquel Katrib, Mario del Valle, Ludwic Lennard pinuar muy bieavenida la inclusion oficla aa simplificarel codigo cuar par se van carganda y m tos ¢Estin adecuada rando datos 6 @ srerez jedades que nos ofiece Wink hone: los Cees movies @ eee eee) Por Josue Yeray Por Guillermo “Guile” Som 35 eeee bueno,un 5 qué haa fu Delo especiicamente para Sonar dentro d nempez6 vay a hablar sobre las caract de Inicio (con maylsculas) de Vi 0 5 pero mas que nada de la creacion de ‘a como aplicacic epi eee eee avira yatenciénalsuscroter tor Redaccén ‘Adena claboraeneste nero Patocnadores que aportan contenido isbsast ——M3.075-2004 El, supine ullad netalia oumetsines hp imsnnpaaet (Go sro /rntacevoakcom/netaines Ad beep fnnvionecom/netatia (Gi enetaines TE (34)91886 7477 web or Marino Pas0das datos Por Enrique Catelé Bafuls y Enrique Puig Nouselles En nuestras entreqas anterior os, Decimo: npleres 2 Ya bien decidamas a6 ac-hoe, consulkas parametrizadas c |nemios que dis NET necesario para @ rev0:er010 4 8 53 Seo crt rr To) ita Por Octavio Hernandez menzamos la diseeciin de la mi de la suite de herrarient arcadero, RAD Studio XE3, soporte para los lenquajos de 57 Rue ON! | pasado 29 de enero, Microsoft anuncié la aisponibilidad mundial le Office 365 Home Premium, una reinve! esuellas de la «: familia Esta pleto co de hast oferca incluye elm: fe Office, funciona a través adicional en Shy office 365 Home Pr fansformacion cios" dio ‘Steve Ballmer, fersiones completas de tod ela gente conoce y quiere, con idades impr cuanto vas posi nuevas cat cores ap mismo tiempo y servicios se pondran a dis fanta estén listos, perrition vechar las posibilida clados de os alicacen Conse itp Pan, 4 cecom enie, Miciosott ibe ia empresa as de las suites tradcio ibero versiones actualiz es de (Tice. Office Home and Student 2013 Office Home and Business 2013 Office Professional 2013 ie 355 pe 35 sera liberado a nivel mundial con caracteristicas roxio 27 de Febrero 10 Office 365 (Que inciuye Office 365 Home Premium Office 365 Home Premium esta cisponible en 162 merca- nds reciente y completa conjunto de aplicaciones OF ice: Word, Excel, PowerPoint, OneNote, Outlook, Publis hery Access * Una licencia para toda una casa para utlizar Office en hasta cinco cispositvas,incluyendo tabletas Windows, PC 0 Macy para obtener Officeon Demand desde cust quier PC conectado a Interne: + 20 CB adicionales de almacenamiento SkyDrive en la nube, casi el tiple del espacio permitido a una cuenta + 60 minutos al mes de lamas Skype gratultas para la- mar a méviles, jos 0 PC alrededor del mundo’ + Actualizaciones de software, para que los usuarios sier: pie utlicen el software mas reciente y avanzado. Sseno rapido y Fluido que responde al rouch y el lapi- cero electronica de manera tan natural como ateclado y ton + Guarde sus documentos automaticamente en Sty- Drive, de manera que estos (y hasta sus configur ciones personales) estén smpre disponibles a sus dispositivos favoritos y virtwalmente en dandequiera, Para mds infoimacién, visite http: //iwm-oFFice.com Dispo El pasado 22 de enero, Microsoft puso a dsposicicn del pubico Windows Phone SDK Update fer Windows Phone 78, una actualza- idm al SDK de Windows Phone 7 que aiade dos nuevas imag nes de emulador las ya existentes. Estas dos nuevas imagenes ppermitiin a los desarrolladoces probar completamente coma se ‘comportan los five bles de una aplicacicn para Windows Phone 7S cuando se desplequen en un cispositivo que estéejecutando Windows Phone 78 Ya estan apareciendo en elmercado nuevos ‘eléfonas basados en Windows Phone 72, por o que estamos {snle un mamento ideal para actualzar as aplicaciones de modo {que aprovecten las nueves experiencias que ofecen laslive les y estén as! mejr prepatads para llegar alos nuevos mercados (que Windows Phone 78 abie ante los desairoladotes. <2Qu¢ se incuye en esta actualizacion? Para pode ser apicada esta acualzacion de Windows Phone ‘SDK requiere a presencia previa en el equipo de destino de Win dows Phone SDK 71 6 71). Una vez aplicada, la actualizacion, aftade las siguientes caracteristicas + Emulador de Windows Phone 7.8 Esta imagen pene emu lara jecucién de sus aplicaciones en un dispositva equi ado con S12MB de memoria y Windows Phone 78. + Emulador de Windows Phone 7.8 2564 = iagen permite ‘emul a ejecucién de sus aplicaciones en un dispositivo lequipado con 512 MB de memotia y Windows Phone 78. + Siusted est utlizando una inxalacidn de Windows Phone ‘SDK 71, esta actualzacion tambien descargard e intalars in actualizacién a Windows Phone SDI 711 le SDK Update for Windows Phone 7.8 Esta actualizacion Unicamente simplficalas pruebas de como lac aplicaciones ce comportan en ciapacitivos que ejecuten Win dows Phone 78, Todas las aplicaciones desarolladas después {que la presente actualizaciin sea aplicada continuaran funcie nando correctamente en Windows Phone 75. Soporte de Live Tiles en Windows Phone 7.8 A/ mas alco nivel, Windows Phone 78 petite que sus apli- ‘aciones para la version 75 se campatten de manera muy simi lara como hacen las apos paras dispositivs Windows Phone 2 permitigndole hacerlo siguiente en la pantalla de inicio te pimatio pads se un tile pequehe personalizado, Cohtece coparte para sles anchas y permite aprovechar la planta Flip. ‘Se pueden actvar los les secundaros pera as\aprovechat Ibs res nuevas planilas (lip leone y Cycle El aprovechamiento de las nuevas plantilas de tiles ais: ponibles en Windows Phone 78 requiere la aplicacion del mismo enfoque basado en Reflection que se viene usando desde hace unas pacos meses para utlizarlas en las aplica clones 75 que se ejecutan en Windows Phone 8, sobre el que ‘escrbe nuestro colsborador Josue Yeray Juin Ferreiro on este mismo ejemplar Parernas rfornectn vite elbiog del equipo de desarlo de Wir ‘ewePhoreenitep/elogs indo .com/idndos phone pd ar hve /2013/21/2/nou-aundlabe-tineve-ghone-2dk-updot-for-7-8. apc Disponible nueva version de Try F# ‘También e! 22 de enero, Microsoft anuncié la disponibilidad de na nueva versién de Ty F#,un conjunto de recursas que sim- plifica el aprendizale ontine de la programacion con Fi, mas- trando toda la potenca y versatiidad de este lenquaje “Ty F# permite a os usuarios aprender Fé a través de tuto Fiales enfocados a tesolver problemas del mundo rea, incluyen do las tareas de programacion analtica que se presentan en las, Finanzas y el andiisis de datos. Pero Try Fit es mucho mas que Un conjunto de tutoriales. Permice alas usuarios escribir cédion fen el navegador y compartir con otras a través de la Web para ‘yuidar@ hacer cecer la comunidad de desarioladores de Fi. Esta nueva edicion de Try F# es una evolucion que mantie ne a la heramienta en sincronizaciOn con las nuevas expetien- clas y las nuevas caracterisicas de programacién “ica en infor macién" que estén disponibles res de tipos. F# seha convertido en una herramienta de incalculable valor a lahova de acceder,ntearar, visualizar y compartir andlisis de ‘datos Try Fi tone porelia el poreneial para canvercise enla con. sola de datosbasada en la Web paraintegrar grandes volimenes de datos (big dato), y sus metadatos asociados, desde miles & incluso millones de fuentes diferentes hasta las puntas de los dedos de desanladares y cientficos. Ty Fé ayuda a cubtirla ecesidad de herramientas robustas para analizar y consular {datos abettosy relacionados, promueve el uso de datos abierios para estimula la innavacidn y habia nuevas formas de colabo- raadn y ceacién de conoamientos Visit Ty Fit on het fusi.tryfcharp.org “# 30, como los proveedo- Quinto aniversario de Second Nug > Todo empez6 un de febrero de 2008, cuando tas casi nueve meses de deberaciones y pruebas sobre cul debia ser el meio por el cul haiamos os webcasts yl teria elformato dees mrimos, nos lanzamos ala piscina con nuestro primer everco, Pimeros pasoscon CSLANET’En | SECS, principio, Second Nug se comprometiée lever a cabo un evento el prime martes de cade mes como sefia de idertdad.Curiosamente, esa sfia de identad cami répidamente, yen tan solo once meses realzamos tree even tos. Tece que pronto se convirieron en veintstis en siguiente af, legando ala cantidad récord de veintinueve en 2010, y un total de veinte el aio pasad ‘odo ha sida posible gracias a nuestos asistentes, que nos dan su apoyo mes a mes y nos proporcionan las eneraas para seguir peto también gracias 3 un equipo en la sambra- esos coordinadores de Second Nug que hacen que esto sea posible cedicando su tiempo alibrea la Comunidad. Durante estos anos, muchos coordnadores se nos han unido, para todos queremos que haya un teconorimento-Toni Recto, José Cubero Javier Conesa, Maral Serrate, Luis Ruiz Pavén, Maia Heméndez, Daniel Salazar, Valetiano Tortola, Leonardo Diego Testa, Fran Diaz, Carmen Sénchez, Marino Posadas, Miguel Llopis, David Nudelman, Omar del Valle Joaquin ‘Sosa, Alfredo Fernéndez, Sergio Calderén, Quique Martinez, Ricardo Polo, Francesc aumot Pilar Palel, Gerard Lopez, Samuel Lopez ‘Oscar Marin ¢ Iban Benzal Por cescracia, también muchos de ellos han abandonado el barca, y en la actualidad el equipo esta forma ‘do solo pcr Toni Recio Javier Conesa, Fran Diaz, Omar del Valle y Quique Martine ‘Ademés de agradecer a nuestos asistentes y coordinadores, tenemos que car le gracias también a olios equpos queneshan apoyado durante estos arise dotNetMania JetBrains, Campus MVP, Pluralsight linet INETA,GITCA,y 50" supuesio al gran equ pode personas cedicads 2 as comunidades tanto de Mirosaft Espafia como ce Microsoft Latinoamérica Por titimo, agradecer 2 los ponentes de nuestras charlas su apoyo, y las ganas que le ponen a preparar los eventos, cuando muchas veces les pedimos charias que no figura en su listado de temas. Nos gustaria poder enumerar os nombres de todos los Pponentes, pero con IS eventos realizados hasta la fecha ia Ista es demasiado larga. {Gracias a todos los que hacé's posible Second Nugl'speramos poder sequir aqui otros cinco afios mas! Primer juego JavaScript para Windows 8 a peepeine inte mieck reas sobre todo, ayudar al Mago Zasca a acabar con las Cabras Cabreadas, ven a acompafar a Toni Recio, Responsable vvacion en pasiona, Divulgador Tecnol6qico en Fundacién [T]echdencias y fundacor de Second Nug Arquitecturas modernas en NET con Radarc de Icinetic El préximo martes 19 de Febrero, Second Nug mostrara como desa: rollar aplicaciones empresaviales conilava cumpli con rnitples gulas e estilo, reglas de nombrado y criterias arquitecténicos que debe: mos seguir para mantener un minima cle homogeneidad que redun- «de en un mejor mantenimiento de laaplicacion por elequipo. Al mis- rio tempo, es necesario organizar las aplicaciones en capas, Sege- foreach (var item in fron item in DataSource. Contacts onderby iten.BirthDate descending select iten) Contacts. Add iter); Una allemativa es ir mostrando los resultados de 2 Si tecordamos que foreach no es mas que az poco, mientras se obtienen los dems. Aparentemen- car sintactica aplicada sobre ios tipos TEnumerator te podemos pensar en escibir un cOdigo como el del _‘IEnumerable, realmente el cddigo del listado 3 es listado 3,en el que la hebra que hacelallamadaalmeto- _transfoimado por el compilador en algo equivalente {do ejecutaré justo hasta la sentencia precedida por el alo que se muestra en el istado 4 await y a tarea indicada con el await se ejecutaré asin cronamente Sin embargo, posible- mente estono solucionariae) ff private async void ShoListButton onchick(cbject sender, foutedévertArgs e) problema porqueloqueseha Hi! conesces.ctea()s hecho asincrono.con el met: foreach (var item in fron Sten in DataSource. Contacts dolamaniees mostare dato orderby iten.Birthbate descending Contacts.add(item), no select iter) producilo, Hacer asincrono eerie: afiadir el elemento a la lista ‘ de contactos lo que puede Contacts. Add( ten); provocares que los elemen- tos aparezcan en la lista no necesariamente enel mismo cordenen que se producen en i SEs san la consulta ONM. private async void showListButton_OnClick(object sender, FoutedEventArgs ) { Contacts.clear()3 Van enunerable = fron itan in DataSource. Contacts orderby iten.BirthDate descending Select ites; ver enunerator = enunerable.Getémunerator(); uinle"(enunerator.Rovetlee(}) var Sten = enuserator Current avait Task.Run(() => { Contacts.add(iten); })5 private async void showListButton Onclick(object sender, foutedtventArgs e) { contacts.Clear(); var enunerable = fron iten in DataSource. Contacts orderby iten.BirthDate descending select ites; var enuneraton = enunerable.Getnunerator(); winile (ait Taskcbool> Factory. StartNew(enunerator.Movellext)) { var iten = enunerator.Current; Contacts.Add(iten); public static TEnunerableelong> Slowénunerable() Jong count, ile (...) ‘Threat.Sleep(56e); / Sinular 1a denora en obtener el dato ylelé return countess } Hae ‘Slowénunerable().Foreach( (x) => Console.hiteLine(x));, 1/ Reci6n que queda bloqueada a 1a espera del procesaniento anterior while (true) console.uedte("**); public static async Ienunerableelongy AsyneSLowénunerable() { arty t ‘avait Task.Delay(30@)); // Sinular la denora en obtener el dato yield retuen countees Note que la accion cle MoveNext (ope- racién encargada de obtener el dato de la fuente de datos, y posiblemente la de mayor demora) queda fuera del await Se podria reescrbir el cédigo como se muestra ene! istado 5 para pasar elMove- Next hacia dentro del await. En este caso, la hebra principal puede itrabajandoasin- Cronamente mientras se produce el dato. {istada Sly unmétodia extensor Asyne {que converte un Tenumerable en un TAsyncEnunerablecT>. Laclave esta en que el GetEnumera- tor de un TAsyneEnumerablecT> ewuelve TAsyncenuneratorcT>,y ese! método NoveNext de IAsyncEnunera- toreT> quien devuelve un Taskebool> conde el Tenunerator de oigen dewoWva bool iteraciénentonces debeiahacer se coneimecodo AsyneForeach que se muestra en el istado 10 Note que el método AsyncForeach retorna un Task pare que el cédigo ls mane pueda decir esperar por suter minacion (aunque estonolo usaremos en os ejempios que siguen) Si ejecu- tamos ahora un cédiga coma el eli tado 1 abtendiamos el resutado que se muestra ena figu | Note como la hebra principal sigue ejecutando asincronamente cola pio cluccidn decade dato,y cémo la accion a realizar con ceda dato producidoenta iteracion se va intercalando can a eje- cucién de la hebra principal public static async TasketEnunerable¢longy> AsyneSlowénunerable() { ) “ return anait Task«lEnunersbleclong>>.Factory.Starthew(SLovEnunerable); AsyncSlowénuerable() .Result.Foreach( (x)=»onsole.ledteLine(x)); while (true) Console.urite("**); public interface TAsyncEnunerablect> { ? public interface thsyncEnuneratoret> “AsynctnaneratoreT> Getéunerator(); T current { gets } Toskebool> Hovekext()s ) public class AsyncénunerableeT> + TAsyncEnunerablecT> € public AsyneEnurerable(iEnunersbleeT> @) { } TenunerableeT> e this.e = 65 class AsyncEnuserator : JAsyncEnuneratoret> { Tenumerstoret> ens public AsyncEnunerator(icnuseratoreT> en) thissen © en; y public T current { get { return en.Cuerent;, } y public Taskcbool> Movellext() { y return Taskex.Run(() => en.Hovelext()); , public IAsyncEnuneratoreT> GetEnumerator() ft } return new Asyncenuneraton(e.GetEnumerator()); > Ni public static async Task AsyncFoneachsTo(this TEnunerablecT> e, ActioneT> action) { Tasynecuner hie (avait en.Yovoloxt()) { var x = en.Curnent; action(x); ? } Elobjetivo en la presente propuesta es que el cédi go que llame al AsyncForeach no se bloque espe- rando por el iterador, pero ala vez garantizar que la accién que se le pasa c imetro al AsyncFo- reach se aplique ordenadamente seguin se vayan obteniendo los datos 3 3 Siguiendo este patron, el ejemplo inicial de con sulta LIN sobre contactos puede reescribise sim plemente de la forma que muestra el listado 12 Es importante aciarar que este méroda AsyncFo- reach no debe confundise con el del métado Para~ lel. Foreach de System. Threading. Tasks. £l com portamienta de ambos métodos es diferente El abie presente propuesia es que el cidigo que lis private void ShowListButton onclick(object sender, Contacts. clear(); (Fron iten in Datasource.contacts conderby iten, Birthdate descending select iter) AsyncFareach(x => t DE Contacts. Add(x); oreo en = new AsyeEnunersb ee (e).GetEnunerator()}; class Progran { Slownunerable() AsyncForeach((x) => ¢ osolesWiteLine(x); or (int k= 85 k C105 kee) Toskx.Delay(100) ait() Conscle.Write(***); } ni vile (true) Consoleswndte(*."); sk. Delay (108) ait(); me al AsyncForeach nose blogue esperanco poral te radar, pero a la vez garantizar que la accion que se le pasa como parémetroal AsyncForeach sé aplique ard nadamente seqin se vayan obtenienido los datos. objetivo de Parallel .Foreach es cira el cuerpo del Foreach seaplica asinconamentea los de la fuente de datos, pero watando de logyar pa mo fisicoo viualen dependencia de los recursos} sin ‘comprometerse con él supuesto orden en que se pro dducen los datos sobre los que se iter. intos datos leis En esta entrega hemos propuesto un patron para reco- iter de Forma asincrona un enumerable, aprovechan- do jos nuevos recursos de async y await sin que e! el desarrollador tenga que renunciar a la sencillez y expresividad del mecanismo de yield y foreach. Elmaridaje entre Visual Studio y C# nos ha mos- ttado como este lenguaje haido evolucionando con, la inclusion de nuevos recursos y aziicarsintactico, mientras que a la par el compilador se ha encarga do de hacer transparentemente as transfarmacio- nes de codigo para que todo funcione,y sin incom- patiblidad con el cédigo ya existente. Ast acurrié ‘cuando se introcujeron los iteradores con yield; as! ‘ocuttié también con la genericidad, con el patron LINQ, con los delegados y las expresiones lambda, ymas recientemente con async. Faltarla un paso que integre mejor asyne e iteradores. Una solucion basada en la idea que se ha mostrado en esta pro- puesta pudiera ser uti Padria aceptarse sintacticamente poder poner la especificacidn asyne aun bucle foreach de talmado que un cédigo como: async foreach (T x in expr) {.acci Elcompiladorlo wansformase en expr AsyncForeach((x)=> ~2ecién.) Un método que devuelva un TEnunerable pods especificarse de forma asincrons haciendo: async TEnumerable M(){..} De tal modo que se considere que sieltalM() es recorrido en un bucle de a forma: foreach (T x in W()) {...accién...} Sir El compilador jo ransforme en algo como: N() .AsynceT>() .AsyncForeach(..accién..) Donde AsyncT> es un metodo extensor como: public static LAsyncEnuserablecT> AsynccT>( ‘this TEnunerablecT> ie) return new AsyncEnunerablecT»(ie); Eltema no esta agotaco, quedan algunos aspec- tos pendientes que podian ser objeto de futuios tra- bajos. Par ejemplo: epor qué no pueden ser async el get y/0 el set de una propiedad? o ecéma ligar el async con un Parallel Foreach? Elrecuerto mds antigua que tengo de mi ier ests ‘asociado con el nummera 100, cuando @ los 5 afos y yo cagado de miedo en aque saién de crugia et onestesis- tame pregunté esabes cantar hastai00? Si? Puesempe- 2a ohora pero de ats para adelante. Creo que antes de! 90 ya estaba dormiao, nero ahifché con fas Mates en fo {que mucho més tarde devino en Programmacién. 100 es un numero que todos quisiéramos nomi- nando a nuestros blletes, y ahora NM ha Negado @ esa cffa Son 100 ndmmeros en los que a to fargo de! camino hemos acompariade a la tecnologia. NET, ca tondo de hacerla llegar a nuestros lectores, estondo hi presentes en cada paso importante que fa dado, 1 aunque en fos dimos tiempos su amor nos haya resultado algo esquiva, y coqueteemos por tanto con otras tecnologias, Ja Sequimes tratando con conf. Un reconocimiento a la labor de todos nuesiros redactores y autores, y muy en especial a ese empe- inode Quijote que ha resultado ser Paco Marin ya su escudero Octavio Hemdnde2, Miguel Karr C1] icatib, M, Leonard, L Programacién asincrona en C# 50. En NM n° 87, diciembre de 2011 [3] Paneque L. Katrib M. Programacién paralela en Visual Studio 2010, En dotNetMania 169, aril de 2010. 2100 Introduccion 3a Windows Azure Service Bus En este articulo presentamos Windows Azure Service Bus, otro de los servicios que nos pproporcions Ia platform de Cloud Computing de Microsoft. Windows Azure Service Bus ($3) proporciona una infiaestructura en mado SaaS, protegida y am- pliamente cisponible para una comunicacién ex- rendida, una distibucién de eventos a gran escala, asignacién de nombres y publicacién de servicios, ‘SB nos proporciona opciones de conectividad entre los diferentes sistemas/servicios de una ar- quitectura distribuida, asl como capacidades de mensajeria tanto relayed {reransmitida) como bro. ered (con confianza establecida}. Con el patrén de mensajeria retiansmitida, SB nos perrite la ‘mensijeria unidireccional directa, mensajetia tipo solictud/respuesta y mensajeria punto a punta Especificamente, ls mensajeria con confianza es- tablecida proporciona componentes de mensajria duraderos y asincronos, tales como colas y sus cipciones; es decir, con caractersticas que adm ten publicacion-suscripcion y desacoplamiento. ee eee Eee Lo primero que vamos a hacer es configurar el ‘servicio dentro del portal de Windows Azure. Para ello, vamos al portal (https: / /manage.windowsa- zure. con), y una vez alli seleccionamos la opcién de SG (figura 1). Pul- sando el botén de crear, nos aparecers Enella solo tenemos que introducir unnombre y sseleccionar en queregién queremas que nuestio, servicio se publique. Una vez tenemos configurado nuestra SB, en el portal sdlo nas queda una casa que hacer {quardar las dos claves secretas que nos peimi- tiran utiizar el servicio desde nuestras apps Gena ea Con el servicio configurado, varios ahora a rea lizar una pequena prueba de concepto, que nos ayudar a entender cémo funciona SB y cémo tenemos que utilizario, Para nuestro ejemplo, imaginemos que es- tamos desarrollando una capa de servicios que inegra muchos desarrollos que hemos ido realizando con nuestro ERP. Tras crear un servicio WCF que expone una serie de méto- dos que integran nuestras aplicaciones con el ERP, nos hemos dado cuenta de que el sis- tema tarda mucho en responder cusndo llega elfinal del mes y losn usuarios lanzan los pro- esos de integracién, Ademas, en algun caso hemos perdido informacion, ya que los proce- 505 de integracién pueden hacerse de forma masiva Los cambios que vamos a realizar son para no tener que pracesar las néminas. En lugar de Dersce naines ieetetir fap elie una ventana emer- gente como la que se muestra en la figuia 2 procesarlas dtectamente, vamas a encolar las peticiones y hacer que un Worker Rote las vaya procesanda en otro servidor. vamos a utilizar para nus 0 ejemplo puede verse en el lisiada I (el cAdiga garse desde el si Como podis ver, ya ‘arquitectura! Lo primero que vamos a hacer es instalar el paquete de SB desde NuGet u gure 4), Una vez hecho esto, pode. ha agregado una 1ueva opcion de configuracion alos f del servicio de do 2). Aqui donde deberemas poner en usa las mos ver qui heros de configuracic Windows Azure dos claves secretas que hemos c: mentada al principio Afadienda los datos al Service Bus Ellistado 3 muestra los cambios hacer uso de 5B. Como podemos cambios en nuestra metodo Contabilizarioninas han sido pacos Lou nemos hecho ha sido coger todas las néminas a El servicio WCF public string ContabilizarNoninas(icnurerableeionina> nominatist) La estructura de le sal fi ena figura3,y un fragi Hel servicio WCF que ion se nto U1 dgiea, return "Se ha procesado todol"; ———————— ) ‘Setting nanes"Microsoft. Servicetus.Comectionsteing” 'Endpoint=sb://{your nanespace] .servicebus. windows net SharedsecretIssuer-owner;SharedSecretValues[ your secret] oNM ° public class WorkerRole + RolesntryPoint { 11 The nane oF your queue Const string Queuelane = "Process ingQueue”; // QueueClient is thread-safe. Reconmended that you cache Jf rather than recreating it on every request Queueclient Clients bool TsStoppeds public override void kun() nile (ItsStopped) { wy { 11 Receive the nessage Bsrokeredessage receivedNessage » null; receivedtessage = Client.Receive(); if (recetvedtessage |= null) 1 Process the message ‘raceatiriteLine("Processing®, receivelessage.SequenceNunber.ToString()); receivediessage,Conplete(); } Catch (Nessazingtxception e) if (Ie.Istransient) { ‘TracesniteLine(e.Nessage); ‘throw } Thread. Sleep(aaeeb); Catch (OperstionCanceledException e) iF (1TsStopped) JracestiniteLine(e Message); ‘throu y } } z public override bool onstart() { 1) Set the maximum nunber of concurrent. connections ServicePointiansger.DefaultConnectionLinit = 125 IJ Create the queue if it does not exist already string connectionstring = ClousCon*igurationlanager.GetSetting( “Microsoft. Servicetus.Connactionstring"); var nanespaceNanager = osospucelianager CreateFrenConnectinString( cennectionString); 4F (Inanespacenanager.Queuetxists(Queuelane)) nanespacedanager Createqueue(Queuetane); {{ Initialize the connection to Service Bus Queve Client = QucueClientCreateFrowConnectionString( connectionString, QueueNane); TsStopped = false; return base,Onstart()3 » public override void Onstop() { {/ Close the connection to Service Bus Queue IsStopped = trues ‘CLient.close(); base. OnStop()s her Role de Windows Azure, pero uno = especial figura 5) Se trata de un Wor a : her Role with Service Bus Queue aaa se : agtegarla podremos ver que nos oo ofrece parte de la lagica en la gestion de las colas. Por defect, el Worker Role with Service Bus Queue nos oa los res métocos que se presentan en ellistado 4 Los cambios requeridos para eel poder procesar los mensajes que = hemos afiadida desde nuestro servi clo WCF pueden verse en el listado 5 ‘Ademas de cambiar el nombre de la cola, que tiene que ser el mismo que lizary afadirias anuesua cola de $B Ademas, hemos ido trazando por dénde pasamos para poder tener un poco mas de informacion en caso de error (este cédigo se puede optimi zar, se ha dejado asi para el ejem plo® Procesando las datos del Service Bus Ahora vamos a pracesar los datos que hemos ido afadiendo a nuestro SB Para ello, lo primero que vamo: hacer es agregar un nueva proyecto a la solucion En esta acasidn es un Wor 8 public class WorkerRole + RoleEntryPoint { 11 The nave of your queue const string QueueNane = "ProcessingQueue” it public override void Run() wile (I1sStopped) { uy { Uf Receive the nessage Brokeredessage receivedMessage = Client.Receive(); if (receivedtessage = null) { UJ Process the message ‘Trace.tdnktetine( “Processing”, receivethessage,Sequencelunber.ToString()}; var message = necelvedlessage. Getdodycion!na>()5 var result = ContabilizarNonina(nessage); Af (result) receivedNestage.Conplete(); else { 1 Gestién de errores ) } catch (Nessapingtxception e) { if (Ie-IsTransient) £ TyaceatriteLine(e. Message) ‘throu ) Thresd.Sleep( 1960); } catch (Operationcanceledéxception e) ‘i iF (1TsStopped) { ‘TracesiniteLine(e.Nessage); ‘throw le hemos dado en nuestra servicio WCF, los cambios se concentran enel ‘método Run y tienen lugar una vez re- cibimos el mensaje, donde lo recoge- mos y lo procesamos can la légica que ya tenlamos programada ante riormente: | Recogemos el mensaje: Brokeredtessage receivedNessage = Client Receive(); 2.En caso deno ser nulo,recuperamos el cuerpo del mensaje: var message = receivedtessage. GetBadyciionina>(); 3 Procesamos el mensaie: var result Contabi1izarNomtina (message) También deberemas afadir el c6 igo de gestion de errores que estime- mos necesario. Desde mi punto de vista, utilizar Win dows Azure Service Bus no presenta ningun aspecto negativa. Todo es posi- tivo:nos ayuda a gestionar los sistemas, istibuidas, no perdemos datos y opti rmiza nuestros sistemias delegando res- ponsabllidades. Todo ello ullzando este servicio sin tener que preacuparnos del hardware, red y demas aspectos que ros ahorramas utlizando SaaS. a E11 Portal de Microsoft Windows Azure http://in-nindowsazure. con ONAN ON N (tem tem oN ah iS] i= Gy ne) = o Po) wn o ia ey Qa a jeu} > a. Developme Athisoren Plan Concepts Live Tiles en Windows Phone 8 Continuando con nuestro renaso 8 las principales novedades que nos ofrece Windows Phone 8 en el ferrena del desarrail,este mes le foce el tumna @ uno de los elementos cenirales de la intertaz: de usuario de Windows Phone: los Ue Tiles ‘Cuando aparecié por primera vez Windows Pho- ne, elemento diferenciador con respecto al res. to de las plataforrmas méviles fue su capacidad pata personalizar y crear una pantalla de inicio “ava’, Gracias a as baldosas (tiles) las aplicacio- nes pueden dannos informacién, mostrar ele- mentos graficos 0 mensajes, sin tener que act: \erlas. En la version 80 que tenemos actualmente, se ha llevado a un nuevo nivel esta caracterist- 2 Miltiples modos en los tiles, res tamatios cif rentesy nuevas formas de actualzerlosnos darn tuna mayor ibertad a la hora de implementarios ‘en nuestvasoluci6n. Tambign veremos cémo inte ‘rar estos nuevos tes en nuestras aplicaciones Windows Phone 7X para que éstas hagan uso de ellos cuando se ejecuten en dispositivas que ‘cuenten con Windows Phone 78 u 80. Een ee En Windows Phone 75, disponiamos de un lamafio Unico de ites y de un efecto de rota- i6n. Podtamos indicar el contenido de la parte elantera y trasera del tie, que era de tamafo cuadiado con unas dimensiones de 173x173 pixeles. Al indicar contenido en la parte trasera del tile, este se animaba, Figura 1 Aspecte y partes de un ive ie en ‘windows Phone 7.5 rotando para mostrar una cara ola otra en inter- valos de tiempo espectficos. Coma podemos abservar en la figura I, un Jive tie nos permita defnirciertos datos en cada tuna de sus caras. En el rente padiamos defini untitulo, una imagen y un contador. Por su par- tala cara posteriornas permtiadefinir una ima- gen, un titulo y un contenido. Esto nos permitia rear es animados que mostrasen cistnta iar rmacién al usuario; pero, legado un punto, todos los tiles realizaban la misma animacion y mos- traban informacion de una misma forma, con io Que la belleza de lainterfaz se normalizaba y no resutaba facil rear algo “espectacular Esto cam- bid radicelmence con la legada de Windows Pho- ne 7.8 y Windows Phone 8, donde pasamos, como veremos 2 continuacién,de tener un solo tamafo y animacion a poder combinar distintos tamahos y distintas animaciones para crear tes Lnicos y que se adapten a nuestra aplicacion como un quante EnWindows Phone 78 y 80, los ive tiles han crecido para com poderosas herramientas de comunica cién con el usuario. Empezamos por los tamafos. De un Unico tamafo de 173x173 pkeles, pasamos a tes distin (os: Small, de 159x159 pixeles; Medium, de 336x336 pixeles, y Lange. de 69336 pixeles. Sinos fijamos en los tamafios, todos son subdivisiones dl tie Large, como se puede ver en la figura 2. De esta forma, el usuario siempre puede coger entre las tres tamafios y per. ssonalizar su intesfaz de usuario como desee. Figuea 3. Pianta Ftp ion (Rgura 3). La planaila lestd soportada en los tres tamarios de disponibles. Sin embargo, en e! ‘amario Small, n0 mostraré la informa- cin de la cara trasera; solo lo hard en los camafios Medium y Large Laplantila Cyele crea un carrusel de imagenes, hasta un maximo de nueve. » los famarios Medium y Large, id ‘otando entre las imagenes para mas- trarlas todas. Sin embargo, en eltsmavio demas de los cambios en tamano, también tenemos nuevas plantillas que efiniran como se animan las tiles y qué ‘Small mostiara una sola imagen que le indiquemos como background En todos los tama‘ios la plantila mostraré un can tadory un titulo que le indiquemos. Para esia plantilla, cabe destacar que solo podremos indicar URL de imagenes locales, pero no de imagenes remot Podriamos decir que esta plant totalmente centrada en las imagenes, por lo que si nuestra aplicacion trabaia con este tipo de datos, es recomenda ble que la utlicemios, Pademos ver un ejemplo en la figura 4 st informacién pueden mostrar. En con: creto, tendremos tres plantas entve las ‘que escoger Flip, Cycle e leonic. La plantila Flip nos effece un com portamiento parecida al que teniamos en Windows Phone 75. En ella conta remos con dos partes donde definir el contenido del til. En la primera parte, cara frontal, podremas definir una ima (gen, un contador y un titulo. Enla segun- da parte, o cara trasera, podremos defi nir una imagen, un titulo y un conteni Figurn 4. Plante Cycie ON 8 eet eles Figura 5 Plontiia one La plantilaleonicesia pensada para mostrar informacion en formata texto Esta informacion varla en funcién del amano del ie. En Small, muestra solo un icono y un contador. En Medium, muestra ademas un titulo Por Gitmo, en amano Large, ademés del icano, cor tadory titulo, senos permite mostar tres lineas de texto extra, una de ellas con un letra mayor que acttia come titulo figura 5}, Ademas,esta plan: tila es estatica yno realiza ningun efec to de rotacién o cambio como las ante flores que hemos visto, Aigo a tener en cuenta en la plantila Ieonices que, como se puede apreciaren la figura 5 el icono mosirado es plano y totalmente blanco, El sistema se encar- «9214 ¢e locaizarel colordefondodenues tra imagen y dejarlo tal cual esté, cam biando el resto de pixeles a color blanco para mostrario de esta forma plana, Como pademas observar, hemos pasado de un tile basico, que nos per mitia tener un tamafo y dos caras, 2 poder combinar ties plantillas muy cife- rences enite si, con ties tamanos para combinar. Lo mejar es que no seremos nosotros, sina el usuario, el que decida el tamano. De esta forma, la personali- zacidn es mucho mayor. nafio Peete ane Pen ied Alahora de tabejar con ive tiles, pode- mos hacer una distincion entre el five ile principal de nuestra apiicacién y ots lve tiles que podemos crea, la mados lve ties secundatios. Para definirlas caracteristicas del live tile principal, debemos editar el archivo WMAppMani fest .xnl que tenemos en nuestio proyecto Win dows Phone & En la primera pestaha, ‘Application Ul podremos defini cler- tas caractersticas de cada plantlla, los tamatios de tlle soportados (como minimo debernos soportar Small y Medium, siendo el tamano Large ‘optionally la imagen o imagenes a mostrar figura 6) Pero puede ser que exista infor macién que queramos actualizar segun el usuario avance en nuestra aplicacién, come el ultimo anicula des: cargado, la puntuacién de un juego o ios nuevos mensajes pendientes de leer. ‘uetonpate 8 a = — a Figura 6 Contiguracion de 9 plantila Cycle pare nuestr9 aplicacon Es importante tener en cuenta que solo podremos actualizar la infor- ‘macion deltie principal en ningon caso podrernas cambiar la plant lla que tiene asignada Si /o nten- tamos, se producié una excencién de tipo ArgumentException. Para actualizar un tile, en concreto el te principal usaremosla clase ShelITi- Je defiida en el espacio de nombres, icrosoft.Phone Shell Esxacisce con tiene una coleccién lamada ActiveTi- Jes, que siempre conten al menos un tHe(el primero) que serait principal de ruestapicaciin inuso sinolo hemos andlado ala pantaladeinico Paraactua lizatolo primero que tenemos quehacer es obtenetio. A continuacion crearemos una instancia dela clase que represente restr planila FeondeTileData Flip~ TileData oCycleTileData Todaselas hesedan de Shel TieData Una vez ue hhayamas dfridolas propiedades Geesta instancia, solo nos quedara actualizar nuestro SheLITile usando el méiodo Update (staco Dela misma fora que actualizamosel live tile principal, podemos crear tiles ShellTile tile = She ssecundatios El proceso es muy pareci- dda. En primer lugar, tenemos que com: probar sielcile ya existe en la coleccion ActiveTiles de la clase ShelITile. Si existe, padernos eliminate © actualizarlo, 5) intentasemos crear un tile dupi= cado,recibifamos una excepcién de po Tnvalidoperationéxception Como se puede observar en ellis: ado 2, lo primero que hacemos es consultar la coleccién activeTiles, ax © buscando un le que contenga la URI que vamos a asignar al nuestro. ¢Por qué la UR y no otra propiedad, como un identificador 0 incluso et titulo? Simplemente ly aunque pienso que 1N0 es la mejor opcién} la propiedad NavigationUri es la Unica que tene mos disponible. Una vez que hemos obtenido el ShelITize (o nuld sino existe ninguno} podemos crear la ins- tancia de la plantilla a usar y definr los valores comunes que usaremos {en este caso el Backgroundinage y el contador), tanto si vamos a actua- lizar como si deseamos crear uno nuevo. ‘Shel Tile secondaryTile = shel2Tile.ActiveTiles.Wnere( {t= tevigatlontrd Originalstring == */Main?age,xanl"), FiestordeFault(); FLipTiledata secondaryTitebata = new FLioTi2e0atat); secondaryTileData,fackgreundinage = new Joi(*/icen.png", Uri ind. Relative); secondaryTilebata.count = 35 Af (secondarytile = null) { secondaryTileData.Title = "created"; ShellTHesCreate(new Lri(@”/MainPage. ‘secondaryTiledata, true); > ‘alse { secondaryTileData.title = "Updated"; xanl", iting Relative), secondaryTile.Update(secondaryTilebata); lesAetiveTiles.Fiest() IconicTilebata data = new IconicTileData(); data. Iconlnage = new Uri("/icon.pne” data. Count = 85; data, snallcontnage ddata.wideContentl = "This is a test” data.uideContent2 = "Second line"; data. wideContent3 = "Third Line"; ‘le, Update(data); Ursking, Relative); nex Uni("/icon.ong", Urikind.Relative); Es importante saber que, en el caso de a actualizacién todos los valores que no indiqueras expt: citamente en la piantila se con- servaran con su estado anterior. De esta forma podemos actual: zar solo las propiedades que nos interesen en cada momento. @ ‘A continuacién,realizamos una com- prabecién muy sencilla: si secondary- Tile es null, ello significa queno exis. te ningun tie creado con esta URIy pode- mas crear el nuestro, lamando al méto- do Create de la clase ShelITile Este metodo tiene dos sobrecargas. La pri- mera viene heredada de Windows Pho- ne 75 yadmite dos parametros:la URI a la que navegaré el tle cuando el usua tio pulse sobre él y los datos del ile. La ‘segunda, que usamos en este ejemplo, admmite un tercer pardmeto de tipo bool {que nos permite indicar si soportamos onotiles de tamafo Large Siempre que deseemos crear un tle usando las piantilas FLipTi- leData, IconicTileData o CycleTiledata, debemos usarla segunda sobrecarga del métado Create. La primera sobrecarga solo admite tiles de tipo Stan- dardTilebata, jos usadas en Windows Phone 75. 5), por el contrario, nuestro tile ya cexiste,no usamos el metodo Create de Shel1Tile; en su lugar, al igual que ya hicimos con elie principal de la alice ion, usamos el método Update del pro- pio tile que hemos obtenido, Tambien podriamos decidir, si existe elie, elimi- narlo pars crear uno nueva; para ello usariamios el método Delete de nues- wa instancia de SheLITile, ec ena en Como hemos visto, el uso de los nue. vos live tiles en Windows Phone Bes realmente sencillo y nos ofrece muchas opciones con las que jugar a la hora de personalizar los tiles de nuestra aplicacién, tanto el principal come los secundarios. En nuestras aplicaciones Windows Phone 7.1, pademos acceder a esta Funcionali- dad e implementar los nuevos tipos y camafios de tiles siempre y cuando nos estemos ejecutando en Windows Phone 8.0 Para ello, haremos.uso de Reflection También tendiemos que actualizar manualmente algunas sec- clones del archivo WMAppMani- fest.xml de nuestra aplicacion Los pasos son los siguientes: + En primer lugar, vamos a editar e| archivo WMApphanifest..xml, Justo antes de! nodo App, aftadiremos un odo Appextra,como se muesiraen ellistado 3 * Acontinuacion debemos definirla pla- taforma ala que nos dirigimas (8 O}y comprobar que estamos en ells antes de intentar crear una de los nuevos tes (listado 4) + Siefectivamente nos encontramos en Windows Phone 8 o superior, pode. mos empezar a usa’ Reflection para crear nuesto nueva tle (listado 5} “Appextra xnlns= opPlatforaversion=".0"> iF (Coviroonent.0sVension. Version d= new Version(8, @)) ( 1 Ceeate your tile here Podemos analizar el codigo det lis- ado 5 dividiéndolo en tres bloques: + En primer lugar, las dos primeras line as de cédigo usan el método Get Type de Type pata obtener mediante Reflec- tion eltipo que buscamos; ene primer (ca50, FlipTileData yen el segundo caso ShellTile + Enssegundo lugar, usando eltipo flip TileDataType quis hemos consegui do,invocamosasu constructor y obte- hemos mediante reflexion una nueva instancia de FLipTiledata, que asio- amos a |a variable newTileData Lo siguiente entonces es establecer las propiedades esta instancia; para ello hemos ceaco unmetodo SetProperty (istado 6) que nos simpliica el abs. + Entercer y timo lugar, usamos Get- Method para obtener una referencia al método esiatico Create de la clase Shel1Tile En cancreto, aqui utiliza mos la sobrecarga que recibe res pad metros, Par tltimo, usamos el método Invoke para ejecuia’ el metodo, Como primer parémeua pasamos mul, dado el hecho de que Create es un méio- do estético y portantone requiere una instancia asociada. Como segundo parémetto, pasamos un artay de abje- tos con las valores a enviar al métado, Si elecutamos este codigo en un cispositivo Windows Phone 8 0 uniemu- lador de esta misma version del siste ma operativa, y hemos colocado todo de forma correcta, podremos crear un. live tile para nuestra aplicacién Win- dows Phone 7.1 que se comporte igual que un tile de Windows Phone 8 En todo caso, hay dos restriccio- nes en este uso que debemos teneren cuenta: + Enpximer lugar, paraunilesecundario odremos usar cualquiera de las plan- bila que hemes visto. Flip. Cycle leo- Enel Mundo tecnolégico existen muchos caminos. Blackslot te muestra E] MAS FACIl de recorrer. ‘Wate itera: Le le< elma) EERO 72 8 4€ (Eovirontent.osversion. Version { new version(8, @)) Type FLipTileoatatype = Iype.GetType("hicrosoft.Phone.shell.Fliptiledata, Microsoft.Phone"); Type shellTiletype “Type.GetType( "Microsoft. Phone. shell.ShelITile, Wicrosoft.Phone” var neaTilebata = flipTileDataType.Getconstructor(new Type] { }}-Invoke(oull); ‘SetProperty(ewTilenata, *Title", “New tile"); SetProperty(newTiledata, "Count", 66); SetProperty(nenTileData, “BackTitle", Wow tile back"); ‘SetProperty(newTlleData, “BackContent, "Tile created using Reflection"); SetProperty(nenfileData, "WideBackContent", "Tile content for wide tile"); sheLLrletype. etethod Anvoke(oull, new Object] { create", now TyoeE] { typeaf(uri), fliprileatatype, typeof(bool) )) ew Uri(@"/MainPage.xanl", Urikind.Relative), revTilebata, private static void SetProperty(object instance, string nane, object value) { var sethethod = instance.GetType() GetProperty(nane) GetSetNethod() setNethod.Invoke( instance, naw object{] { value }); } nic Pero para un ail principal sola pocremos usar una plantila Flip. Lo conirario provacaré una excepcién. + Por otra parte la primera vez que creemos 0 actua |icernos un tle las imagenes que le asignemos deben ser locales En siguientes actualizaciones, podemos sar imagenes locales o rematas; pero las primeras siempre deben ser locales. En Windows Phone 8, os five tiles han evoluciona: do hasta convertirse en una heiramienta muy poten: Le de expresion y comunicacién. Escogiendo la plan: tila conecta, la que mejor se adapte a nuestra apli- caciény 2 lo que deseamos transmitiral usuario en cada momento, podremos crear una experiencia de usuario increible ain antes de que nuestia aplica- clon se abra Ademés de mostrar cémo utilizar las plant llas de five ties disponibles en Windows Phone 8, hemos podido ver lo sencillo que es incluir estas novedades en nuestras aplicaciones Windows Pho: ne 7.1en caso de que no deseemas actualizarlas ain a Windows Phone 8, pero queramos ofrecer algunas de las ventajas del nuevo sistema. La mejor manera de subi lows Azure 5E Wine . 7 ¥ aventiarenacimiento vewwraventia.com ea! Programando para Windows 8 ‘Que Windows 8 es une revolucon, eso esté clara: pero lo mismo tenckia que rectiicer y decir ue la pantala de inicio de Windows 8 es una revolucén aunque a los usuarios de Windows Phone 7.x seguramente les resulte mas familar, ye que su revolucion empez6 un poco antes. No voy a hablar sobre las caracteristcas de la pantalla de Inia (con mayusculas] de Windows 8 bueno, un poco si pero mas que nada seré para saber qué harén nuestras aplicaciones creadas especiicamente pare interactuar con [o simplemente funcionar dentro de] esa pantalla de Inicio de Windows 8. De Io que si voy a hablar es de la creacién de aplicaciones pare esa pantalla de inicio de Windows 8 - Io que antes se conodia como aplicaciones estilo Metro, que ‘ahora son aplicaciones pare Windows Store (0 Tienda de Windows). ree cae Cen} Las aplicaciones para la pantalla de Inicio de Win. dows B Windows 8 Start Sereen), también cono- cidas como aplicaciones para la Tienda de Win- dows (Windows Stove), son un concepto diferen- / ions para pantalla de Inicio de Windows 8 aun- que es posible que alo largo de este aricuo ul ce algunas de esas defniciones. te, al menos para los que estamos acostumbra- ‘dos a trabear en aplicaciones de escritorio para ¢l sistema operative Windows Para nosottos ios desaroladoreslaciferencia ‘empieza por la forms de installa, ya que, salvo ‘que dispongamos del cbxtigo fuente y podamas compilar nosotros mismas,todas las aplicaciones ‘Appar x:lane="bottomdppBar” Padding="1,@,10,¢ Grid «StackPanel Orientation="Hordzontal” Horizontalaligment="Left"> «button Style="(StaticResource NaphppBarButtorstyle)" /> «/StackPanel> «StackPanel Orientation=*Horizontal” NorizontalAligmsent="Right"> Button Styles" (Staticnesource Honokppdarsuttonstyle}" Button Style="{StaticResource HelpAgpBarButtonstyle}" «/StackPanel> «/Page.BottonsppBar> «style x:Key="Maptpplarauttonstyle” TangetTypes"Buttengase” BasedOn="{StaticResource AppBarButtonStyle)"> ‘Setter Propertys*hitonatiorProperties.Autonationid” Value="WspippBarButton"/> ‘Setter Property="AutonationProperties.Nane" Yalue="hap"/> ‘Setter Property="Cantent* Value="&énE1C4; « Style wokeyvoetpparuttonstyle Target ype="Buttonlase” BasedOn="{StaticResource AppBarButtonStyle}"> “setter Propertye"hitontenfroperties,autontionId® Values"Honetppartitton/> ‘Setter Proprtys"hutontionPreprties.tane™ Valuee"Hne”/> ‘Setter Proprtys"Contest* Value ixE10F;"/> «(stne> «Style x:Key="HelpappBarButtonstyle™ TargetTy BasedOn="{StaticResource ApplarButtonStyle)"> «Setter Property="AutonationProperties,Autonat ontd* Values"HelpAppBarButton"/> «Setter Property="AutonationProperties.None” value="Ayuda"/> «Setter Property="Content* Valu « ccomentados; por tanto,tendremos que ido dejarlos as para que veamos coma hacer nabisquecaenesefiheoypone- _asignarle el texta a mostiar mediante los ea delos comentarios. cédigo; esto nos serd atl para el caso En el istado 2 vemos la definicién de que nuestra aplicacin Ia utlicemos de los tres recursos. En el timo estilo en atrosidiomas. herealizado uncambioenla propiedad ——_—Enlafigura 3vernoselresutada mos- Value para quemuesteeltexo.en cas- _trado ene! cisefiador de Visual Studio ‘elano Lomismo padtiamos hacer con 2012 después de "sacar" esos recursos los ottos dosestios cambiandoMappor —_deloscomentaias y de modifcareltex- Mapa y Hone por Inicio, pera he prefe- to amositar en ung delos botones. @ >) Mostrar un cuadro de dislogo al Cs pulsar en un baton afnadir cédigo al baton de ayuda Figura 3. Le barra de ie apleacian en mace elzeAo cade.) para que nos muestre un cua \ ) diode dislogo al estilo Windows 8. fa terminar este articulo, vamos a cer Modificar el texto de los botones de Ia barra de la aplicacién por 11 para saber cuando entranos por prinera ver en Ontavigatedto misiio tle cadtige bool prinerontavigatedTo = false; protected override void OmavigatedTo(Navigationtvertares e) Para moaifcar en tiempo de ejecu- { ion el texto que mostrarén los botones, 4 (primeronnavigatedto) debernas asignar el texto ala propiedad AutonationProperty.Nane del Doin, Para ello utlizaremos e! métode estati- firediyae ins Caton co SetNane ce [a clase AutonationPro- 1} aqui lo haconos dinectanente... perties que esté definiaa enelesnacia ‘otonstionProperties.SetNane(HoneButton, "Inicio"); cde nombres Windows UE.Xan] automa ee eee aaa AutonationPropert ics Setnane(HelpButton, “Acerca de"); tion. ese metada le pasamos como primer parametio el contiol al que que- remos acceder,y@ continuacion el tex to o valor a asignar. Por tanto, necesi 2 rar en los batones en tiempo de ejecuci tamos darle nombres a nuestros boto: nes. EI nombre de un control pademos prinerOnavigatedTo = true; defirtio utiizando x:Name y asignan var FL +e Windows. Applicat iombodel, Resources. fes0urceLcader()i dole el nombre que deseemos darle Los nombies ue he usado en este ff] imatlotrontn etatton, tro hce) ‘ Auton ooPrperies,SetSane(Rapauttn, 1. GetSteing("Mapa")); Hlenip io Bor Mapeiit tony homeBit tony ‘Automat LonProperties.SetName(HelpButton, rl.GetString("Acerca")); HelpButton, Eleédigoa utlizar para reaizar esac a a a eS asignaciones sera algo parecida al que podemos veren el lstado 3, en el cual se asigna texto de forma directa, pero La clase Resourceleader tiene un constructor que recibe un parémetro de dicho texto podria proceder de un fiche- tipo string. Con ese constructor podemos acceder directamente al fichero. oderecursos (en elistado4veremos ff que tenga el mismonombye de la cadena incicada Por ejemplo’ Resource- unziempla de ura asonacone Pale Loader ("Botones”) utilizara el fichero de recursos Botones.resw Aunque sel tmto almapenadaien. unt fiche lohabitual es usar los recursos para localizar nuestra aplicacién. recursos, aunque sin entrar en detalles de cémo est definido, ya que eso seria tema para otro articulo posterior} En el listado 3utlizamos unavariable quenos ff Para agregar un fchero de recursos a nuestro proyecto debemos usar el tipo servia paranovepetiriaasignacioncada |) Resources File (esw] (Archivo de recursos) que no tiene nada que ver con vez que le pagina se cargue, algo que ff) eltipo Resource Dictionary Diccionario de recursos} cue seria! ipo de iche- en una aplicacion normal ocurtira cada 10 afadir para definir estos de forma similar 2 como se hace en el fichero vyez que volvamos a la pagina piincipal Standardstyles xan] (Mainpage) axze © incursién por la creacion de aplicacio. roe nuevo tipo de a in llegado Windows 8. reanticulo ees mos vis cin para la Tienda d private async vold Helpsutton Tapped 1(abjact sender, Tappedioutecevertargs ) que mostramos u ion con una se que pasteriorme’ var dig = new fessageDialog(*Ejenplo para la revista dl ninero 108"); dig.Title = "Acerca de aplicacin para dN #100"; avait dlg.Showssync(); n el aot trado, tanto mediante cédigo XAM como con cddiga C#, y en este a eee en eee ima ESeeiLEnES metodo que intercepte [anto el evento Click cc mos el cédigo en el que invocamos al metada asinciono ShowAsyne de | Ti Windows por medio de ficheros se MessageDialog cefinida enelespa- _(enlafiguraS vemos comosemostratia recursos Finalmente, hemos mostra: cio de nombresWindows.UI.Popups. _en'el simulador), que como sabernos.__ doun mensaje de dislogo totalmer Com antes, el cuadio siempre (o casi siem strado es al estilo d o de las aplicaciones para la alla completa pagina de Inicio de Windows 8. a Secnrd {1} Conocelinclws: http: /ulndavslcrosoft con/es-FS/ulndaus-8/bastes (2) Aateoar tas dele apicacin http://asdn icrosoft com/es-e5/1ibrary/ieas/apps/xanl 81232. 35px (1 Bara Gea picacén superior http: /msdnaicrosoft.can/es-es/1ibrary/vindaxs/apps xan /HHT61S00.aspxfflat_systen. {4 Diseho ie comandos para apicaciones de a Tienda Windows http: / stn crosoft.can/es-es/Library/uindaes/apps xan /AN761499.aspx oNM Micro-datos Semantica real en la Web - @ introduction de algunas nuevas eliquetas y alributos en HTMLS esta empezando 2 apottar 2 los deserralladores web un conjunto de herramientas que aftaden significada real 3 sus confenidos de cara a los buscadares y nos ayudan a que estos contenidos sean catalogados adecuademente. Pero un verdadero catilogo requiere basarse en una jerarquia previa bien definida, tl y como la que se Use en Biblioteconomia, Esa es la novedad de los ‘micro-datos, y vamos 8 ver cémo este aspecto ~bastante desconacido adn- del esténdar puede aportanos mucho desde el punta de vista de la SEQ [Search Engine Optimization) En una definicion répida, podemos decir que los micro-datas (\icracaia| son conjuntos de atti butos y valores que se aplican a un contenida ‘web normal para descibir ese contenido y apor- ‘arun significado Se ata de unaidea similar ala que alimentd la creacion de XML, en cuanto a que propone acompariar la informacién con una paite de len: ‘quaje de marcas que la describa,¥ esta descrip cién ne solo esté dirigids @ las motores de bis. ‘queda yalNeb en general sina también alos se- res humanos que pudiesen acceder a ella en for ma de cédigo fuente Seguramente e! lector podrd preguntarse si esto tiene que ver con algunas de las iniciatvas con las que, piobablemente, se habrd cruzado en sus lecturas sobre las nue- mer Formato o esténdar propuesto con miras a con: ‘seguir ese abjetivo De hecho, existen propuastas previas que no han llegado a cuajar de forma po- ular, por mas que las entidaclesresponsables las hayan publicado en forma de estandares 0 estén ‘soportadas por algin navegadr. Tales el caso del Marco de Desaiipcion de Re- cursos (Resource Description Framework, RDF}, ‘que proponia metadatos en Web y que desarrallé el World Wide Web Consortium (W3C} Se ata de Un lenguaje de propésito general pars represen- tara informacién en la Web (un metadato), sobre el que se hicieron variaciones posteriores, como la realizada por el organismo de defensa nortea- ‘mericane DARPA, con ellenguaje DAML que apor- taba ontologia e inferencia basados en ROF. Micro-formatos ‘Tampoco debe confundirse esta iniciativa con la idea previa de los micro-formatos [2,3], que per- Imiten defini certos fragmentos de marcado con. Paes jcorcringperdte Fecatorcechb cris de Allien WP dC vas propuestas en la un cantenida semantico especialy que nacieran Web. Noes la primera también como una forma de afiadir elementos de vez que se habla de marcado simples a datos legibles por seres hu- semanticaynoeselpr- manos, tales como eventos, detalles de contac- 105, oubicaciones dento de una paging ‘web, de forma que se faciltase sutrata miento informatico: extraccién, indexa- ion, biisqueda, madificacion, etc. Entre ellos, cabe destacar las micro-formatos para informacion personal las hCard) y los calendarios (healendar, (4) Asipues.tras varios intentos pieviosy no aca iteratura de anticipacién, legamos alaidea de los micra-datos. Y debemos entenderios como vocabularios encam! nnados @ proporcionar la semantica, 0 el significado de un elemento, que ademas pueden ser extensibies Los desarrolladores web pueden di sefar un vocabulario personalizado © uilizar vacabularos de uso disponibles enia web, La entidad que ests detiés de la propuesta que los buscadores ac- tualesya estan urlizando es Schema.org «que ha publicado en su sitio una colec cién de vocabularios de marcado coménmente utilizados, que incluyen entidades de uso comiin que san acep: tadas como validas de cara a su inde. xaci6n y relacién con otras y dentio de las categorias de busqueda: persona, evento,organizacién, producto, revision, oferta, y un larquisimo excétera Los principales motores de bus ‘queda,como Google, Microsoft y Yahoo, se basan en este marcado para mejorar losresultedos delas busquedas Se ani- maala comunidad a que colabore con nuevos vocabulatios descriptvos, aun- ‘que para un gran niimero de propositos es casi seguro que pademos encontrar los formatos adecuados -ya construl- dos- para describir nuestra actividad 0 lade nuestra empresa ‘Comentébamos antes que los busca- dotes ya estan utlizando esta tecno- lgia. Cémo averiguarlo? Bueno, bas- ‘acon observar os resultados que nos ofiecen ciertas basquedas que inclu- yen sitios que utilizan este formato para observar la diferencia, Par ejem- pl, si buscamos "mexican food, Al- burquerque New Mexico" en Goodle, este buscador incluye unas informa: Clones adicionales (rich snippets) don. de apreciamos una clara diferencia en- tre las dos entradas que muestra af gual Observemos que no solo tenemos la informacion habitual sino tambien re- ‘sultados de opiniones de os usuarios, 0 intervala de precios. Pero los resultados pueden llegar a Ser mucho mas signif ‘catvos, como sucede cuando buscamos ‘en unsitio de masica coro Last FM por «el conacico bluesman Miles Davis figura 2).En este caso no solo se nos ofrece tuna descripcion de fo encontrado y del rmisico, sino de distintos elermentos que ‘se encuentran disponibles en ese sitio ‘en elaci6n can él las canciones mas: pulares},y datos relacionados con ellos {@uracion y élbum al que pettenecent, n- ‘liso, las canciones aparecen en forma de un enlace que nos llevara ala pagi- na de reproduction del tera. ve ele loca yahoo.com » Recut 1 > Restawartes y Bares Maxicane Soh ee 72 opiniones -ntnalo do precios: § os Cuates Hew Mexican Food Albuquerque reviews by real prope. Yelp ‘82/ way ond, commend and talk abet whats greta nt 30 get Restaurants Trad esta pana ‘0 of 218 - Mexican Restaurants in Albuquorquo, lM or Yhco! Local Get Ratings & Resiews on Mexican Restaurants with Photos Maps Dring ah and Figura 1. El primer resulfado es Indexed por Google utiizende micr-datos vee losin esinusichlesrDavis Iles Dewey Dv I. conocido atsticaneste come Miles Davi, Aton. 25 de mayo Figure 2 En este caso, Google ofrece una categorizacion de cantenidos: 2100 6 Enel sto oficial Schema.org podemos ver toda la documentacidn relacionada contos micro-datos, unto con ejemplos de uso El cédigo fuente que debemas afadirutliza la nueva familia de atribu- {os dten* definida en HTMLS para ex- presar esa informacion que describe el contenido, La lista completa de atibu- tos para expresar esta meta-informa- clon consta de itemtype, itemprop, itenid itenscope.e itenref,que,es- pectvamente, sirven paraindicarel tipo de elemento, cualquiera de sus propie- dads de interés el identcador [como un numero ISBN,en el caso de os libros que vemos en lafigura 3) el mbito que abarca la definicidn, ysihace referencia 2 otro element de marcado Estos ati- bbutos pueden adicionalmente comple- ‘mentarse con etiquetas neta Tales atiburos estan presentes des 4e el inicio del soporte de HTML en as dos versiones mas populares de Visual Studio, y con especial énfasis en Visual Studio 2012, como podemos ver en la ceptura del editor HTML de una pagina Web quesemuesiraenla figura3.Como ss puede apreciar,tarto los aiributas de micro-datos, como los valores posibles 2 asignar -en muchos casos.,son reco- nocidos perfectamente por e IDE, que ‘nos oftece ayuda Intellisense respecto a ellos en cualquier documento HTML, ASP NET Web Forms, ASPNETMVC, etc Bien entendido que la inclusion de es- tos micro-datos no tiene absolutamen- teninguna relevancia visualen siy solo se manifesta cuando nuestra pagina es indexada porlos motores de busqueda para que en adelante éstos nos pre- senten una informaciénrelacionada con ella, como hemos visto en las primeras figuras. Sever cmcce bcs eed Enumeramos a continuacin con mas detalle el significado y Ia utilzacion re- comendada de cada atributo al descr bir un Bloque de marcado que aporta significado con micto-datos. + itenscope’ "Marca" un contenedor indicando que, hasta su cierte, to- das las etiquetas contenidas en él estén relacionadas con el rem que desctiben, + ittemtype: Quiza el més importante Establece qué clase de item se esta descrbiends, Uiliza una organizacién taxonémica definida por Schemaorg ensu pagina de dacumentacién, + Stemid Se utlza en los casasen que elelemento a describ pueda seriden- ificado de forma Unica (mediante un URI, por ejemplo}, como una pagina web, el ISBN de un libro 0 el ONI de una persona + Stemprop: Usado para cada una de las propiedades que se quiere describir {por ejemplo, en un libro: su titulo, su precio, su numero de paginas, a edi torial que fo publid, etc itor escistor ofthe er Figura 4. Fropmento de lo descripcion del tem “book” en Schema.ora cu chasenateta” Leh Stamcope enkde"un {ss 978-34530286-1 ‘stony asameype="no: sta cr/Bi04"> “SPEEDED: caper Sanprope"snbo™BM0-L4 938200. 8epnsc > Figura 3: Soparte de mierodotos en Visual Stucho 2012 + dtemref. Puede ser utlizado para in- dicar que otto elemento fuera del m= bito establecido por étemscope tiene tuna relacién con éste, atin estando en otra zona de la pagina Web, Con respecto a dtemprop, hay que advertir que, en algunos casos, su posi ble valor ya esta establecicdo por i taxo- rramia, como es el caso de un libro, taly como verios ena pagina dedicada a este tipa de tem ene! stio Web de Schema.arg c= © de especificar versiones sopontad:
brerias, ete cing itemprops"inge" sre="catcher-in-the-rye-book-cover. jpg” /> 5 The Catcher in the Rye - De esa forma, en el aiticulo ‘New Vo Ccabularies for Technical Publishing" (6), Hass Warket Paperback by 2.D. Salinger del blog oficial de Scherma.org. se pro- ‘tiv dtemprop-"aggregateRating™ itenscope ponen soluciones para a matca seman tentypec"http://schena.ong/Aggregatenating"> stars = tica de versiones (lstado 2), de referen ashen MEMO evescount” 377 /spam reviews Cias a librerias (Istado 3), 0 de descrip. ciones de cédig alojado en un sitio web (istado 4, donde, como vernos.se com- “fais plermentala descripcionindicada en ati butos, con otros elementos de tipo ede 1 Fregmento del cigs fuente que colatioran en aportar mas contenido semantico a lo publicado. Ademas del soporte que el usuario Puede obtener desde el propio VisLal St ‘neta itemprope"currentProduct™ content=".NET Framework 45° /> dio Uotras herrarrientas, como WebMa tuk existenherrarienias online que pue- den ayudar en la migracion de sitios exis tentes deforma que aprovechen esta ca raceristca y que sugieren algunas tans: Seater proromminaerie caren renee Formaciones, como Live Microdata [5] Aitenprope"assenbly" contents*nscorlib.d11" /> SE ee oa siti susvinrerscne J '89°er ener ymin Some : te delesténdar HTMLS, que puede apor- ae itemprop="sampleType" content="Visual Studio solution(SLN)" /> tarmucho més valor SEO a nuestros si- abandonar €5a6). (figura 4}. De hecho la propia dacumen: tacién que enconamos en estas pig nas ncue agmentos de cécigo oro- EL] “The Semsnic Web An nnacicton”nep/Snfoerh et /2981 stare ‘ctpo pars expicarcémopueden gre sa¥se as ide2s,conceptos,entidades citemscemaneresemartiatalycomo E31 Alsop. “Mlsefomats:Empowsing Your Nap fr Yeb 20" sean endl cddia lenis benscnone tp Pon ogee eka about crores hike LAEghnct. pagina ates cada (tac) Ls propuesta ademas anima 2165 P59 Lstacompeta depos dsponblesen a jeraraulade Schema readoreswebaiiizarestascategoriss — epe/rchem.orfanc/ Fal hem encualquer tino de contenica,y de esa forma promover vas exegarias Ente clas cabladestacar lade los formatos E71 "Le Mout" nee: //Yochipog/nterodease/1ive cdemarcado para cuando una pagina in- chive cécgo fuente yla manera comecta Ni Caxmp Buenas practicas de codificacion pera capas de acceso a datos de aplicaciones II!) En nuestras eniregas anteriores, tado lo que hemos visto ha sido un deserralo manual de le capa de acceso a datos. Decimas que es un madelo de desarralla manual porque son los desarroladares los responsables de implementar tacos las elementos que componen esta capa. Ya bien decidemas utlizar consuttas adhoc, consuls paramelrizadas 0 procedimientos almacenados, somas nosotros {uienes tenemos que disefer dichos elementos y progremer el cidiga NET neceserio pare efecutarios y recoger los resuitados. Este mes nos ceniraremos en un modelo de desarrollo ferente el basado en la ullizacién de un sistema ORM [Objec-Retalional Mapping) El desarallo de capas de acceso a datos con ORM NO es otra cosa que una técnica de programacion ‘quemapea.unabasede datos relacionala una serie de objetos que pueden ser manipulados desde las lenguajes de programacion orientados a objetos utlizados tradicionalmente hay en cia para eldesa- roll Lo que se persigue con los ORMes Faciitat yautomatizar el proceso de desarollomanual que ‘velamas en nuestros aticules anteriores, RENEE ‘Cuando se trata de desarrollar aplicaciones de ‘acceso a datos hay que teneren cuenta que inter- vvienen dos elementos fundamentales para el desarrollo de dicha aplicacién (figura I.E prime- 10.85 elaplicativo, odo lo que sean [as lineas de digo y los elementos necesarias para ensam- bar la apicacion El sequndo es labase de datos, donde tendriamos todos fas datos a los que la aplcacion necesita acceder. Vervique Puig Novsetios ‘ercen SOI MCT Wiaosoh Cette Ta rs)y MAP vices Acre fessor 200, (aa Pafrm Enghesren Sle MTP de SOL SereryMAP 2022 q [4 Figura 1 ejemplo de arquitecture de apiicacion Debido a esta separacién de elementos, nos lencantrames con dos perfiles muy diferenclados para el desarrolio de dichas aplicaciones: 1. Desarrollador £specialistas en lenguajes de pro- ‘gramacion deciarativos u orientados a objetos, como por elemplo C, C++, VBINET, Ci, Java, etc 2. DBA (Database Administrator) / DBD (Data- base Developer) Fspecialistas en pragrama- ign y desarrollo orientados a base de datos mediante el uso del estandar SQL El pel del desarrollador se encar- d1.DepartmentID == depID); son ‘tx. Departnents Deleteobject(4); ‘etx Savechanges(); |. Instanciar el EDM, como si fuera una base de datos virtual. 2. Insertar esta nueva entidaden|acolec cién de departamentos del modelo [base de datos virtual} Esta base de datos vitual poseevariascolecciones _faria el cédigo T-SQL del listado 3,en el Nuevamente, vemos como ambas de entidades, y cada coleccién ofte- que pademos ver como se ejecuta una __sentencias se implementan mediante ceunmétodo denominado AddOb- sentenciainsertparametizada median- _sentencias parametiizadas ejecutadas a ject, que sirve para insertar nuevos tee! procecirmiento'sp_executesqlioque _travésclel pracedimiento sp_executesql, registros, ofiece todas las ventajas que hemos lo que ofiece todas las ventajas que 3 Ejecutar SaveChanges Este métoda _comentado al estudiar los patrones de hemos comentada al estudiar ls patro- hace que secconfimelainsercién yse bajo nivel en articulos anteriores ines de bajo nivelen articulos anteriores. ejecut acarenceenla base de datos Borrado 5jlanzamos el SQL. Profiler y capt Ao d = new 080093 remoselcédiga T-SQL quenos gene _—Paravealzarelborado de unregis- ff. ¢.Deletevepartnent(s); EF, veremos que paralalamadaenC# —twodela base de datos tenciemos el cad uesemuestiaenellistado2,segene- _goquesepresentaenellistaco4 Elcod SolidQ Business Intelligence Consulting Mision Critica 7 pal Training Gestion de portales ° | Seleccionar los datos de la entidad ~ seleceiona la entidad a nodificar on ide5 para cargar el objeto con ia exec spevecutesql N’SELECT TOP (1) informacién actual [etn L Lage tet [eer 2. Meciante una simple asignacién cam. ph feictecostoeect de ene biar et nombre del departamenta, WERE [Extentt).[DepartnentID] = fp_ing_', W'gp_Ling_@ Ant",O>_Ling_es Una vez mas, pademos ver como ‘ambassenrencasse mmpiementan median ‘esentencias parametrzadas ejecutadasa ~ hace el borrado exec sp_executesgl W’delete [dbo] [Departnent] wach tpigaetuertse] 6 Bic aa ne oo ‘raves del procecirriento sp_executesqh 0 queaseguratadssias ventajasquehemos Ustad 6 ccomentado alestuciarlosparones debajo nivel en aticulos anteriores. public vod UpdateDepartnent(int depID, string nex mane) ( using (Conpanysalestntities etx « neu CoopanySalesEntities()) solafeeni aie { Departaent d= En nuestra proxima entrega, nos introdu= CtX.Departnents.First(d1 => ol, DepartnentID == depl0); Cciemos de lena en las distintas técnicas name = new ane; ‘omecanismos que nos proporciona EF Percent para realizar consuitas sobre nuestias, } bases dedatos Veremos que alterativas hayy como seuutizan y haemos.una com parativa de rendlimientos para ver cusl es més éptima.e Mosificacian El cédigo para realizar la modifica Dai a se IC én de un registra seria similar al del is- eee Sac c lado 7, Parala modificacién vemos que noes necesario invocar a ningun mete. do de actuaizacion, simplemente reali zamos los siguientes pasos: = selecetona la entidad a nedificar |, Seleccionamos a entidad a modificar exec sp_executesgl N'SELECT TOP (1) (através de sui [Extent2].Departnent10} AS [DepartmentD), 2. Modificamos la entidad (en este caso, [estent2]. mane] AS (nane] FROM [abo]. [Department] aS (Extent) WERE [Extont1].[DepartmentI0] = é_ling_2', N'@>_Aing_s int’ @p_ting_055 solo el nombre} 3, Llamarios a SaveChanges para con- firmar la operacién. = hace 1a modificacion Capturando con el SQL Profiler el cédigo exec sp_executesgl N'update [dbo] [Department] ‘generac por EF [istado 9} para la modi- set [rane] = @@ fiacién de unaentdadtal y como semues. vere ([DepartnentID] = @1)", ra enelliszado 8 veremos coma en este N'@@ varehar(3e),@2 int*,@0="Dep nod ficado’ f-5 caso se realizan dos operaciones Objects, avalados por nuestras Certificaciones oficiales Olen see ere cert a Intelligence: desde la inclusion de reporting en Set kia on eet} Dee amet eae ce formacién, consuttoria, desarrollo laves en mano, re tet ee ee eo Peco ee ara pproporcionaremos la mejor solucién para gestionar us proyectos de desarrollo de software @certia Se ee Embarcadero RAD Studio XE3 {Il) Prism El mes pasado comenzamos la diseccién de la mas reciente version de la suite de herramientas de desarrollo integradas de Embarcadero, RAD Studio XE3, presentando el soporte para los lenguajes de programatién que permiten desarrollar aplicaciones de cédigo native, Delphi y C++ Builder. Este mes continuamas con la presentacion de la parte del producto que tiene que ver con el desarrollo de aplicaciones {servicios basados en cécigo manejado, canacida como Prism XE3. Aroetevie Hernsaces ‘Sifereb-pre en arceiBas Reser ech CL Red Breve descripelon Suite inteayada de desarrollo que inclye editores,cormpila: ‘ores tiple ibrerias,marores de ges lion de datos enlazacores, cepuracores y ottas herramientas de producividad para ciferentes lengusjes y marcos de trabajo: Delph y C++ Buller (cdigo nativoh Prism (INET Framevortey Mono) y HTMLS Builder (HIMLS/lavaScnpt) Fabricamte Embarcadero Technologies (San Francisco, USA} Distibuidor en Espaita Danycof Internacional Web hetp://wis.danysoft. com Teléfono: (+34) 91-5638683. Piismes una solucién integrada basada fen un lenguaje de progiamacion des- cendiente de Pascal y Delphi llamado Oxygene y su correspondiente compi ladora CiL (Common intermediare Lan- guage) Se trata de un lenguaje con mas de una década de existenca,que ha sido licenciado por Embarcadero ala empre 53 RemObjects [http://ww.renob- jects. com/} y que offece précticamen- te tadas las posibilidades actuales de C# 0 Visual Basic [en lo adelante, VB), incluyenda genéricos, métodos anéni- mos y consultas integradas (LINQ), ‘ademas de otras caracteristicas que en NET se implementan mediante librrias del frameworteo de terceros, Addspenb tambien integyacion con eh como las tuplas, construcciones para la computacién paralela o caracteristicas de Programacién Orientada a Aspectos Como parte de Embarcadero RAD Stu dio XE3, se suministra una excelente integracién con Visual Studio 2012 (en lo adelante, VS 2012), de manera que sea posible desarrollar aplicaciones y servicios con este lenguaje como si de Uno de los lenguajes de Microsoft se watara. Gracias fundamentalmente alas bon- dads del cédigo manejado, el desarto llormut-platforma se hace ficon Prism vy Oxygene, y siempre que las apicacio- res y servicios creados con estasherra- Tientas usen los subconjuntos adecua.

You might also like