First look at Visual Studio 2010 and .NET Framework 4.0 - PowerPoint PPT Presentation

First look at visual studio 2010 and net framework 4 0
Download
1 / 67

  • 165 Views
  • Uploaded on
  • Presentation posted in: General

First look at Visual Studio 2010 and .NET Framework 4.0. Ken Casada Developer Evangelist Microsoft Switzerland kcasada@microsoft.com http://blogs.msdn.com/swiss_dpe_team/Default.aspx. Introduction. 3.5. 3.0. .NET 1.0. .NET 1.1. .NET 2.0. .NET 4.0. 2002. 2003. 2005-08. ~ < 2009.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Presentation

First look at Visual Studio 2010 and .NET Framework 4.0

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


First look at visual studio 2010 and net framework 4 0

First look at Visual Studio 2010 and .NET Framework 4.0

Ken Casada

Developer Evangelist

Microsoft Switzerland

kcasada@microsoft.com

http://blogs.msdn.com/swiss_dpe_team/Default.aspx


Introduction

Introduction

3.5

3.0

.NET 1.0

.NET 1.1

.NET 2.0

.NET 4.0

2002

2003

2005-08

~ < 2009

CLR 1.0

CLR 1.1

CLR 2.0

CLR 4.0


Existing side by side sxs

Existing Side-By-Side (SxS)

1.1 add-in

2.0 add-in

3.0 add-in

3.5 add-in

3.5

.NET 1.1

3.0

.NET 2.0

Host Process (e.g. Outlook)


In process side by side sxs

In-Process Side-By-Side (SxS)

2.0 add-in

3.0 add-in

3.5 add-in

4.0 add-in

3.5

.NET 4.0

3.0

.NET 2.0

Host Process (e.g. Outlook)


Net dynamic programming

.NET DynamicProgramming

Dynamic vs. Static


C and visual basic

C# and Visual Basic

Focusing on language co-evolution…


First look at visual studio 2010 and net framework 4 0

  • Parallel Programming

Parallel Extensions is a .NET Library that supports declarative and imperative data parallelism, imperative task parallelism, and a set of data structures that make coordination easier.

  • Parallel LINQ (PLINQ)

  • Task Parallel Library (TPL)

  • Coordination Data Structures (CDS)

    Parallel Extension June 2008 CTP


Parallel linq

Parallel LINQ

demo


Net framework 4 0 client

