Помощь в проектировании архитектуры - PullRequest
5 голосов
/ 31 января 2010

Я ищу информацию о моей текущей архитектуре проекта. Есть три компонента: сервер, рабочий стол и мобильное устройство.

У меня 2 гола:

1) Отправка данных (приблизительно не более 100 КБ текста) с рабочего стола (многоплатформенное клиентское приложение, работающее в Windows XP / Vista / 7 и Mac OS X) на сервер (Windows Server 2008, IIS 7 WCF RESTful сервис) для сохранения в базе данных (Sql Server). Службы должны быть масштабируемыми, поскольку число настольных устройств и частота, с которой они отправляют данные, неизвестны.

2) Сервис для извлечения данных из базы данных (Sql Server) и отправки на мобильное устройство (приложение Iphone и Android. Размер сообщения не более 100 КБ текста). Служба должна быть масштабируемой, поскольку число мобильных устройств и частота, к которой они подключаются, неизвестны.

Мое предлагаемое решение:

Серверная часть (Sql Server и Windows Server 2008) : Я рассматриваю службы WCF RESTful JSON для связи с настольными приложениями и мобильными приложениями. Мне нравится WCF, потому что я самый опытный в C #, у меня есть некоторый опыт внедрения WCF, после некоторых исследований выясняется, что все технологии, используемые для платформ (Windows XP / Vista / 7 и Mac OS X), могут легко взаимодействовать со службой WCF RESTful.

  • Какие-либо фундаментальные проблемы высокого уровня со службой WCF в этом сценарии?
  • Я реализовал WCF только на компьютере под управлением Windows Server 2003 с ~ 800 устройствами, подключающимися каждые 15 минут. Сервер был физическим внутренним сервером, работающим в частной сети. Мне нужно, чтобы это решение было размещено и масштабируемо. Какие-либо рекомендации для хостинга Windows Server 2008? Есть ли лучшая технология для размещения службы? (Я не очень знаком с тем, как работает облачный контент)

Службы будут сохранять и извлекать данные с сервера SQL. Я хотел бы использовать LINQ to SQL в качестве уровня доступа к данным. Насколько я понимаю, с SQL-сервером связаны большие лицензионные сборы, поэтому мне, возможно, придется перейти на SQL Server Express.

  • Я бы предпочел, чтобы службы WCF и база данных размещались отдельно (2 разных компьютера). Любые рекомендации для хостинга сервера sql (или экспресс)? Есть ли хостинг, который может лучше масштабироваться для моей базы данных? Имеет ли смысл хранить их на двух разных машинах?

Рабочий стол (на стороне клиента) Я должен разрабатывать для Windows XP / Vista / 7 и Mac OS X. Я планирую написать приложение .net для запуска на компьютерах с Windows. Я все еще в воздухе, если собираюсь написать (и выучить: P) XCode или попробовать моно. Любые кроссплатформенные идеи?

  • Могу ли я ожидать каких-либо фундаментальных проблем при обращении настольных приложений к моим службам RESTful WCF?

Мобильные приложения Требуется разработчик для iPhone и Android. Существует множество примеров выполнения вызовов службы WCF RESTful с использованием Objective C и Android SDK. Я рассматриваю возможность кроссплатформенности (т.е. Appcelerator). С высокого уровня кажется, что эти мобильные кроссплатформены создали слой сценариев Java, который работает как с IPhone, так и с Android!

  • Есть мысли об использовании кросс-платформенной технологии для написания ОДНОГО мобильного приложения для iPhone и Android?

  • Есть ли какие-либо фундаментальные проблемы с вызовом службы WCF RESTful в javascript?

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

Спасибо!

Ответы [ 3 ]

2 голосов
/ 06 февраля 2010

Поскольку вы явно хотите использовать технологии Microsoft - предложения по Mono, вероятно, имеют смысл для вас и, безусловно, облегчат ситуацию.

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

Я понимаю, что мы не живем в идеальном мире, но если бы мы это сделали, вы бы разработали отдельный клиент для каждой платформы - оптимизированный под потребности каждой платформы. Если ваше приложение не выполняет много манипуляций с данными, слой данных теперь абстрагируется от сервера благодаря вашему интерфейсу JSON, поэтому вы не получите большой выгоды от совместного использования объектов данных между реализациями.

Поскольку кажется, что вы реализуете проект в небольшой команде (сами?), Я бы посоветовал вам взглянуть на реализацию веб-решения с использованием HTML-JavaScript, взаимодействующего с сервером через JSON.

Другой вариант заключается в том, что вы используете Flex / Air-клиент для Windows и Mac и Flash на Android и решение Adobe для компиляции Flex / Air в код iPhone.

Удачи, хотя.

0 голосов
/ 05 февраля 2010

Вы должны рассмотреть MonoTouch для iphone. Вы сможете поделиться большей частью кода рабочего стола. Я бы использовал Mono на Mac по той же причине. Android странный человек. В конце концов кто-то может создать что-то вроде MonoTouch для Android, но не скоро, чтобы помочь вам.

0 голосов
/ 01 февраля 2010

Для вашей клиентской стороны вы можете рассмотреть возможность использования Appclerator , потому что он будет работать на всех нужных вам платформах с небольшим или отсутствующим дополнительным кодом и предназначен для использования в приложениях типа веб-приложений

...