Новые функции в Visual Studio 2008 и .NET 3.5
От: maq Россия http://www.maqdev.com
Дата: 04.12.07 14:16
Оценка: 135 (17)
#Имя: FAQ.tools.vs2008.news
Не нашел нигде подробный обзор, поэтому решил сделать свободный перевод вот этого, на мой взгляд неплохого обзора:
http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx

Итак, новые возможности и функции в VS 2008 и ASP.NET 3.5:

Многоцелевая поддержка в VS 2008 (Multi-Targeting Support)

VS 2008 позволяет выбирать для какой версии .NET Framework необходимо строить приложение. Это означает, что вы можете в VS 2008 работать над существующими .NET 2.0 или ASP.NET 2.0 приложениями, продолжая использование их в среде с .NET 2.0. Замечу что файлы проектов конвертируются в новый при открытии их в VS 2008

Подробнее http://weblogs.asp.net/scottgu/archive/2007/06/20/vs-2008-multi-targeting-support.aspx

ASP.NET AJAX и поддержка JavaScript

.NET 3.5 включает в себя библиотеку ASP.NET AJAX (не требуется его скачивать отдельно). В дополнение к существующим возможностям ASP.NET AJAX 1.0, ASP.NET 3.5 также предлагает расширенную поддержку для элементов UpdatePanel интегрированную с WebParts, интеграцию ASP.NET AJAX с таким контролами как <asp:menu> и <asp:treeview>, встроенную поддержку WCF для JSON, а также много других дополнений в AJAX.

VS 2008 и Visual Web Developer 2008 теперь намного лучше поддерживают использование JavaScript и AJAX в вашем приложении:


VS 2008 Web Designer и поддержка CSS

VS 2008 и Visual Web Developer 2008 Express включает в себя значительно улучшеный редактор HTML контента (аналогичный тому что используется с Expression Web):

В ASP.NET 3.5 также добавлен новый контрол &lt;asp:ListView&gt;, который позволяет просматривать, редактировать, удалять данные подобно GridView, но в отличие от GridView новый контрол дает возможность полного контроля над генерируемым HTML кодом. В сочетании с новыми возможностями VS 2008 по CSS, это дает возможность построения более ясного и простого пользовательского интерфейса.

Улучшения в языке и LINQ

В новых компиляторах VB и C# в VS 2008 добавлено много новых возможностей и конструкций в языках программирования .NET. Добавленые возможности позволяют писать более ясный и при этом сжатый и выразительный код. В частности произведенные изменения выразились в новой модели программирования, которая называется LINQ (language integrated query, или запросы интегрированные в язык), что позволяет делать запросы и обрабатывать данные непосредственно из языка .NET

Некоторые новые возможности в C#:

Автоматические свойства
Автоматические свойства позволяют упростить создание свойств которые по большей частью типичны (getters/setters при помощи переменной).
Если раньше приходилось писать такой код:
public class Person {
        private string _firstName;
        public string FirstName {
                get { 
                        return _firstName;
                }; 

                set {
                        _firstName = value;
        }

        private string _lastName;
        public string LastName {
                get {
                        return _lastName;
                } 
                
                set {
                        _lastName = value;
                }
        }        
        
        private int _age;
        public int Age {
                get {
                        return _age;
                } 

                set {
                        _age = value;
                }
        }
}

То теперь можно его сильно сократить:
public class Person {
        public string FirstName { get; set; }
        public string LastName  { get; set; }        
        public int    Age       { get; set; }
}

Обратите внимание, что для каждого свойства компилятор автоматически сгенерирует приватную переменную которую будет использовать для хранения значения свойства.

Инициализаторы объектов и коллекций
Типы в .NET Framework довольно активно используют свойства. И зачастую приходится писать такой код:
 Person person = new Person();
   person.FirstName = "Scott";
   person.LastName = "Guthrie";
   person.Age = 32;

Теперь его можно заменить таким:
Person person = new Person { FirstName="Scott", LastName="Guthrie", Age=32 };

Компилятор автоматически сгенерирует код присваивающий значения свойствам.
Особенно удобно это при инициализации коллекций:
List<Person> people = new List<Person> {
      new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
      new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
      new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
   };


Методы расширения (Extension Methods)
В .NET 3.5 появилась возможность для уже существующего и скомпилированного класса добавить метод (извне), который расширяет функциональность этого класса без необходимости наследоваться от него или перекомпилировать. Методы расширения привносят гибкость присущую динамическим языкам (вроде JavaScript) языкам .NET сохраняя при этом производительность и строгую типизацию.

Пример:
public static class ScottGuExtensions
{
    public static bool IsValidEmailAddress(this string s)
    {
        Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
        return regex.IsMatch(s);
    }
}

Обратите внимание на выделенное ключевое слово this. Этот метод добавляется к классу string и мы можем его вызывать непосредственно у объекта. Для того чтобы начать исползовать метод расширения в своем коде необходимо применить выражение "using":