.NET Framework 4.0: Client

  • Client Profile

  • Windows Presentation Foundation

    • Business focused controls

      • DataGrid, DatePicker, VSM

         Today part of the WPF Toolkit (update in March 09)

         http://www.codeplex.com/wpf

      • After .NET 4.0  More controls (Chart controls, …)

    • Silverlight Synergy

      • DeepZoom in WPF 4.0 has been cut

    • Deploy Full-Trust XBAP: ClickOnceelevation prompt isenabledfor (XBAPs) in Intranet and Trusted Zones.

    • And More: text enhancements for much clearer text rendering, …


  • Wpf 4 0 within visual studio 2010

    WPF 4.0within Visual Studio 2010

    demo


    Multi touch

    Multi-Touch

    • Windows 7 Multi-Touch API

    • WPF 4.0 Multi-Touch API and Controls

      • Base WPF controls updated to be multi-touch aware

      • Multi-Touch specific new controls

      • Surface SDK 2.0 built on top of WPF 4.0

        Windows 7 RC Training Kit for Developers

        Just Released!!!


    Microsoft touch pack for windows 7

    Microsoft Touch Pack for Windows 7

    demo


    Wcf let s start with a

    WCF … let’sstartwith a

    demo


    Wcf 4 0 demo summary

    WCF 4.0 (Demo Summary)

    • Simplified Configurations

      • No more need for <service> tag to configure a service.

      • Default Endpoints for each base Address and implemented contract

    • Standard Endpoints

      • mexEndpoint

      • webHttpEndpoint

      • discoveryEndpoint

        …and more…

        <system.serviceModel>    <services>        <service name=“MyService"><endpointkind="mexEndpoint" />        </service>    </services> </system.serviceModel>

    pre-defined endpoints that have one or more of their properties (address, binding, contract) fixed.


    Wcf 4 0 demo summary1

    WCF 4.0 (DemoSummary)

    • Enables file less activation (no .svc)

      in case of IIS-WAS hosted Web Services!!!

      <system.serviceModel>

      <serviceHostingEnvironment>

      <serviceActivations>

      <add relativeAddress="/MyService.svc" service="ServiceTypeName"/>

      <add relativeAddress="/MyService" service="ServiceTypeName"/>

      </serviceActivations>

      </serviceHostingEnvironment>

      </system.serviceModel>


    Wcf 4 0

    WCF 4.0

    • Service Discovery (WS-Discovery)

      • Ad-hoc discovery (multicast)

         clients can discover services on a local subnet (UDP-based)

      • Proxy-managed discovery (unicast)

         clients can discover services on a larger "managed" network (beyond the local subnet) through a discovery proxy (dedicated network resource). Allow you to locate services no matter whey are.

      • Announcements

        • You can add an announcement endpoint (standard Endpoint: udpAnnouncementEndpoint), which guarantees that the service will send an online and offline announcement when the service is opened and closed respectively. As a service consumer you get notified when the service endpoints go on- and offline.

      • WCF Service Discovery HOL available within the WCF-WF 4 Beta 1 Training Kit: http://code.msdn.microsoft.com/wcfwf4)


    Wcf 4 01

    WCF 4.0

    • Improved REST support

      • Many features from the WCF REST Starter Kit will become part of WCF 4.0.

         WCF REST Starter Kit Preview 2 available on Codeplex

    • Correlation enhancements

      • Content and context driven

    • Integration with Workflow Services

    • Router Service supporting

      • Content-based routing

        • Able to perform message filtering based on the content contained within the message (SOAP header/message body)

      • Protocol Bridging


    Wcf 4 0 routing service

    WCF 4.0: Routing Service

    demo


    Wcf 4 0 demo summary2

    WCF 4.0 (DemoSummary)

    • Create a CalculatorService listening at

    • http://localhost:8000/servicemodelsamples/service

    • Create a RoutingService (of type RountingService)listeningathttp://localhost:8000/routingservice/router

    • Create a RoutingTable within the app.config file of the RountingServiceApp, whichredirect all incoming messages to the CalculatorService.

    • Create a Client Application

    • a) create a proxy class (Add Service Reference to the Calculator Service)

    • b) create a client Endpointwith

    • (A)ddress:routing service (http://localhost:8000/routingservice/router )

    • (B)inding:routing service

    • (C)ontract:calculatorcontract

    • The client does not know anything about the CalculatorService besides the contract of course !!!!


    Workflow foundation 4 0

    Workflow Foundation 4.0

    • XAML-only workflows are the new default

      • Unified model between WF, WCF, and WPF

    • Extended base activity library

      • More activities will be present on CodePlex

    • WF 4.0 simplifies data flow by adding:

      • Arguments, variables, and expressions

      • Significant improvements in performance and scalability

      • New FlowChart Workflow

    • Improved WF 4.0 designer / Designer Rehosting


    Wcf and wf

    WCF and WF

    • There is great potential in WF + WCF

      • .NET 3.0 didn't provide any integration

      • .NET 3.5 added initial WCF support

      • .NET 4.0 is investing heavily in this area

         Workflow Services !!!

    • Think "WCF on the outside, WF on the inside"

      • WCF exposes external interface

      • WF describes internal flow & state transitions


    Workflow services

    Workflow Services

    demo


    Wf scenario

    WF Scenario

    CLIENT

    SERVER


    Wf 3 0 in net 4 3 scenarios

    WF 3.0 in .NET 4  3 Scenarios

    • Stick with WF3.x workflow model

    • Interop: Use WF3.x artifacts in WF4 solutions

    • Rewrite WF3.x activities and workflows

      Migration guidance for WF Developers


    Dublin after net 4

    Dublin (after .NET 4)

    • IIS 7/WAS is today’s hosting environment for WCF service and WF workflows (WorkflowServiceHost class)

    • Provides valuable hosting and management features for your WCF and WF applications

    • Part of the Windows Server Application Server role

    • Extensions built on top of IIS 7 with tracing, monitoring and diagnostic capabilities


    Dublin after net 41

    Dublin (after .NET 4)


    Additional resources

    Microsoft Confidential

    Additional Resources

    • MSDN Developer Centers – .NET 3.5http://msdn.microsoft.com/wcfhttp://msdn.microsoft.com/wf

    • MSDN Developer Centers – .NET 4.0http://msdn.microsoft.com/wcf/future/http://msdn.microsoft.com/wf/future/

    • WF/WCF Team Bloghttp://blogs.msdn.com/endpoint/

    • Dublin

      http://www.microsoft.com/net/dublin.aspx


    Office development no pia

    Office development (No PIA)


    Start again at 11 00 with c 4 0 and ef v2

    Start again at 11:00 with C# 4.0 and EF v2

    Break 


    What s new in c 4 0

    What's new in C# 4.0?


    The evolution of c

    The Evolution of C#

    C# 3.0

    Language Integrated Query

    C# 2.0

    Generics

    C# 1.0

    Managed Code


    Trends

    Trends


    The evolution of c1

    The Evolution of C#

    C# 4.0

    Dynamic Programming

    C# 3.0

    Language Integrated Query

    C# 2.0

    Generics

    C# 1.0

    Managed Code


    C 4 0 language innovations

    C# 4.0 Language Innovations

    • Dynamically Typed Objects

    • Optional and Named Parameters

    • Improved COM Interoperability

    • Co- and Contra-variance


    Net dynamic programming1

    .NET Dynamic Programming

    IronPython

    IronRuby

    C#

    VB.NET

    Others…

    Dynamic Language Runtime

    Expression Trees

    Dynamic Dispatch

    Call Site Caching

    ObjectBinder

    JavaScriptBinder

    PythonBinder

    RubyBinder

    COMBinder


    Dynamically typed objects

    Dynamically Typed Objects

    Calculator calc = GetCalculator();

    int sum = calc.Add(10, 20);

    object calc = GetCalculator();

    TypecalcType = calc.GetType();

    object res = calcType.InvokeMember("Add",

    BindingFlags.InvokeMethod, null,

    newobject[] { 10, 20 });

    int sum = Convert.ToInt32(res);

    ScriptObject calc = GetCalculator();

    object res = calc.Invoke("Add", 10, 20);

    int sum = Convert.ToInt32(res);

    Statically typed to be dynamic

    dynamic calc = GetCalculator();

    int sum = calc.Add(10, 20);

    Dynamic conversion

    Dynamic method invocation


    Dynamically typed objects1

    Dynamically Typed Objects

    Compile-time typedynamic

    Run-time typeSystem.Int32

    dynamic x = 1;

    dynamic y = "Hello";

    dynamic z = newList<int> { 1, 2, 3 };

    • When operand(s) are dynamic…

    • Member selection deferred to run-time

    • At run-time, actual type(s) substituted for dynamic

    • Static result type of operation is dynamic


    Dynamically typed objects2

    Dynamically Typed Objects

    public static class Math

    {

    publicstaticdecimal Abs(decimal value);

    publicstaticdouble Abs(double value);

    publicstaticfloat Abs(float value);

    publicstaticint Abs(int value);

    publicstaticlong Abs(long value);

    publicstaticsbyte Abs(sbyte value);

    publicstaticshort Abs(short value);

    ...

    }

    Method chosen at compile-time:double Abs(double x)

    double x = 1.75;

    double y = Math.Abs(x);

    Method chosen at run-time: double Abs(double x)

    dynamic x = 1.75;

    dynamic y = Math.Abs(x);

    Method chosen at run-time:int Abs(int x)

    dynamic x = 2;

    dynamic y = Math.Abs(x);


    Idynamicobject

    IDynamicObject

    publicabstractclassDynamicObject : IDynamicObject

    {

    publicvirtualobjectGetMember(GetMemberBinder info);

    publicvirtualobjectSetMember(SetMemberBinder info, object value);

    publicvirtualobjectDeleteMember(DeleteMemberBinder info);

    publicvirtualobjectUnaryOperation(UnaryOperationBinder info);

    publicvirtualobjectBinaryOperation(BinaryOperationBinder info, objectarg);

    publicvirtualobject Convert(ConvertBinder info);

    publicvirtualobject Invoke(InvokeBinder info, object[] args);

    publicvirtualobjectInvokeMember(InvokeMemberBinder info, object[] args);

    publicvirtualobjectCreateInstance(CreateInstanceBinder info, object[] args);

    publicvirtualobjectGetIndex(GetIndexBinder info, object[] indices);

    publicvirtualobjectSetIndex(SetIndexBinder info, object[] indices, object value);

    publicvirtualobjectDeleteIndex(DeleteIndexBinder info, object[] indices);

    publicMetaObjectIDynamicObject.GetMetaObject();

    }


    Implementing idynamic object

    Implementing IDynamicObject

    demo


    Optional and named parameters

    Optional and Named Parameters

    Primary method

    publicStreamReaderOpenTextFile(

    string path,

    Encodingencoding,

    booldetectEncoding,

    intbufferSize);

    Secondary overloads

    publicStreamReaderOpenTextFile(

    string path,

    Encodingencoding,

    booldetectEncoding);

    publicStreamReaderOpenTextFile(

    string path,

    Encodingencoding);

    publicStreamReaderOpenTextFile(

    string path);

    Call primary with default values


    Optional and named parameters1

    Optional and Named Parameters

    publicStreamReaderOpenTextFile(

    string path,

    Encodingencoding = null,

    booldetectEncoding = true,

    intbufferSize = 1024);

    Optional parameters

    Named argument

    OpenTextFile("foo.txt", Encoding.UTF8);

    OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096);

    Named arguments can appear in any order

    Arguments evaluated in order written

    Named arguments must be last

    OpenTextFile(

    bufferSize: 4096,

    path: "foo.txt",

    detectEncoding: false);

    Non-optional must be specified


    Improved com interoperability

    Improved COM Interoperability

    objectfileName = "Test.docx";

    object missing = System.Reflection.Missing.Value;

    doc.SaveAs(reffileName,

    ref missing, ref missing, ref missing,

    ref missing, ref missing, ref missing,

    ref missing, ref missing, ref missing,

    ref missing, ref missing, ref missing,

    ref missing, ref missing, ref missing);

    doc.SaveAs("Test.docx");


    Improved com interoperability1

    Improved COM Interoperability

    • object  dynamic mapping

    … you can now say

    excel.Cells[1, 1].Value = "Hello";

    instead of

    ((Excel.Range)excel.Cells[1, 1]).Value2 = "Hello";

    … and

    Excel.Range range = excel.Cells[1, 1];

    instead of

    Excel.Range range = (Excel.Range)excel.Cells[1, 1];


    Co and contra variance

    Co- and Contra-variance

    .NET arrays are co-variant

    string[] strings = GetStringArray();

    Process(strings);

    …but not safelyco-variant

    void Process(object[] objects) {

    objects[0] = "Hello"; // Ok

    objects[1] = newButton(); // Exception!

    }

    void Process(object[] objects) { … }

    Until now, C# generics have been invariant

    List<string> strings = GetStringList();

    Process(strings);

    C# 4.0 supports safe co- and contra-variance

    void Process(IEnumerable<object> objects) {

    // IEnumerable<T> is read-only and

    // therefore safely co-variant

    }

    void Process(IEnumerable<object> objects) { … }


    Safe co and contra variance

    Safe Co- and Contra-variance

    publicinterfaceIEnumerable<T>

    {

    IEnumerator<T> GetEnumerator();

    }

    publicinterfaceIEnumerable<out T>

    {

    IEnumerator<T> GetEnumerator();

    }

    out= Co-variantOutput positions only

    Can be treated asless derived

    publicinterfaceIEnumerator<out T>

    {

    T Current { get; }

    boolMoveNext();

    }

    publicinterfaceIEnumerator<T>

    {

    T Current { get; }

    boolMoveNext();

    }

    IEnumerable<string> strings = GetStrings();

    IEnumerable<object> objects = strings;

    in= Contra-variantInput positions only

    publicinterfaceIComparer<T>

    {

    int Compare(T x, T y);

    }

    publicinterfaceIComparer<in T>

    {

    int Compare(T x, T y);

    }

    Can be treated asmore derived

    IComparer<object> objComp = GetComparer();

    IComparer<string> strComp = objComp;


    Variance in c 4 0

    Variance in C# 4.0

    • Supported for interface and delegate types

    • Value types are always invariant

      • IEnumerable<int> is notIEnumerable<object>


    Variance in net framework 4 0

    Variance in .NET Framework 4.0

    Interfaces

    System.Collections.Generic.IEnumerable<out T>

    System.Collections.Generic.IEnumerator<out T>

    System.Linq.IQueryable<out T>

    System.Collections.Generic.IComparer<in T>

    System.Collections.Generic.IEqualityComparer<in T>

    System.IComparable<in T>

    Delegates

    System.Func<in T, …, out R>

    System.Action<in T, …>

    System.Predicate<in T>

    System.Comparison<in T>

    System.EventHandler<in T>


    The evolution of c2

    The Evolution of C#

    C# 4.0

    Dynamic Programming

    C# 3.0

    Language Integrated Query

    C# 2.0

    Generics

    C# 1.0

    Managed Code


    Additional resources1

    Additional Resources

    • C# 4.0 Samples and Whitepaper

      • http://code.msdn.microsoft.com/csharpfuture

    • Visual C# Developer Center

      • http://csharp.net

    • C# team member’s blogs

      • http://blogs.msdn.com/ericlippert/

      • http://blogs.msdn.com/cburrows/

      • http://blogs.msdn.com/samng/

      • http://blogs.msdn.com/sreekarc/

      • http://blogs.msdn.com/mattwar/

      • http://blogs.msdn.com/ed_maurer/

      • http://blogs.msdn.com/davsterl/

      • http://blogs.msdn.com/alexghi


    Ado net entity framework

    ADO.NET Entity Framework

    Entity Data Model

    • Entity Data Model

      • Define your application model

        • Map it to a persistence store

      • Comprised of 3 layers (XML files):

        • Conceptual (CSDL)

        • Mapping (MSL)

        • Storage (SSDL)

      • Databaseagnostic

        • Databasevendors are developing providers …

          • http://msdn.microsoft.com/en-us/data/dd363565.aspx

      • Twoquery options:

        • Entity SQL

        • LINQ To Entities

    Conceptual

    Mapping

    Storage


    Linq to entities

    LINQ TO ENTITIES

    Application

    from c in db.Customers

    where c.City == "London"

    select c.CompanyName

    db.Customers.Add(c1);

    c2.City = "Barcelona";

    db.Customers.Remove(c3);

    LINQ Query

    Objects

    SaveChanges()

    Entity Data Model

    SQL Query

    Rows

    DML or SProcs

    SELECT CompanyName

    FROM Cust

    WHERE City = 'London'

    INSERT INTO Cust …

    UPDATE Cust …DELETE FROM Cust …

    DB (for instance SQL Server)


    Entity framework

    Entity Framework

    Demo


    Lazy loading in ef v1

    Lazy Loading in EF v1

    varcustomers = fromcustindb.Customers where cust.City == “London"select cust;

    foreach (Customercust in customers)

    {// avoidsunnecessaryqueries

    if (!cust.Orders.IsLoaded){cust.Orders.Load();} 

    foreach (Orderorder in cust.Orders){ // do somethingwithdetail}

    }


    Lazy loading in ef v2

    Lazy Loading in EF v2

    varcustomers = fromcustindb.Customers where cust.City == “London"select cust;

    db.ContextOptions.DeferredLoadingEnabled = true;

    foreach (Customercust in customers)

    {foreach (Orderorder in cust.Orders){ // do somethingwithdetail}

    }


    Entity framework v2

    Entity Framework v2

    • Automatic Lazy Loading, Pluralization

    • Foreign Key Support

    • Persistent Ignorance (POCO)

      • POCO Experience in EF v2 – Part 1

      • POCO Experience in EF v2 – Part 2

        … More to come on http://blogs.msdn.com/adonet/

    • N-tier Support

      • Self-Tracking Entities (Smart entity objects which track their own changes & changes to related entities)


    Self tracking entities in ef v2 mid tier

    Self-tracking Entities in EF v2 (mid-tier)

    interface ICustomerService

    {

    Customer GetCustomer(string customerID);

    voidUpdateCustomer(Customer customer);

    }


    Self tracking entities in ef v2 mid tier1

    Self-tracking Entities in EF v2 (mid-tier)

    public Customer GetCustomer(string customerID)

    {

    using (NorthwindEntitiescontext=new NorthwindEntities())

    {

    var result = context.Customers.

    Include("Orders.OrderDetails").

    Single(c => c.CustomerID == customerID);

    return result;

    }

    }

    public voidUpdateCustomer(Customer customer)

    {

    using (NorthwindEntitiescontext=new NorthwindEntities())

    {

    context.Customers.ApplyChanges(customer);

    context.SaveChanges();

    }

    }


    Self tracking entities in ef v2 client

    Self-tracking Entities in EF v2 (client)

    public voidDeleteObjectsTexts()

    {

    using(CustomerServiceClientclient=new CustomerServiceClient())

    {

    var customer= client.GetCustomer("ALFKI");

    customer.Orders.First().Delete();

    client.UpdateCustomer(customer);

    }

    }

    The resultingentity graph is sent back to the service tierusing the UpdateCustomermethod!!!


    Entity framework v21

    Entity Framework v2

    • Code Generation(T4 templates support)

      • Completely replace entity framework code generation with custom code

      • Generate POCO classes from the model to use as a starting point in my applications

      • Generate self-tracking entity classes


    Code generation ef v2

    Code Generation (EF v2)

    Demo


    Entity framework v22

    Entity Framework v2

    • Code GenerationT4 templates support, but No Editor Support

      • 3rd party solutions which provides T4 Editors:

        • http://www.visualt4.com

        • http://www.tangible.de/modellingtools_teaser.aspx (Tangible T4 Editor now listed in Visual Studio 2010 Beta 1 Extension Manager)


    Entity framework v23

    Entity Framework v2

    • Model Defined Functions

    • Model First Development

    • Complex Types

    varresults = from person indb.People where GetAge(person) > 35select person;

    GetAge must be defined within the CSDL File (Sample)


    Model first development complex types

    Model First Development & Complex Types

    Demo


    Resources ef

    Resources (EF)

    • MSDN Documentation

      • What’s New in ADO.NET

    • ADO.NET Blog

      • http://blogs.msdn.com/adonet

    • EF Design Blog

      • http://blogs.msdn.com/efdesign

    • Data Developer Center

      • http://msdn.microsoft.com/data

    • Entity Framework HOL

      • http://blogs.msdn.com/swiss_dpe_team/archive/2008/10/27/ado-net-entity-framework-hands-on-lab.aspx


    Msdn ressources

    MSDN Ressources

    PresentationsMSDN Events PresentationfinderMSDN Webcasts

    Upcoming EventsTechEd Europe 2009, 9 – 13 November in Berlin

    MSDN FlashSign up (bi-weekly newsletter)

    MSDN Team BlogRSS: http://blogs.msdn.com/swiss_dpe_team/Default.aspx

    Developer User Groups & CommunitiesMobile DevicesMicrosoft Solutions User Group Switzerland.NET Managed User Group of SwitzerlandFoxPro User Group Switzerland


  • Login