LoveRead.info » Книги » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

178 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

Книга Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читать онлайн бесплатно без регистрации

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 244 245 246 247 248 249 250 251 252 ... 407
    Перейти на страницу:
    и записью чисел. В табл. 20.14 перечислены значения, доступные в перечислении JsonNumberHandling.

    Перечисление JsonNumberHandling имеет атрибут flags, который делает возможным побитовое сочетание его значений. Например, если вы хотите читать строки (и числа) и записывать числа в виде строк, тогда применяйте следующую настройку:

    JsonSerializerOptions options = new()

    {

       ...

       NumberHandling = JsonNumberHandling.AllowReadingFromString &

                        JsonNumberHandling.WriteAsString

    };

    При таком изменении данные JSON, созданные для класса Car, будут выглядеть так:

    {

      "canFly": true,

      "canSubmerge": false,

      "theRadio": {

        "hasTweeters": true,

        "hasSubWoofers": false,

        "stationPresets": [

          "89.3",

          "105.1",

          "97.1"

        ],

        "radioId": "XF-552RR6"

      },

      "isHatchBack": false

    }

    Потенциальные проблемы, связанные с производительностью, при использовании JsonSerializerOption

    В случае применения класса JsonSerializerOption лучше всего создать единственный экземпляр и многократно использовать его повсюду в приложении. С учетом сказанного модифицируйте операторы верхнего уровня и методы, относящиеся к JSON, как показано ниже:

    JsonSerializerOptions options = new()

    {

        PropertyNameCaseInsensitive = true,

        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,

        IncludeFields = true,

        WriteIndented = true,

        NumberHandling =

          JsonNumberHandling.AllowReadingFromString |

          JsonNumberHandling.WriteAsString

    };

    SaveAsJsonFormat(options, jbc, "CarData.json");

    Console.WriteLine("=> Saved car in JSON format!");

    SaveAsJsonFormat(options, p, "PersonData.json");

    Console.WriteLine("=> Saved person in JSON format!");

    static void SaveAsJsonFormat<T>(JsonSerializerOptions options,

      T objGraph, string fileName)

    => File.WriteAllText(fileName,

     System.Text.Json.JsonSerializer.Serialize(objGraph, options));

    Стандартные настройки свойств JsonSerializer для веб-приложений

    При построении веб-приложений вы можете применять специализированный конструктор для установки следующих свойств:

    PropertyNameCaseInsensitive = true,

    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,

    NumberHandling = JsonNumberHandling.AllowReadingFromString

    Вы по-прежнему можете устанавливать дополнительные свойства через инициализацию объектов, например:

    JsonSerializerOptions options = new(JsonSerializerDefaults.Web)

    {

      WriteIndented = true

    };

    Сериализация коллекций объектов

     Сериализация коллекций объектов в данные JSON выполняется аналогично сериализации одиночного объекта. Поместите приведенную далее локальную функцию в конец операторов верхнего уровня:

    static void SaveListOfCarsAsJson(JsonSerializerOptions options, string fileName)

    {

        // Сохранить список List<T> объектов JamesBondCar.

        List<JamesBondCar> myCars = new()

        {

      new JamesBondCar { CanFly = true, CanSubmerge = true },

            new JamesBondCar { CanFly = true, CanSubmerge = false },

            new JamesBondCar { CanFly = false, CanSubmerge = true },

            new JamesBondCar { CanFly = false, CanSubmerge = false },

        };

        File.WriteAllText(fileName,

            System.Text.Json.JsonSerializer.Serialize(myCars, options));

        Console.WriteLine("=> Saved list of cars!");

    }

    В заключение добавьте следующую строку, чтобы задействовать новую функцию:

    SaveListOfCarsAsJson(options, "CarCollection.json");

    Десериализация объектов и коллекций объектов

    Как и десериализация XML, десериализация JSON является противоположностью сериализации. Показанная ниже функция будет десериализировать данные JSON в тип, заданный при вызове обобщенной версии метода:

    static T ReadAsJsonFormat<T>(JsonSerializerOptions options,

      string fileName) =>

        System.Text.Json.JsonSerializer.Deserialize<T>

          (File.ReadAllText(fileName), options);

    Добавьте к операторам верхнего уровня следующий код для восстановления объектов (или списка объектов) из данных JSON:

    JamesBondCar savedJsonCar =

        ReadAsJsonFormat<JamesBondCar>(options, "CarData.json");

    Console.WriteLine("Read Car: {0}", savedJsonCar.ToString());

    List<JamesBondCar> savedJsonCars =

        ReadAsJsonFormat<List<JamesBondCar>>(options, "CarCollection.json");

    Console.WriteLine("Read Car: {0}", savedJsonCar.ToString());

    Резюме

     Глава начиналась с демонстрации использования типов Directory(Info) и File(Info). Вы узнали, что эти классы позволяют манипулировать физическими файлами и каталогами на жестком диске. Затем вы ознакомились с несколькими классами, производными от абстрактного класса Stream. Поскольку производные от Stream типы оперируют с низкоуровневым потоком байтов, пространство имен System.IO предлагает многочисленные типы средств чтения/записи (например, StreamWriter, StringWriter и BinaryWriter), которые упрощают процесс. Попутно вы взглянули на функциональность типа DriveType, научились наблюдать за файлами с применением типа FileSystemWatcher и выяснили, каким образом взаимодействовать с потоками в асинхронной манере.

    В главе также рассматривались службы сериализации объектов. Вы видели, что платформа .NET Core использует граф объектов, чтобы учесть полный набор связанных объектов, которые должны сохраняться в потоке. В заключение вы поработали с сериализацией и десериализацией XML и JSON.

    Глава 21

    Доступ к данным с помощью ADO.NET

    Внутри платформы .NET Core определено несколько пространств имен, которые позволяют взаимодействовать с реляционными базами данных. Все вместе эти пространства имен известны как ADO.NET. В настоящей главе вы сначала ознакомитесь с общей ролью инфраструктуры ADO.NET, а также основными типами и пространствами имен, после чего будет обсуждаться тема поставщиков данных ADO.NET. Платформа .NET Core поддерживает многочисленные поставщики данных (как являющиеся частью .NET Core, так и доступные от независимых разработчиков), каждый из которых оптимизирован для взаимодействия с конкретной системой управления базами данных (СУБД), например, Microsoft SQL Server, Oracle, MySQL и т.д.

    Освоив общую функциональность, предлагаемую различными поставщиками данных, вы узнаете о паттерне фабрики поставщиков данных. Вы увидите, что с использованием типов из пространства имен System.Data (включая System.Data.Common, а также специфичные для поставщиков данных пространства имен вроде Microsoft.Data.SqlClient, System.Data.Odbc и доступное только в Windows пространство имен System.Data.Oledb) можно строить единственную кодовую базу, которая способна динамически выбирать поставщик данных без необходимости в повторной компиляции или развертывании кодовой базы приложения.

    Далее вы научитесь работать напрямую с поставщиком баз данных SQL Server, создавая и открывая подключения для извлечения данных и затем вставляя, обновляя и удаляя данные, и ознакомитесь с темой транзакций базы данных. Наконец, вы запустите средство массового копирования SQL Server с применением ADO.NET для загрузки списка записей внутрь базы данных.

    На заметку! Внимание в настоящей главе сконцентрировано на низкоуровневой инфраструктуре ADO.NET. Начиная с главы 22, будет раскрываться инфраструктура объектно-реляционного отображения (object-relational mapping — ORM) производства Microsoft под названием Entity Framework (EF) Core. Поскольку инфраструктура EF Core для доступа к данным внутренне использует ADO.NET, хорошее понимание принципов работы ADO.NET жизненно важно при поиске и устранении проблем при доступе к данным. Кроме того, существуют задачи, решить

    1 ... 244 245 246 247 248 249 250 251 252 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Борис Борис14 июнь 00:50 Колокола в России тем и отличались от западных что раскачиаали именно язык колокола,а не сам колокол! Авторы что-жертвы ЕГЭ? Не... Соединенные Штаты России 3 - Полина Ром
    2. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    3. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    Все комметарии
    Новинки бесплатной онлайн библиотеки