Enterprise development (in .NET), Day 2
.NET overview (in context)
Andrey Shchekin http://ashmind.com Sankt-Petersburg, 2009
Images © Mattahan Productions, Inc | http://mattahan.deviantart.com/ | http://mattahan.insocada.com/
PHP C# Java C++
.NET | JVM
Static typing* Compiled code
PHP | Ruby | …
Dynamic typing Interpreted code
Fast for users Maintainable
Fast for developers Convenient
Static (C#)
var a = 5; a = "Andrey"; - error! var value = new Object(); return value.Something; - error!
Dynamic (JS)
var a = 5; a = "Andrey"; var value = new Object(); return value.Something; // undefined
.NET
1. Runtime 2. Languages 3. Libraries
Runtime (CLR)
Static typing/Type safety Automatic memory management GC Garbage Collector
Virtual machine IL Intermediate Language JIT Just in Time Compiler
CLR
Dynamic linking (.dll)
C | C++
Static linking (.h)
Runtime features
Compiler features
IL (byte code) Virtual machine
ASM (processor) Direct execution
Assemblies
Assembly = .NET exe or dll. Always conforms to specific API. Strong-naming: security.
CLR
Single platform* Multiple languages
JVM
Multiple platforms Single language*
Specific features Focused support
Common features Broad distribution
Base Class Library (BCL)
A set of built-in types System.Collections System.Data System.IO System.Net System.Text System.Security System.Threading System.Xml
Languages
C#
VB.NET Boo F# Oxygene Nemerle IronRuby IronPython IronLisp Phalanger (PHP) Eiffel
… IronPython on the CLR was about 1.7x faster than the Cbased implementation …
*.NET
ASP.NET
HTML Templates + .NET Code ASP.NET == System.Web.* Hosted on IIS via w3wp/aspnet_wp. In IIS7 more or less built-in.
ASP.NET MVC
Simpler and better ASP.NET System.Web.Mvc.* You should actually always use this.
ADO.NET
Database access library. ADO.NET == System.Data.* Boring.
Windows Forms
Classic Windows application framework. Nice but limited.
WPF
New framework for Window GUI apps. Learn it instead of WinForms. WPF = XAML + C# All controls can be completely customized.
Visual Studio 2010 will be WPF.
Similar to Flash, but in .NET. WPF in browser.
Works in all browsers (Windows) and Safari (Mac). Good for: high-quality streaming video complex Internet apps Bad if: You can do it in HTML/JS
Where else?
Xbox: XNA Framework Windows Mobile: .NET Compact Framework Watches and other small stuff: .NET Micro Framework
LINQ
LINQ to
Google Flickr Twitter Amazon Sql Xml Active Directory
LINQ
var publicTweets = from tweet in twitter.Status where tweet.Type == StatusType.Public orderby tweet.Date descending select tweet;
Mono
Open-source .NET Runtime (Linux!). Additional libraries (Gtk#, etc).
GNOME applications (Beagle, F-Spot). Actually run my code developed on .NET.
Moonlight
Open-source Silverlight. The only way to use Silverlight on Linux. Kind of lags in versions, though.
Mono on iPhone (costs $400, though).
.NET Frameworks
.NET CLR 1.0 1.0 1.1 1.1 2.0 3.0* 2.0 3.5
2.0+
C#
Visual Studio .NET
1.0
.NET 2003
2.0 (Generics)
2005
3.0 (Linq)
2008
* 3.0 (WinFX): WPF WCF WF WCS
Windows Presentation Foundation Windows Communication Foundation Windows Workflow Foundation Windows CardSpace
Getting .NET-related stuff
Free: Visual Studio 2008 Express DreamSpark (for students) Almost free ($100 after 3 years): BizSpark (startups) WebsiteSpark (web studios)
Goodies
A lot of free and open-source stuff: http://code.google.com http://www.codeplex.com http://google.com :) Open source IDE: Win #Develop (SharpDevelop) All MonoDevelop
Questions