C # Лучший подход, когда несколько приложений должны общаться - PullRequest
3 голосов
/ 05 марта 2012

Как лучше всего взаимодействовать между различными приложениями? Программное обеспечение должно быть C # 4.0.

Дело в следующем.

Это игра, в которую играют, давайте просто возьмем футбол в качестве примера. Теперь наше программное обеспечение отслеживает все, что происходит на футбольном поле. Результаты, штрафы, реклама на табло, таймеры и т. Д.

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

Теперь мы хотим иметь одно приложение, которое действует как «сервер» или «база данных» (должно быть C # 4.0), и чтобы все другие приложения подключались к этому приложению. Какие существуют виды техники? Может быть, приложение «сервер / база данных» может быть веб-сервером, который запускается и сканирует IP-адрес? Использовать WCF?

Что было бы проще, не только для создания сервера, но и для различных типов приложений для использования?

Обновление

Я мог бы не выразить себя достаточно ясно. «Сервер» также будет выполнять роль промежуточного уровня, который фильтрует, проверяет и возвращает данные. Необходима двусторонняя связь. Более или менее я хочу, чтобы сервер также мог отправлять обновления на устройства.

Примером могут быть игровые часы. Ответственный, скорее всего, будет использовать мобильное приложение, и я хочу, чтобы сервер постоянно передавал в приложение данные о текущем значении игровых часов. (Не знаю, возможно ли это даже при общении с Java)

Ответы [ 3 ]

3 голосов
/ 05 марта 2012

При условии, что связь с сервером без сохранения состояния приемлема, тогда веб-сервис - это путь, а WCF - простой способ достичь этого.

Вы должны принять во внимание, нужна ли вам двусторонняя связь, будет ли сервер инициировать связь в некоторых случаях и т. Д.

Если вы идете по маршруту веб-службы, то потребуется некоторое время для рассмотрения SOAP против REST - в работе с REST все еще есть определенные накладные расходы по сравнению с SOAP в большинстве случаев.

EDIT Это действительно стоит проверить .net MVC 4 (или WCF Web API REST) ​​и SignalR (для реальных мобильных коммуникаций) в зависимости от ваших сроков. Выглядит как настоящий шаг вперед для .net.

2 голосов
/ 05 марта 2012

По моему мнению WCF - это путь.

Если вы разрабатываете его с использованием WCF, то вы отделяете код своего приложения от коммуникационной инфраструктуры.

Создайте свой интерфейс (не пользовательский интерфейс), затем внедрите его в класс, и, когда возникнет необходимость в общении с ним, решите, как выставить его через транспортный носитель (конечная точка / привязка), и все готово, ничего не меняя. в логике вашего приложения.

По сути, у вас есть один контракт WCF, и из него вы можете создать несколько конечных точек WCF для связи.

примеры: Если у вас есть клиентские приложения, которые находятся в той же сети, что и служба WCF, вы можете добавить конечную точку WCF к существующей службе WCF ( NetTCPBinding / NetNamedPipeBinding), чтобы повысить производительность сети,

Если ваш клиент использует интернет для общения, просто добавьте новый webHttpBinding к вашей службе WCF, и теперь вы можете общаться со своей службой WCF из Javascript.

Если ваш клиент - веб-сервер, просто добавьте Basic / WS / WSDual / * HttpBinding * и получите связь и некоторые приятные функции, такие как двухканальная связь.

Суть в том, что вы немного не изменили свой код, он все еще функционирует. Что вы просто сделали, так это выставили ему конечные точки связи, чтобы к ним могли подключаться новые типы клиентов или выполнялись новые требования к приложениям / функциям.

Кроме того, если вы разрабатываете в WCF, тогда вы будете в некотором роде перспективой, поскольку, когда WCF раскрывает новые типы привязок «из коробки», вы готовы общаться с новыми типами клиентов (например, с веб-интерфейсом). сокеты. см. предстоящий веб-интерфейс)

1 голос
/ 05 марта 2012

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

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