  using ScottGuExtensions;
  ...
  string str = "test@none.com";
  if (str.IsValidEmailAddress())
  {
     // do something
  }


Лямбда выражения (или сладкий сон авторов boost::lambda)

В C# 2.0 (который входит в состав VS 2005) были включены анонимные методы, которые позволяют писать "на месте" участки кода, там где нужно обработать событие (делегат).

Лямбда выражение — это более сжатый, функциональный способ написания анонимных методов. Пример:

List<Person> people = new List<Person> {
      new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
      new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
      new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
   };

IEnumerable<Person> Results = people.Where(p => p.LastName == "Guthrie");
//
int Average = people.Average(p => p.Age);


Встроенный язык запросов (Query Syntax)
Встроенный язык запросов это укороченный способ описания выражений для доступа к данным используя стандартные операторы LINQ. Что позволяет улучшить читабельность и ясность выражений запросов в коде. Visual Studio выполняет полную проверку синтаксиса запроса на этапе компиляции, в том числе работает Intellisense во время редактирования такого синтаксиса.

Внутри себя компиляторы C# и VB транслируют подобные выражения и реализует их при помощи методов расширения и лямбда выражений.
Пример (все для того же списка people):
IEnumerable<Person> Results = 
   from p in people 
   where p.LastName.StartsWith("G")
   orderby p.Firstname
   select p;


Просто замечательно по моему, не так ли?

Анонимные типы
Анонимные типы позволяют автоматически, на этапе компиляции определять тип, без необходимости явно его задавать в исходном коде. Конкретный тип выводится компилятором из выражения которое ему нужно присвоить. Пример:

var name = "Scott";
var age = 32;
var male = true;


При компиляции такого кода, будет сгенерирован аналогичный следующему:

string name = "Scott";
int age = 32;
bool male = true;


Конечно во время выполнения все типы уже известны, и это никак не влияет на производительность и типизацию. Наиболее полезна эта конструкция, вкупе с анонимными методами, лямбда выражениями и языком запросов в контексте LINQ, и позволяет писать например такое:

var Results = 
   from p in people 
   where p.LastName.StartsWith("G")
   orderby p.Firstname
   select p;

foreach(var p in Results)
{
  // ...
}


Доступ к данным SQL с применением интегрированного в язык синтаксиса запросов (LINQ to SQL)

LINQ to SQL это встроенный в .NET 3.5 маппер данных к объектам, иначе говоря OR/M или object relational mapper.
Он позволяет выразить реляционную БД в объектной модели .NET. Вы можете затем выполнять запросы к СУБД используя LINQ, а также удалять/вставлять и редактировать данные. При этом полностью поддерживаются транзакции, хранимые процедуры и представления (view).

Просмотр исходного кода библиотеки .NET Framework с использованием VS 2008

Если непонятно как работает тот или иной метод стандартной библиотеки, теперь нет необходимости прибегать к декомпиляторам. Исходный код библиотеки включен в VS 2008. Вы можете входить в стандартные методы и видеть исходный код во время отладки!

Много других изменений
Перечислен лишь ряд наиболее важных дополнений в новой версии VS 2008.
Их очень много.

Пожелания и комментарии приветствуются
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.