На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: maxim84_
  
> основы .NET
    Всем привет. Выкроил время на выходных, начнем с малого ;)
    Итак, пока я от вас ни одного материала не видел, видимо все считают, что я и сам напишу, да? Нет, ребята, давайте-ка поконструктивней. Эта тема закрыта, флейма тут не будет. Моя аська к вашим услугам, авторство материалов обещаю сохранить.
    Пока выкладываю, что есть.
    Как будет время - переведу в унифицированную форму.
    Все пожелания, предложения, уточнения - в приват/аську/мыло

    .NET FAQ

    1. Q: Что такое .NET Framework и зачем он нужен?
      A: Вообще .NET - среда разработки приложений от Microsoft ориентированная на Internet. Несмотря на то что .NET позволяет создавать обычные Windows-приложения основной упор делается на обмен информацией посредством Internet (через Web-Services).  При этом инфраструктурой для новой среды построение приложений является .NET Framework, которую в свою очередь можно разделить на CLR (Common Language Runtime - общеязыковую исполняющую среду) и FCL (Framework Class Library - библиотеку классов, упрощающую разработку). В FCL входят такие библиотеки как Windows Forms, GDI+, ADO.NET, ASP.NET и т.д. Основными преимуществами Framework являются: отсутствие проблем с версиями библиотек; интеграция языков программирования, поддерживающих CLS (Common Language Specification); автоматическое управление памятью; безопасность типов и т.д. В настоящее время
    .NET Framework реализован для Win 98/98 SE/Me/NT 4.0/2000/XP/.NET Server Family (aka 2003) + .NET Compact Framework для Windows CE.
    За дальнейшей информацией обратитесь [1], [2]

    2. Q: Что такое CLR (Common Language Runtime)?
    A: Упрощенно говоря CLR - это то, что выполняет ваш код, написанный под платформу .NET. Это и есть главное и фундаментальное отличие от неуправляемых языков вроде C++, где вы имеете доступ к ресурсам системы (например, памяти) на довольно низком       уровне. Фактически концепция CLR очень похожа концепции JVM (Java Virtual Machine), что позволяет многим людям заявлять, что Microsoft украла идею у Sun. Отчасти возможно это и так. Но серьезным преимуществом (и отличием) CLR является то, что она "общеязыковая" и это изначально было заложено в ее концепцию. Это значит, что возможности CLR доступны любым языкам.
    Цитата из [1]: "... Если исполняющая среда использует исключения для обработки ошибок, то во всех языках можно получать информацию об ошибках посредством исключений. Если исполняющая среда позволяет создавать поток, во всех языках могут создаваться потоки...".
    Фактически когда CLR исполняет ваш код, ему неизвестно на чем вы его писали, а это значит, что выбор языка может быть       обусловлен только спецификой конкретной задачи и личными предпочтениями программиста.
    [1], [2]

    To be continued...

    Эта тема была разделена из темы "FAQ"
    Сообщение отредактировано: kl -
      3. Q: Что такое MSIL (Microsoft Intermediate Language)?
      A: Любой язык (мы говорим о CLS-совместимых языках) компилирует исходны текст не в машинный код а в специальный язык инструкций, понятный CLR. IL - это платформенно-независимый ассемблер, весьма напоминающий byte-code Java. Текстовое представление IL (точнее p-кода внутри модуля) можно получить используя утилиту ildasm.exe. В принципе никто не мешает вам писать модули непосредственное на IL, не используя высокоуровневые языки.
      [1], [2]

      4. Q: Что такое управляемый (managed) код? Какие языки его поддерживают?
      A: Как уже было сказано, CLR исполняет IL-код. Управляемый модуль - это стандартный PE-файл, содержащий обычный заголовок PE, заголовок CLR, IL-код и метаданные. Метаданные - это информация о типах, использующихся в данном модуле и модулях,
      на которые он ссылается. Для выполнение управляемого модуля разумеется необходим CLR. Microsoft создала несколько CLS-совместимых компиляторов: C++ with managed extensions, VB.NET, C#, JScript.NET, J#.NET и ассемблер IL. Кроме того независимые компании создали свои версии под .NET таких языков как FORTRAN, APL, Haskell...
      [1], [2],

      5. Q: Что за язык такой C#?
      A: C# - язык, созданный Microsoft для разработки приложений под .NET. Фактически является основным для разработки под .NET, что подтверждается качеством генерируемого кода (в VS.NET IL-код, сгенерированный С# был значительно оптимальнее чем аналог на МС++, правда в VS.NET 2003 это поправили). Избавлен от многих сложностей MC++ (вроде __gc или __box() ) и подходит для многих программистов не желающих осваивать синтаксис VB. Вообще, по синтаксису очень напоминает Java.

      To be continued...
        6. Q: Моя программа, написанная на C# (VB.NET) не хочет запускаться на машине, на которой не установлена VS.NET. Что делать?
        A: Если вы прочитали предыдущие ответы, то видите, что для исполнения управляемого модуля необходим CLR. Для того, чтобы его установить (а заодно и библиотеки FCL runtime) не обязательно устанавливать VS.NET. Достаточно скачать с msdn.microsoft.com
        .NET Framework Redistributable (файл Dotnetfx.exe). Размер - около 23 Мб. Начиная с Windows 2003 Framework будет встроен непосредственно в операционную систему и распространение .NET приложений станет существенно проще.
        [1], [3]

        7. Q: Что такое сборки (Assemblies) и чем они отличаются от обычных dll?
        A: Любые .NET модули компонуются в так называемые сборки (Assemblies). Важно понимать, что физически      сборка - не обязательно просто файл. Логически сборка - это группировка одного или нескольких управляемых модулей и управляемых данных (ресурсов).
        К сожалению VS.NET не позволяет создавать многофайловые сборки, так что если они вам необходимы - командная строка к вашим услугам. К тому же сборка - это элементарная единица .NET с точки зрения версии, т.е. фактически внутри сборки ни
        один класс/ресурс не может иметь собственных версий. Также сборки ОБЯЗАТЕЛЬНО содержат метаданные - информацию о версии, типах (классах) внутри сборки, атрибуты, зависимости от других сборок, права на запуск и т.д.
        [1], [4]

        8. Q: Что такое JIT (Just-in-time) компиляторы и зачем они нужны?
        A: JIT-компиляция - механизм генерации машинных кодов на этапе выполнения программы. Из соображений производительности сделано так, что кусок кода компилируется всего один раз - при первом обращении, в дальнейшем выполняется только машинный (native) код. Насколько я понял из исходных кодов rotor (упрощенная версия CLR, открытая Microsoft) это реализовано через адресные заглушки в метаданных, описывающих таблицы методов. Изначально они указывают на IL-код, затем, после компиляции - на native-код.      Сгенерированный код не сохраняется в сборке и теряется после ее выгрузки.
        [5]

        To be continued...
        Сообщение отредактировано: kl -
          9. Q: Что такое атрибуты и в чем их преимущества?
          А: .NET Framework позволяет добавлять в код специальные объявления, называемые атрибутами. Те кто видел IDL-файлы найдут в них много общего с атрибутами в .NET. Фактически, атрибуты позволяют добавлять некую дополнительную информацию к таблицам метаданных, помещаемым в сборку. На этапе выполнения она доступна через специальный механизм, называемый Reflection (см. пространство имен System.Reflection). В отличие от IDl систему атрибутов .NET можно дополнять собственными атрибутами
          реализовав собственных наследников класса System.Attribute. Атрибуты могут применяться к сборке в целом (глобальные атрибуты), классам, методам и свойствам. Например:
          ExpandedWrap disabled
            <br>[Author("Microsoft Co")] //Атрибут применен к классу Class2<br>class MsClass {}<br>

          [1], [6]

          Литература:
          [1] Дж. Рихтер. "Программирование на платформе .NET Framework"  Изд. "Русская редакция"
          Статьи:
          [2] CLR
          [3] Проблема распространения приложений
          [4] Сборки (Assembly)
          [5] Rotor. MSDN Magazine №1 (7) Июль 2002
          [6] Атрибуты

          To be continued...
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0217 ]   [ 16 queries used ]   [ Generated: 26.04.24, 23:01 GMT ]