Двусторонняя связь между ASP.NET Web App и C # Application - PullRequest
0 голосов
/ 26 декабря 2011

Мне нужно создать сайт и приложение, которые будут общаться вместе, в обоих направлениях. Я буду строить сайт с ASP.NET, а приложение на C #.

Я сам буду хостить сайт, и он будет работать на той же машине, что и приложение.

Я не знаю, какой метод лучше всего использовать для передачи данных между ними. Приложение C # должно быть запущено все время. Должен ли я создать консольное приложение C #, а затем скрыть окно консоли? Или какое-нибудь другое приложение подойдет?

Я искал в Интернете и нашел несколько разных предложений, в том числе сокеты, очереди сообщений, удаленное взаимодействие и WCF. Несколько указателей будут высоко оценены - я новичок во всем этом.

Спасибо.

РЕДАКТИРОВАТЬ Будет использоваться шаблон запрос-ответ, при этом Web-приложение всегда будет тем, которое создает запросы. Вот что я имел в виду под двусторонней связью.

Веб-приложение отправит запрос в фоновое приложение, фоновое приложение выполнит некоторую обработку, а затем отправит ответ обратно в веб-приложение. JSON будет использоваться для отправки данных туда и сюда.

Я буду использовать SQL Server Express 2008 R2, и только внутреннее приложение будет взаимодействовать с базой данных. Веб-приложение будет в основном связано с уровнем представления.

Внутреннее приложение будет иметь объекты в памяти, которые создаются при запуске приложения (с данными, загруженными из БД), а затем сохраняются в БД (во время выполнения и перед закрытием). Будет ли C # консольное приложение идеально подходить для такого рода вещей?

Ответы [ 3 ]

4 голосов
/ 26 декабря 2011

То, что вы описываете в своем комментарии, является типичным трехуровневым приложением.

  • Внешний интерфейс: приложение ASP.NET, размещенное в IIS
  • Серверная часть: приложение .NET, работающее как Служба Windows (или приложение WCF, размещенное в IIS / WAS) с открытыми веб-службами. Приложение переднего плана связывается с этим приложением с помощью веб-служб (или удаленного взаимодействия).
  • База данных: Доступ только к внутреннему приложению.

Просто чтобы прояснить. Двусторонний имеет много значений, но в этих сценариях распространено то, что внешний интерфейс выполняет вызов для внутреннего и внутреннего ответа (шаблон запроса-ответа). Back-end никогда не вызывает front-end - такое взаимодействие очень трудно достижимо с приложением ASP.NET.

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

0 голосов
/ 26 декабря 2011

WCF будет работать, и вы также можете захотеть взглянуть на потребление / запись веб-службы, но в зависимости от того, хотите ли вы, чтобы Sync или Async казались больше похожими на вопрос.

0 голосов
/ 26 декабря 2011

WCF может быть выбором. Вы можете построить, какое соединение вам нужно с WCF.

Также я рекомендую вам взглянуть на SignalR . Это проект, который позволяет вам создать постоянную связь между вашим веб-приложением и клиентским приложением. (ваше приложение C # в этом случае.). По официальным словам, SignalR - это библиотека асинхронной сигнализации для ASP.NET, которая помогает создавать многопользовательские интерактивные веб-приложения в реальном времени.

...