53

Click here to load reader

SFD - C# para a comunidade

Embed Size (px)

Citation preview

  • 1. C# para aComunidadePaulo Ortins

2. Quem Paulo Ortins ? Trabalho com software desde 2010 MTM Tecnologia Comecei a me envolver com comunidade em 2011 Aprendiz de blogueiro (pauloortins.wordpress.com) Aprendiz de promoter (#horaextra e Coding Dojos) Twitter : @pauloortins Email : [email protected] 3. Quem o C# ? Linguagem de programao criada pela MS no incio dos anos2000. Atualmente na verso 5.0 Orientada a objetos, mas tem caractersticas de linguagemfuncional. Fortemente Tipada embora tenha suporte a variveisdinmicas 4. Como surgiu a idia dessa palestra ? Comunidade C# pouco atuante nos eventos Comunidade, como um todo, no tinha muito interesse por C# 5. Ausncia de projetos opensource 6. Frameworks de Testes NUnit (http://www.nunit.org/ ) MbUnit (http://www.mbunit.com ) xUnit (http://xunit.codeplex.com/ ) SpecFlow (http://www.specflow.org ) 7. Frameworks de Mock Moq (http://code.google.com/p/moq/ ) Nsubstitute (http://nsubstitute.github.com/ ) FakeItEasy (https://github.com/fakeiteasy ) 8. Frameworks de DI Castle.Windsor(http://www.castleproject.org/projects/windsor/) StructureMap(https://github.com/structuremap/structuremap) Spring.NET (https://github.com/springsource/spring-net/) Ninject (http://www.ninject.org) 9. Frameworks ORM NHibernate (https://github.com/hibernate/hibernate-orm) SubSonic (https://github.com/subsonic/SubSonic-3.0) 10. Frameworks Web FubuMVC (https://github.com/DarthFubuMVC/fubumvc) OpenRasta (http://openrasta.org/index.html) Nancy (https://github.com/NancyFx/Nancy) 11. No se pode usar C# no Linux ouno MacOS 12. Mono uma implementao open source do .NET Frameworkbaseado nos padres do ECMA para C# e para a CLR. Permite rodar o .NET em ambiente Linux, MicrosoftWindows, Mac OS X, BSD, and Sun Solaris, Nintendo Wii, SonyPlayStation 3 e Apple iPhone. 13. Histrico Criado por Miguel de Icaza em 2001, como uma forma dedesenvolver aplicaes desktop para linux utilizando C#. Devido a um problema em desenvolver um cliente de emailem C. 14. Mono O mono hoje suporta praticamente todo o framework .NET(at a verso 4.0), exceto WPF, Entity Framework, WF e WCF(possui uma verso limitada). Usamos o mono em nossos devices sem nem sabermos ! 15. Exemplos de Aplicaes usando oMono The Sims 3 da Eletronic Arts. 16. Exemplos de Aplicaes usando oMono Unity 3D, ferramenta de desenvolvimento de jogos para iOS,Android, Browser Games. 17. Vdeo gerado com Unity3d 18. Compatibilidade MoMa (Mono Migration Analyzer) 19. MonoDevelop No um Visual Studio mas... Foi criado em 2003, como um fork do SharpDevelop, IDE opensource para .NET 20. MonoDevelop 21. A Microsoft no parceira dacomunidade 22. MS e Comunidade Programa de MVPs MS tem se esforado para se aproximar da comunidade Suporte para outras linguagens rodarem no framework .NET 23. MVPs Programa utilizado para premiar os profissionais que mais sedestacaram junto a comunidade durante o ano. Manter um contato entre a comunidade e o pessoal da MS. 24. MS e Comunidade Apoio a projetos open source: jQuery Knockout.js SignalR Reactive Extensions NuGet Package Manager MVC4, Web Api, Razor, e o EntityFramework vo serdesenvolvidos junto com a comunidade em um repositrio Git Codeplex 25. MS e Comunidade Suporte oficial para plataformas open source no Azure Ruby PHP Java Em abril apareceu na lista das 20 empresas que maiscontriburam com o kernel do Linux 26. Linguagens que rodam noframework .NET Boo IronPython IronRuby F# J# IKVM.NET 27. OK, o C# legal ! O C# est aberto a comunidade. Eu posso usar C# no meu MacOS e no meu Linux. Mas por que aprender C# ? 28. Features Legais da Linguagem Propriedades Inferncia de Tipos Inicializao Simplificada Extension Methods LINQ Variveis Dinmicas Parmetros Opcionais/Nomeados SignalR 29. Propriedadespublic class Linguagem {private String nome;public String getNome() {return this.nome;}public void setNome(String nome) {this.nome = nome;}} 30. Propriedadespublic class Linguagem {public String Nome { get; set; }} 31. Inferncia de Tiposint numeroInteiro = 1;List lst = new List();E se pudessemos fazer desse jeito ?var numeroInteiro = 1;var lst = new List(); 32. E nesse caso ?Dictionary hashMap = newDictionary();var hashMap = new Dictionary(); 33. Inicializao SimplificadaPerson person = new Person();person.Nome = "Paulo Ortins";person.Idade = 23;E se pudessemos fazer...var person = new Person() {Nome = "PauloOrtins", Idade = 23}; 34. Inicializao SimplificadaList lst = new List();Person paulo = new Person();paulo.Nome = "Paulo Ortins";paulo.Idade = 23;Person obama = new Person();obama.Nome = "Barack Obama";obama.Idade = 51;lst.Add(paulo);lst.Add(obama); 35. Inicializao Simplificadavar lst = new List(){new Person(){Nome = "Paulo Ortins", Idade =23},new Person(){Nome = "Barack Obama", Idade =51}}; 36. Extension Methods Mtodo para obter os trs ltimos caracteres de uma string.public class StringUtil { public static StringObterUltimosCaracteres(String string,int numeroCaracteres) {int ultimaPosicao = string.length();return string.substring(ultimaPosicao - numeroCaracteres , ultimaPosicao); }}StringUtil.ObterUltimosCaracteres("testando",3); 37. Extension Methodsstatic string ObterUltimosCaracteres(this string s, int numeroCaracteres){return s.Substring(s.Length - numeroCaracteres,numeroCaracteres);}"testando".ObterUltimosCaracteres(3); 38. Extension Methods Com um pouco de criatividade...Pessoas.ComIdadeIgualA(30).NascidasNo("Brasil").MorandoEm("Miami"); 39. LINQ Language Integrated Query Feature que nos permite fazer consultas sql-like em colees: Em memria Em SQL Em XML 40. Exemplos de Uso do LINQ Buscar adultos em uma coleo de pessoas// Usando Query Expressionsvar adultos = from pessoa in lstPersonwhere pessoa.Idade > 18select pessoa;// Usando Lambda Expressions/Dot Notationvar adultos = lstPerson.Where(x => x.Idade > 18); 41. Exemplos de Uso do LINQpublic static IEnumerable Where(this IEnumerable source,Func predicate ); 42. Exemplos de Uso do LINQ Ordenar uma coleo de pessoas pela idade// Query Expressionsvar pessoas = from pessoa in lstPersonorderby pessoa.Idadeselect pessoa;// Lambda Expressions/Dot Notationvar pessoas = lstPerson.OrderBy(x => x.Idade); 43. Exemplos de Uso do LINQ Agrupar pessoas por idade// Query Expressionsvar pessoas = from pessoa in lstPersongroup pessoa by pessoa.Idade;// Lambda Expressions/Dot Notationvar pessoas = lstPerson.GroupBy(x => x.Idade); 44. LINQ to SQL Se relaciona muito bem com frameworks ORM comoNhibernate e Entity. Permite usar cdigo C# para fazer consultas no banco. 45. Exemplo Linq to SQLvar adultos = lstPerson .Where(x => x.Idade > 18);SELECT * FROM People where Idade > 18 46. Exemplo Linq to SQLvar pessoas = lstPerson.OrderBy(x =>x.Idade);SELECT * FROM People Order by Idade 47. Variveis Dinmicas C# implementa variveis do tipo dynamic, que so variveisque no possuem tipo definido em tempo de compilao Interoperabilidade com as outras linguagens que rodam naCLR.dynamic variavel = "ola";variavel.Soletrar();variavel = 10;variavel.Somar(); 48. Parmetros Opcionais/NomeadosLerArquivo("caminho", "paulo");LerArquivo("caminho");public void LerArquivo(string caminho, string nomeLeitor){}public void LerArquivo(string caminho) { string nomeLeitor = "paulo";} 49. Parmetros Opcionais/Nomeadospublic void LerArquivo(string caminho, string nomeLeitor = "paulo") {}public void LerArquivo(string caminho, string nomeLeitor = "paulo", string local = "brasil") {}Eu quero alterar apenas o local !LerArquivo("caminho", ?????, ????); 50. Parmetros Opcionais/NomeadosLerArquivo(caminho: "caminho");LerArquivo("caminho", local: "estadosunidos");LerArquivo("caminho", nomeLeitor: "paulo");LerArquivo(local: "alemanha", nomeLeitor:"pedro", caminho: "caminho"); 51. SignalR Framework que usa o HTML5 para prover aplicaes emtempo real Conexo Persistente Pub/Sub 52. DotNet Salvador [email protected] #horaextra Encontros tcnicos 53. Concluindo... Objetivo da palestra era mostrar que: a comunidade est bem movimentada, existem muitos projetosopen source rolando, e que podem ser copiados para outrasplataformas. a stack .NET tem evoluido bastante nos ltimos anos Obrigado ! E no esqueam de comparecer ao #horaextra todas assegundas, 18h30 na Livraria Saraiva do Shopping Iguatemi