The State of the Art on .NET 12 Months of Things To Learn Amanda Laucher ThoughtWorks Josh Graham Hashrocket
(overview) • 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
(overview) • Languages • NHibernate • F# • Castle • M • Windsor • Boo • NVelocity • Tools • Infrastructure • NUnit • Guerilla WCF • RhinoMocks • Azure • Moq • MEF
1. F# • What it is • Microsoft’s official functional language on the CLR • Static type inference, multi-paradigm: FP + OO • OCaml-esque • Geeks • Don Syme (MSR)
1. F# • Why look at it? • Business asking for “faster”, “concurrent”, “parallel”? • Different way of thinking • Helps you understand LINQ and functional abstractions in C# • Functional languages “buzz” • Real World Functional Programming (Petricek, Skeet)
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) • F# In Action (Laucher) • F# for Scientists (Harrop)
2. M • What it is • Declaratively build data models • Declaratively and interactively build external DSLs • Geeks • Don Box (MS) • Clemens Szyperski (MSR)
2. M • Why look at it? • Higher abstraction for schemata • Easier grammar creation • DSL “buzz” • Resources • MSDN Library http://msdn.microsoft.com/en-us/library/ dd129519(VS.85).aspx • Creating DSLs in Oslo video http://www.infoq.com/ presentations/Creating-DSLs-in-Oslo-Amanda-Laucher • InfoQ http://www.infoq.com/articles/natural-language-date- dsl-oslo • Oslo Team http://blogs.msdn.com/mlanguage/
3. Boo • What it is • Python syntax • Static, infered, duck, macros, functional • Geeks • Rodrigo B. De Oliveira (Unity Technologies) • Why look at it? • Language extensibility • DSLs: bake, UnityScript • Resources • Website http://boo.codehaus.org/
4. NUnit • What it is • State-based automated unit testing • Idiomatic C#, constraint-based assertion DSL • Geeks • Charlie Poole, Jamie Cansdale, Gary Feldman • Jim Newkirk, Alexei Vorontsov, Mike Two, Philip Craig
4. NUnit • Why look at it? • It’s the tool to use for this style of testing on .NET • Standalone, VS integrated, 3rd-party builds • Resources • Website http://nunit.org/ • Books • Test-Driven Development in Microsoft .NET (Newkirk, Vorontsov) • Pragmatic Unit Testing in C# with NUnit (Hunt, Thomas)
5. RhinoMocks • What it is • Automated unit testing • Verify interactions amongst collaborators • Geeks • Oren Eini (Ayende Rahien) • Why look at it? • Working with legacy code • Driving out DI-based designs • Resources • Website http://www.ayende.com/projects/rhino-mocks.aspx • Book http://en.wikibooks.org/wiki/How_to_Use_Rhino_Mocks
6. Moq • What it is • Automated unit testing • Linq expression trees and lambdas • Mocks interfaces and classes • Geeks • Daniel Cazzulino (kzu) • Why look at it? • A fresh approach to mocks and stubs on .NET • Simple testing DSL • Resources • Website http://code.google.com/p/moq/ • kzu’s blog (http://www.clariusconsulting.net/blogs/kzu/)
7. NHibernate • What it is • O/RM persistence framework • Geeks • Fabio Maulo, Ayende Rahien, Sergey Koshcheyev • Why look at it? • Complex object domain model mapping to complex relational model • Reduce persistence abstractions leaking into business logic layer • Resources • Website https://www.hibernate.org/ • http://www.fincher.org/tips/Languages/NHibernate.shtml • NHibernate in Action (Kuaté, Bauer, King, Harris)
8. Windsor • What it is • IOC Container for .NET • Part of the castle project • Geeks • Ayende Rahien, Jonathon Rossi, et al • Why look at it? • Dependency Injection • Helps to decouple project dependencies • External configuration • Interceptors • Non-intrusive logging, transaction management and auditing • Resources • Website http://www.castleproject.org/container • http://dotnetslackers.com/community/members/simoneb.aspx
9. NVelocity • What it is • Template engine • Geeks • Cort Schaefer, Hamilton Verissimo, Mike Bridge • Why look at it? • Abstract views away from other architectural layers • Web designers can work in parallel with .NET programmers to develop web sites according to the Model- View-Controller (MVC) model • Resources • Website http://sourceforge.net/projects/nvelocity/
10. Guerilla SOA • What it is • Geeks • Jim Webber (ThoughtWorks) • Why look at it? • Lightweight, iterative, incremental SOA • Avoid bloated middleware • Messages • Resources • Patric Fornasier’s SOYA http://soya.sourceforge.net • Jim Webber’s blog http://jim.webber.name/ • Savas Parastatidis • Ian “Consumer-driven Contracts” Robinson’s blog http:// iansrobinson.com/
11. Azure • What it is • Microsoft’s cloud service • Platform for development • Geeks • David Cutler (MS) • 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/
12. 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 • 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/
Notable Mentions • MassTransit • MSpec • NBehave • NServiceBus • RavenDB • RhinoESB • RhinoPHT/DHT • Testlint • Typemock
The State of the Art on .NET 12 Months of Things To Learn Amanda Laucher amanda.laucher@thoughtworks.com ThoughtWorks Josh Graham josh@hashrocket.com Hashrocket
Recommend
More recommend