2013-06-25 4 views
0

У меня есть API из примерно 6 поставщиков. У меня также есть база данных, где я отключу или включу поставщиков, которых я хочу использовать.ASP.NET MVC, доступ к нескольким API-интерфейсам

У меня есть приложение ASP.NET MVC4. В этом я хочу иметь возможность использовать API-интерфейсы нескольких поставщиков и отображать данные. API каждого провайдера отправляет ответ в другом формате - это может быть JSON для одного и XML для другого.

Теперь я застрял, потому что:

  1. Каждый API необходим свой собственный код, который будет обработан. Куда входит этот код для конкретного поставщика? Один класс, где для каждого провайдера используется конкретный метод разбора? Или я создаю новый класс для каждого провайдера и выполняю синтаксический анализ?

  2. Как я могу эффективно вызвать метод конкретного провайдера? Является ли какой-то биткодирование существенным в том смысле, что если имя провайдера «Prov A», то я вызываю метод GetProvAData?

Надеюсь, я достаточно подробно объяснил этот вопрос. Любая помощь будет приветствоваться. Заранее спасибо.

С уважением,

Сатиш

ответ

0

Это действительно не имеет ничего общего с MVC, это основная проблема разработки программного обеспечения шаблон.

Предполагая, что ваши данные от разных поставщиков все должны быть в том же формате, это пример текстового окна Strategy pattern. В основном вы создадите несколько парсеров провайдеров, у всех которых есть один и тот же интерфейс, и вы просто вызываете Execute или Parse или все, что вы хотите назвать на всех из них.

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

+0

Большое спасибо за ответ. – Freelancer

+0

Простите, что отправите туда на полпути. Моя проблема - вторая. В некоторых случаях я получаю данные в виде XML, например, поставщик A отправляет его как <код валюты> EUR , а провайдер B отправляет его как JSON {"currency": "EUR", "FXRate": 1}. В обоих случаях я хочу извлечь обменный курс из обоих случаев, но сделаю это, только если я включил провайдер A или B или Both. – Freelancer

+0

@ пользователь2521239 - нет, это первый случай. Вы получаете одни и те же данные, это просто в разных форматах. Второй случай - если поставщик отправляет вам совершенно разные данные (независимо от формата), и вам нужно написать код, специфичный для этого провайдера для этих данных. Например, поставщик A отправляет вам информацию о погоде, а поставщик B отправляет вам информацию о фондовом рынке. –