Как получить курсы валют в приложении ASP.NET Core MVC
Это наиболее общий функционал, который будет реализован в приложении. Дальнейшая специализация на ваше усмотрение.
Создадим в Visual Studio новое приложение типа ASP.NET Core. Сразу выберем шаблон MVC, чтобы Visual Studio за нас подготовила минимальный необходимый функционал для запуска приложения. Режим аутентификации или защищенное https-соединение в этом примере не используется.

Сразу замечу, что функционал этого примера во многом заточен именно под работу с ЦБ РФ, как источником данных о курсах валют. В работе с ним есть некоторые нюансы, о чем сказано ниже. Если вы хотите брать курсы валют из другого источника, а они в целом более-менее все похожи, то изучите особенности API того сервиса, и в соответствии с этим скорректируйте код приложения.
Ознакомиться с информацией о том, как получать данные от ЦБ РФ, используя XML, можно по этой ссылке: Получение данных, используя XML
Придумаем себе техническое задание, в котором сказано, что основная валюта на сайте – это российские рубли. Также должна быть возможность представить какую-то цену на товар в иностранной валюте, а именно в долларах США, евро или гривнах.
Под это ТЗ создадим простейший класс-модель для того, чтобы работать с данными в объектно-ориентированной манере. Пусть также в обязанности этого класса входит конвертация одной валюты в другую. Для простоты демонстрации нарушим принцип SRP (Single Responsibility Principle).
После того как мы определили модель, реализуем функционал получения курсов валют и обработки их внутри нашего приложения. Для того чтобы этот процесс был автоматизирован и работал фоном с некоторой периодичностью, в ASP.NET Core очень удобно использовать класс BackgroundService , который в свою очередь реализует интерфейс IHostedService .
Создадим свой класс и наследуемся от класса BackgroundService :
* в коде выше добавлены поясняющие комментарии по некоторым неочевидным вопросам, это опять же возвращаясь к тому, что данный пример во многом заточен именно под ЦБ РФ как источник данных курсов валют.
Также не забудем добавить поддержку кэширования в проект и подключим наш CurrencyService как сервис в файле Startup.cs:
На данном этапе если мы запустим приложение на выполнение, то сразу же запустится фоновая задача и произойдет попытка получения данных о курсах валют. После этого класс-модель будет заполнен этими данными и помещен в кэш.
Давайте для примера извлечем нашу модель из кэша в HomeController , и передадим ее в представление Index() :
Как получить курс валюты средствами C#

Одному из наших новых корпоративных сервисов требуется регулярно получать актуальный курс валюты. Нас интересуют евро и доллары, особенно сейчас, когда курс стал резко скакать. Чтобы успевать за обновлениями и освободить вечно занятых сотрудников от этой рутиной операции, было решено автоматизировать этот процесс. К счастью, исходный код проекта у нас имеется.
Особого времени на решения этой задачи не было, и я надеялся, что в сети найдется готовый снипет, способный решить проблему за пару минут. Увы, ни к чему хорошему мои поиски не привели. Варианты, попавшие под зоркий глаз Google, демонстрировали банальный анализ страницы центрального банка с перечнем всех доступных курсов валют при помощи регулярного выражения. Не знаю, зачем авторы этих решений мучились с регулярными выражениями, если сайт центрального банка всегда рад отдать интересующую информацию в виде XML/SOAP.
Вариант с SOAP мне показался более затратным (по времени), поэтому было решено получать все необходимые данные в XML. Для этого требуется сделать GET запрос по адресу http://www.cbr.ru/scripts/XML_daily.asp. Ответом будет готовый для анализа XML, содержащий информацию о курсах различных валют (на текущую дату). Кусок такого XML привожу ниже:
Получение курсов валют средствами C#
Решить задачу получения курса средствами C# достаточно просто. Возможно, это не совсем оптимальное решение (я пока не считаю себя экспертом в .NET), но оно работает шустро и прекрасно выполняет поставленную задачу. Разбирать XML я решил при помощи класса XmlTextReader. Вот что у меня получилось:
В принципе, можно было обойтись средствами одного XmlTextReader, но тогда код получился бы более сложным для восприятия. Пришлось бы работать с элементами последовательно и сохранять промежуточные значения для дальнейшего анализа. Смешанный подход позволил избавиться от излишеств.
Кстати, эту же задачу реально решить при помощи одного класса XmlDocument. XML файл с информацией о курсах валют небольшого размера, поэтому использование XmlDocument вполне оправданно. Для больших файлов XmlDocument не подходит, т.к. все данные из файла сразу же загружаются в память и ее элементарно может не хватить.
Парсинг курса валют Visual Studio c++
Подскажите пожалуйста как парсить курс валют с определённого сайта на с++ ( visual studio 2012) Windows Forms Может быть есть книги с гайдами?
![]()
Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.
Посмотрите другие вопросы с метками c++ visual-studio или задайте свой вопрос.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.13.42356
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.