Post on 19-Dec-2015
2
Agenda
What's New in .NET Framework 3.5? Visual Studio 2008 Enhancements LINQ (Language Integrated Query) New ASP.NET Server Controls ASP.NET 3.5 Extensions
ASP.NET Dynamic Data ( now in SP1 ) ASP.NET MVC Framework ( now in Beta ) ASP.NET and AJAX Integration ASP.NET Controls for Silverlight
3
Timeline
November 2005 ASP.NET 2.0 Released along with Visual Studio 2005 (No ASP.NET AJAX)
January 2007 ASP.NET AJAX v1.0 released as an add-on to ASP.NET 2.0 (Works with Visual Studio 2005)
May 2007 ASP.NET "Futures" a developer preview of some of the features considered for future releases released as a CTP
July 2007ASP.NET "Futures" CTP Updated
November 2007 ASP.NET 3.5 and Visual Studio 2008 released (ASP.NET 3.5 contains built-in newer version of ASP.NET AJAX, ListView, DataPager and LinqDataSource controls)
December 2007 ASP.NET 3.5 Exensions (CTP Version containing new features for ASP.NET, AJAX and Silverlight)
August 2008 .Net 3.5 SP1
4
What’s New in .NET Framework 3.5? Language Integrated Queries (LINQ)
Family of technologies that provides querying features for data, from relational to XML
Generate a LINQ object model that provides an object representation of the database
New collections: HashSet<T>
Peer-to-Peer networking framework
Integration of WCF and WWF (Workflow Services)
5
What’s New in Visual Studio 2008? Framework targeting (2.0, 3.0, 3.5) Full support for LINQ and LINQ to SQL Integrated ASP.NET AJAX Improved HTML editor
Split source/design view JavaScript IntelliSense and debugging CSS manager and debugger
Integrated WPF, WCF, WF designers Runs a bit slower
7
LINQ and LINQ to SQL
Query, set and transform operations for .NET Querying data becomes a core programming concept Works with all types and shapes of data
Relational databases XML Objects …
Works with all .NET languages C# and VB and have integrated language support
LINQ to SQL Powerful ORM framework
8
var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone };
var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone });
Extension methods
Lambda expressions
Query expressions
Object initializers
Anonymous types
Local variable type inference
Expression trees
Automatic properties
Partial methods
9
Implicitly typed locals Extension methods Lambda Expressions Object initializers Anonymous types Nullable types Query expressions XML LiteralsXML Literals
Dim x = 5Dim x = 5
<Extension><Extension> Sub Randomize(col As Collection)Sub Randomize(col As Collection)
Function(c) c.NameFunction(c) c.Name
New Point With { .x = 1, .y = 2 }New Point With { .x = 1, .y = 2 }
New With { c.Name, c.Phone }New With { c.Name, c.Phone }
From … Where … SelectFrom … Where … Select
If emp.DOB >= Today If emp.DOB >= Today
10
SqlConnection c = new SqlConnection(…);SqlConnection c = new SqlConnection(…);c.Open();c.Open();SqlCommand cmd = new SqlCommand(SqlCommand cmd = new SqlCommand( @"SELECT c.Name, c.Phone@"SELECT c.Name, c.Phone FROM Customers cFROM Customers c WHERE c.City = @p0");WHERE c.City = @p0");cmd.Parameters["@p0"] = "London";cmd.Parameters["@p0"] = "London";DataReader dr = c.Execute(cmd);DataReader dr = c.Execute(cmd);while (dr.Read()) {while (dr.Read()) { string name = dr.GetString(0);string name = dr.GetString(0); string phone = dr.GetString(1);string phone = dr.GetString(1); DateTime date =dr.GetDateTime(2);DateTime date =dr.GetDateTime(2);}}dr.Close();dr.Close();
Queries in Queries in quotesquotes
Loosely bound Loosely bound argumentsarguments
Loosely typed Loosely typed result setsresult sets
No compile time No compile time checkschecks
11
public class Customer { … }public class Customer { … }
public class Northwind: DataContextpublic class Northwind: DataContext{{ public Table<Customer> Customers;public Table<Customer> Customers; … …}}
Northwind db = new Northwind(…);Northwind db = new Northwind(…);var contacts =var contacts = from c in db.Customersfrom c in db.Customers where c.City == "London"where c.City == "London" select new { c.Name, c.Phone };select new { c.Name, c.Phone };
Classes describe data
Strongly typed connection
Integrated query syntax
Strongly typed results
Tables are like collections
13
LINQ to SQL
LINQ to SQL Designer in VS 2008
NorthwindDataContext db = NorthwindDataContext db = new NorthwindDataContext();new NorthwindDataContext();var customers = from c in db.Customersvar customers = from c in db.Customers where c.City == "London" select c;where c.City == "London" select c;foreach (var cust in customers)foreach (var cust in customers) Console.WriteLine(Console.WriteLine( "id = {0}, City = {1}","id = {0}, City = {1}", cust.CustomerID, cust.City); cust.CustomerID, cust.City);
14
LINQ to Objects API queries over any .NET collection, such as arrays and
generic lists. LINQ over XML (XLinq)
Core functionality of the XLinq API such as load, modify, and save XML documents
LINQ to SQL provides direct access to database tables from the
programming environment LINQ to Entities
enables developers to use LINQ over EDM models LINQ to Dataset
allows the full expressivity of LINQ to be used over Datasets.
16
ListView Control
Combines templating capabilities of the Repeater control and the data editing capabilities of the DataGrid
complete control of how the ListView presents your data through 11 templates. LayoutTemplate AlternatingItemTemplate EditItemTemplate EmptyDataTemplate EmptyItemTemplate GroupTemplate GroupSeparatorTemplate InsertItemTemplate ItemTemplate ItemSeparatorTemplate SelectedItemTemplate
most important templates are the LayoutTemplate and the ItemTemplate. LayoutTemplate HTML defines the overall look and feel ItemTemplate HTML specifies how each bound record will appear.
17
ListView
<asp:ListView ID="ListView2" runat="server" DataSourceID="MyDataSource"> <LayoutTemplate> <asp:PlaceHolder ID="itemPlaceholder" runat="server"> </asp:PlaceHolder> </LayoutTemplate> <ItemTemplate> <asp:Label ID="Company" runat="server" Text='<%# Eval("CompanyName") %>' /> <br /> <asp:Label ID="CityLabel" runat="server" Text='<%# Eval("City") %>' /> <hr /> </ItemTemplate> </asp:ListView>
18
DataPager
provides paging capabilities. points at the control it provides paging
support for. As an external control place it anywhere on the page, and configure
look works with controls that implement the
IPageableItemContainer interface ( ListView )
21
ASP.NET 3.5 Extensions ASP.NET MVC Framework
Model View Controller framework for ASP.NET ( now in Beta ) ASP.NET Dynamic Data
Dynamic data controls for displaying/editing table data in ASP.NET ASP.NET AJAX
Browser history support ADO.NET Data Services
Create REST addressable services endpoints for your data and consume with AJAX and Silverlight
Silverlight Controls for ASP.NET Integrate Silverlight into ASP.NET applications
22
ASP.NET Dynamic Data
Create quickly a rich data-driven Web sites Like in Ruby on Rails and Django (in Python) Based on LINQ to SQL data model Dynamically display data based on the data model of
the underlying database Pages are created automatically (zero code)
Based on highly customizable templates Uses dynamic data fields – user controls that
render standard data field types
24
ASP.NET AJAX
All AJAX 1.0 features in .NET 3.5 Enhancements to UpdatePanel WCF JSON Services
Better Development Experience JavaScript Intellisense JavaScript Debugging ASP.NET AJAX Extender
Control Support
ASP.NET 2.0VS 2005
v1.0
ASP.NET 3.5VS 2008
v1.0 v3.5