2011-12-26 2 views
0

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

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

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

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

спасибо.

EDIT Будет использоваться шаблон запроса-запроса, при этом веб-приложение всегда будет экземпляром запросов. Это то, что я имел в виду при двустороннем общении.

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

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

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

+0

Какой источник данных вы используете? в примере MSSQL? –

+0

@ Рэйчел - какое общение у них будет? Если это простая передача данных, то ваше приложение Windows может поместить его в БД, а вызов веб-приложения вытащить его из БД, в противном случае - для WCF. – Bibhu

+0

@Trikks Да, я буду использовать SQL Server 2008 R2. Моя идея - иметь только приложение C#, взаимодействующее с БД, так что веб-приложение будет в основном касаться уровня презентации. Я, вероятно, буду использовать JSON для отправки данных в оба приложения. – Rachel

ответ

4

Что вы описали в своем комментарии типична три приложение.

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

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

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

+0

Да, вы правильно поняли мою ситуацию. Я буду использовать шаблон запроса-запроса, при этом интерфейс всегда будет создавать экземпляры запросов, а внутренний сервер будет единственным, доступным для БД. У внешнего приложения должны быть объекты в памяти, которые загружаются из БД после начала выполнения и сохраняются до их остановки. Так будет ли удобнее приложение C# Console? – Rachel

+0

Консольное приложение никогда больше не подходит, когда интерфейсом является ASP.NET. –

0

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

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

+0

Я бы предпочел не использовать сторонние библиотеки для этого проекта, но спасибо за предложение. Я никогда раньше не использовал WCF. Если я создам приложение WCF, могу ли я хранить объекты в памяти, как объяснялось в моем вопросе (обновлено)? – Rachel

+0

@Rachel SignalR может выглядеть как сторонняя библиотека, но это не так. Основными разработчиками этого проекта являются основные члены команды ASP.NET: Дамиан Эдвардс и Дэвид Фаулер. и я уверен, что этот проект будет встроен в основной ASP.NET в будущих выпусках. – tugberk

0

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

Смежные вопросы