Архитектура нескольких устройств - PullRequest
5 голосов
/ 07 июня 2011

Я сейчас пытаюсь создать «ядро» для моего проекта с несколькими устройствами.

Проект полностью посвящен веб-приложению, которое аутентифицирует пользователя с помощью входа в Facebook, а затем предоставляет набор новых действий, которые они могут выполнять, например. Получить все записи в базе данных, связанные с их идентификатором facebook и т. Д.

Под ядром следует понимать следующие устройства:

  • ПК
  • IPhone
  • Android
  • Windows Phone 7

Теперь, как бы вы составили ядро?

  1. Сделаете ли вы сервис WCF, который возвращает JSON?

  2. Не могли бы вы сделать это Контроллеры, которые возвращают JSON?

  3. И как бы вы гарантировали, что Пользователь - это тот, кто говорит, когда запрашивает ядро? Должен ли я пройти вдоль accessToken каждый раз генерируется facebook?

Как вы могли заметить, я совершенно не представляю, как это сделать.

Заранее спасибо.

1 Ответ

4 голосов
/ 07 июня 2011

Не уверен, правильно ли я понимаю ваш вопрос, но ...

Во-первых, вам нужно определить или, возможно, решить , что такое "ядро"? или каким должно быть ядро ​​ - какую функциональность будет выполнять Core. В идеале, когда мы говорим Core, это, по сути, означает слой , который выполняет базовые или атомарные операции .

В этом ядре вы можете создавать оболочки устройств (IPhone, ПК и т. Д.), Которые создают запрос, например, для отправки в ядро.

Службу данных WCF можно использовать для создания слоя данных. А ваше ядро ​​может выполнять бизнес-операции и т. Д. И взаимодействовать со службой данных.

Например, о чем я могу сразу подумать, это:

  1. Ядро, которое выполняет основные операции - для разговора с Datalayer
  2. DeviceWrapper ( DeviceAndriod, DeviceIPhone, DeviceWeb и т. Д. ), который оборачивает различные устройства. Например, смесь фабрики / строителя. Подумайте о фабрике Device с и Builder для типов представлений.
  3. TextRenderer, в зависимости от настроек устройства, отображает текст.

Один из возможных способов, давайте решим:

Core, будет «библиотекой», которая будет выполнять основные операции:

  • Аутентификация
  • Авторизация
  • Выбрать записи
  • Выполнить действие 1
  • Выполнить действие 2

Следовательно,

  • ШАГ 1 : написать контроллер, который будет обеспечивать аутентификацию / авторизацию; например, позвоните Core.Authenticate() и Authorize();

  • ШАГ 2 : На основании пользовательского агента , вызывающего ICore.RenderView (agentType), это может вернуть вам представление / html, которое будет отображено.

Пользователь может выполнить действие, ваш контроллер может позвонить Core.PerformAction(); который, в свою очередь, может вернуть ссылку на страницу для перенаправления, например.

- ОБНОВЛЕНО -

Это обновление в ответ на ваш комментарий.

Теперь, в этом (вашем комментарии) случае, вы говорите о клиенте концах.

Позволяет немного прояснить. Существует сервер и клиент сторон.

До сих пор мы говорили о стороне сервера , которая в основном связана с:

  1. Как сервер обрабатывает запросы от различных пользовательских агентов.
  2. Как будет отображаться текст относительно разных устройств.

Конец клиента может быть:

  1. Веб-браузер, в данном случае вам не нужно разрабатывать какое-либо клиентское приложение
  2. A, скажем, приложение Silverlight для Windows Phone
  3. Android-приложение для телефона Android
  4. И так далее.

Решите, что будет делать это "клиентское приложение". Например, в вашем случае:

  • Пользователь должен войти через fb id.
  • Пользователь должен иметь возможность выполнять определенные операции.

Обратите внимание, что вы можете рассмотреть умных клиентов (используя веб-сервисы, а не веб-страницы asp.net).

Кроме того, подсказка типа в WCF может добавить много ненужных накладных расходов в ответ JSON для больших коллекций. Поэтому, если вы даже отдаленно полагаете, что может хотеть несколько типов конечных точек (SOAP и т. Д.) В какой-то момент времени, тогда WCF - это путь.

...