Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
The State of the Art on .NET12 Months of Things To Learn
Amanda [email protected]
@pandamoniel
Josh [email protected]
@delitescere
Sunday, December 5, 2010
Negative connotations about the ecosystem
A lot of innovation from other platforms being applied
Very smart people using the platform as it’s the best choice for their circumstance
Not just the “alt” .NET community
Daunting for new developers
High signal-to-noise
Sunday, December 5, 2010
Languages
Sunday, December 5, 2010
1. F#
• What it is
• Microsoft’s official functional language on the CLR• Static type inference, multi-paradigm: FP + OO
• OCaml-esque• Source now publicly available!
• Geeks
• Don Syme (MSR)
Sunday, December 5, 2010
1. F#
• Why look at it?• Business asking for “faster”?• Different way of thinking• Helps you understand LINQ and functional
abstractions in C#• Functional languages “buzz”
Sunday, December 5, 2010
1. F#
• Resources• Matt Podwysocki http://weblogs.asp.net/podwysocki/• Planet F# http://feeds.feedburner.com/planet_fsharp• Hub FS http://cs.hubfs.net• Phillip Trelford http://www.trelford.com/blog/• Books:
• Programming F# (Smith)• Expert F# (Syme, Granicz, Cisternino)• Beginning F# (Pickering)• Real World Functional Programming (Petricek, Skeet)• F# for Scientists (Harrop)
Sunday, December 5, 2010
2. HTML5
• What it is• The next version of HTML, still in review• More semantic markup
• <small>, <header>, <footer>, <article>, <section>, <nav>, <aside>, <summary>, …• built-in validation (new types, required), regex patterns• groupings: <hgroup>, <figure>,
• Audio / Video• Canvas• Drag and drop• Local storage
• localstorage• contenteditable
• Quotes not needed on attributes
Sunday, December 5, 2010
2. HTML5
• Why look at it
• Many browsers supporting parts of it• See the deprecated elements that will be obsolete
• Resources• W3C• Web Hypertext Application Technology Working
Group (WHATWG)
• HTML 5 Doctor http://html5doctor.com/
Sunday, December 5, 2010
3. C# 5 “await”
• What it is• Continuation Passing Style• Syntactic sugar for specifying what happens when an asynchronous task is
complete• Creates continuation for execution by the task after it completes• Doesn’t actually “wait” or block the current flow
• Geeks• Eric Lippert (MS)
• Why look at it• More easily express event sources and chains of events• Easier to create a better user experience
• Resources• Eric’s blog http://blogs.msdn.com/b/ericlippert/archive/tags/async/
Sunday, December 5, 2010
4. Reactive Extentions(Rx)
• What it is
• Declarative glue for event processing and asynchronous computation
• Filters, LINQ expressions
• Subscribe to sequence and error• .NET, Silverlight, JavaScript
• Geeks
• Erik Meijer (MS)
Sunday, December 5, 2010
4. Reactive Extentions(Rx)
• Why look at it
• Vastly simplified abstraction for handling events and dealing with asynchrony
• A “list” of event messages, a success or failure event• Rx manages sequencing of events, exceptions, callbacks,
timeouts
• Resources
• Rx team blog http://blogs.msdn.com/b/rxteam/• Rx design guidelines http://go.microsoft.com/fwlink/?
LinkID=205219
Sunday, December 5, 2010
Tools
Sunday, December 5, 2010
5. Fluent NHibernate
• What it is• “Fluent interface” DSL (http://martinfowler.com/bliki/FluentInterface.html)• Declare mappings in code, not XML!
• Geeks• James Gregory (Proof of Concept)• Paul Batum (F1 Solutions)
• Why look at it• Simpler configuration of ORM• Many conventions not requiring config• XML is a turd for this type of work
• Resources• Website http://fluentnhibernate.org/
Sunday, December 5, 2010
6. TDD Enablers
• NUnit
• xUnit.net
• MSTest
• RhinoMocks
• Moq
• TypeMock
• Cucumber / Cuke4Nuke
Sunday, December 5, 2010
6. TDD Enablers
• What it is• Automated tests• Executable specifications• Unit and acceptance tests• Mocks, stubs
• Why look at it?• Application layers• Organize your code• Customer collaboration• “Professional” thing to do
Sunday, December 5, 2010
6. NUnit
• Geeks
• Charlie Poole, Jamie Cansdale, Gary Feldman
• Jim Newkirk, Alexei Vorontsov, Mike Two, Philip Craig
• Resources• Website http://nunit.org/
• Books
• Test-Driven Development in Microsoft .NET (Newkirk, Vorontsov)
• Pragmatic Unit Testing in C# with NUnit (Hunt, Thomas)
Sunday, December 5, 2010
6. RhinoMocks
• Geeks
• Oren Eini (Ayende Rahien)
• Resources
• Website http://www.ayende.com/projects/rhino-mocks.aspx
• Book http://en.wikibooks.org/wiki/How_to_Use_Rhino_Mocks
Sunday, December 5, 2010
6. Moq
• Geeks
• Daniel Cazzulino (kzu)
• Resources
• Website http://code.google.com/p/moq/
• kzu’s blog (http://www.clariusconsulting.net/blogs/kzu/)
Sunday, December 5, 2010
7. IoC Containers
• Unity
• NInject
• Spring.NET
• Structure Map
• Windsor
Sunday, December 5, 2010
7. IoC Containers
• What it is• Automate dependency injection• Interceptors, AOP• Non-intrusive logging, transaction management and
auditing• Why look at it?
• Helps to decouple project dependencies• Application layering• Simplify testing across layers
Sunday, December 5, 2010
7. Windsor
• Geeks
• Ayende Rahien, Jonathon Rossi, et al
• Resources
• Website http://www.castleproject.org/container
• http://dotnetslackers.com/community/members/simoneb.aspx
Sunday, December 5, 2010
7. Structure Map
• Geeks• Jeremy D. Miller (Dovetail Software)
• Resources• Website http://structuremap.net/
structuremap/• Chad Myers http://dotnetslackers.com/
articles/designpatterns/IntroductionToStructureMap.aspx
Sunday, December 5, 2010
Infrastructure
Sunday, December 5, 2010
8. Azure
• What it is• Microsoft’s cloud service• Platform for development
• Geeks• David Cutler (MS)• Simon Raik-Allen (MYOB)
• Why look at it?• Platform to more simply manage scalability and reduce startup costs• Loads of facilities for .NET devs to get into the cloud
• Resources• Azure in Action (Hay, Prince)• Team blogs http://blogs.msdn.com/windowsazure• Brian Prince http://brianhprince.com/
Sunday, December 5, 2010
9. MEF
• What it is• Managed Extensibility Framework• Component and plugin architecture• DI as a strategy for composing the different extensions
• Geeks• Glenn Block, Wes Haggard (MS)
• Why look at it?• Application extensibility• Avoiding monolithic software• Dynamically composing an application’s feature set at runtime
• Resources• Website http://www.codeplex.com/MEF• Bill Kratochvil http://www.global-webnet.net/BlogEngine/• Jason Olson http://www.managed-world.com/• Magnus Mårtensson http://blog.noop.se/• Sidar Ok http://www.sidarok.com/
Sunday, December 5, 2010
10. RavenDB
• What it is
• Document database for .NET
• Stores schema-less JSON
• Geeks
• Oren Eini (Hibernating Rhinos)
• Why look at it?
• Documents are a simple but useful abstraction (cf key/value)
• Fields that are optional or of dynamic type
• Optional or varying sized “child” collections
• Low impedance with object graphs
• Very easy entry into NoSQL on .NET
• Resources
• Website http://ravendb.net/
• Code of Rob http://codeofrob.com/
Sunday, December 5, 2010
11. Windows 7 Mobile
• What it is• Mobile development using .NET tools• VS2010, Silverlight, XNA, Expression Blend, Emulator
• Geeks• Dragos Manolescu
• Why use it• Mobile development using familiar tools• Extend the reach of you application
• Resources• Website http://create.msdn.com/• http://wp7guide.codeplex.com/•
Sunday, December 5, 2010
12. Guerilla SOA
• What it is• An agile approach to implementing distributed
computing, system integration, and web-based services• Messages, Events, Consumer-Driven Contracts• Lightweight WCF, templates, parsing
• Geeks• Dr Jim Webber (Neo Technology)• Ian S. Robinson (ThoughtWorks)• Dr. Savas Parastatidis (MS)
Sunday, December 5, 2010
12. Guerilla SOA
• Why look at it?
• Successful SOA
• Avoid bloated middleware
• Loosely-coupled, cohesive, efficient services• REST, in practice
• Resources
• REST in Practice http://restinpractice.com/• Patric Fornasier’s SOYA http://soya.sourceforge.net
• Jim Webber’s blog http://jim.webber.name/
• Ian “Consumer-driven Contracts” Robinson’s blog http://iansrobinson.com/
Sunday, December 5, 2010
Notable Mentions
• Boo (Python-like language)• C# Sqlite (Lightweight SQL
engine)• git, mercurial (Distributed
source code management)• MassTransit (Service bus)• Mono (Open source CLR)• MSpec (BDD)• NBehave (BDD)• Noda Time (Date / Time)
• NServiceBus (Service bus)• NuGet (Package management)• NVelocity (Template engine)• RhinoESB (Service bus)• RhinoPHT/DHT (Key/value)• Sandcastle (MSDN-style docs)• Sones (Graph database)• Testlint (Unit test code
advisor)• Typemock (Interaction tests)
Sunday, December 5, 2010
Geeks You Should Watch
• Ayende Rahien (Oren Eini)• Ben Hall• Eric Meijer• Joel Pobar• Jon Skeet• Mark Needham• Matt Podwysocki• Paul Batum• Roy Osherove• Tomáš Petříček
Sunday, December 5, 2010
The State of the Art on .NET12 Months of Things To Learn
Amanda [email protected]
@pandamoniel
Josh [email protected]
@delitescere
Sunday, December 5, 2010