Peer to Peer (p2p) по сравнению с клиентом / сервером
Ваш вопрос действительно сводится к тому, как вы хотите спроектировать хранилище данных.
P2P: хотите ли вы, чтобы каждая копия приложения сохраняла полную копию данных и обменивалась обновлениями данных с другими клиентами? Это хорошо работает в среде локальной сети, но становится сложным через широкий Интернет. BitTorrent является хорошим примером приложения, которое делает это.
P2P, как правило, имеет более высокую производительность и меньшую стоимость, но его очень сложно реализовать. Вам понадобится сетевой транспорт p2p, такой как PeerChannel, и, скорее всего, механизм синхронизации, такой как Sync Framework, и некоторая форма структурированного локального хранилища данных, такого как SQLite.
Клиент / сервер: хотите ли вы, чтобы на одном главном компьютере (например, на сервере) размещались все данные, и каждый клиент загружал / обновлял данные на сервер? Это хорошо работает в локальной сети или интернет-среде. Веб-браузеры / веб-серверы являются хорошим примером этого.
Клиент / сервер имеет дополнительные издержки, связанные с тем, что на сервере всегда должен быть выделен выделенный сервер, и вам необходимо запрограммировать два приложения: клиентское и серверное. Silverlight или WPF хорошо подходят для клиентской части этого дизайна.
Если вы готовы принять вызов, разработка p2p-приложения может быть очень увлекательной, потому что есть много препятствий, которые необходимо преодолеть, и конечный результат, как правило, более эффективен. Это по существу потребует от вас использования WPF для получения необходимой вам поддержки библиотек / инструментов. Если вам нужно, чтобы что-то работало быстро, вы обнаружите, что инструменты, которые у вас есть, намного лучше поддерживают клиент / сервер, потому что именно так написано большинство приложений. Здесь и WPF, и Silverlight будут работать, но они являются лишь частью решения - вам также понадобятся серверные технологии, такие как SQL Server, ASP.NET, Azure или ...