какие технологии использовать для промежуточного сервера в .net? - PullRequest
7 голосов
/ 02 сентября 2010

Не знаю, глупый ли это вопрос! Я искал в Интернете без полезных хитов. Я пользователь точечной сети (C #). Я хочу разработать сервер, его можно назвать сервером промежуточного программного обеспечения (на самом деле я не уверен), который выполняет следующие задачи: У меня есть сервер, который нельзя изменить, и много клиентов, которые запрашивают сервер и получают результаты. Я могу изменить клиентов. Теперь я хочу разработать программное обеспечение, которое получает запросы клиентов, проверить, занят ли сервер или сколько задач поставлено в очередь на сервере, сохранить запросы клиентов во временной базе данных, если сервер занят, получать запросы в очереди в временную базу данных и пересылать на сервер, а затем получать результаты и пересылать клиентам и тому подобное. Вопросы

  1. какие технологии лучше использовать, оставаясь в dotnet, WCF, веб-серверах, удаленном взаимодействии или других?

  2. насколько сложна эта задача, если предположить, что существуют такие задачи, как обработка транзакций, распределение нагрузки, ведение журнала, механизмы проверки безопасности и т. П.?

  3. что я должен прочитать, чтобы выполнить эту задачу?

  4. во время поиска я нахожу такие вещи, как промежуточное ПО в java, но не в dotnet. в чем причина?

Ответы [ 4 ]

5 голосов
/ 02 сентября 2010

Краткий ответ: Если по звуку, если вы просто хотите буферизовать свой сервер от перегрузки, вы можете избежать асинхронной обработки запроса.WCF изначально поддерживает MSMQ.MSMQ поддерживает DTC, поэтому сообщения можно размещать и удалять транзакционно.

Большая тема Middleware - довольно «нечеткий» термин (как и такие термины, как «Транзакции», «ESB» и т. Д.).У MS действительно есть продукты в этом пространстве.Это включает в себя:

  • Технологии очередей (промежуточное программное обеспечение, ориентированное на сообщения) MSMQ (альтернативы включают IBM Websphere MQ, Rabbit MQ и т. Д.)
  • Мониторы XA / ACID / TP - Microsoft DTC
  • EAI - у Microsoft есть BizTalk для интеграции (здесь есть много других поставщиков)
  • ESB - у Microsoft есть BizTalk. Вы также можете посмотреть на MS Managed Service Engine (MSE) для виртуализации служб. Это несуществующий
  • Для интеграции RESTful, WebAPI
  • BPM / BPEL - Опять же, у MS есть BizTalk.Может также включать мониторинг и отчетность на уровне бизнеса
  • Операционные аспекты - как вы уже описали - управление, мониторинг, балансировка нагрузки, регулирование, соглашения SLA об услугах и т. Д.), WCF.Здесь есть большое количество опций конфигурации, которые в основном отвлекают от необходимости менять код при переключении между протоколами.

И это просто царапает поверхность:)

1 голос
/ 09 сентября 2010

Для № 1:

Пожалуйста, предоставьте дополнительную информацию о вашей задаче: 1. Примерная оценка количества клиентов 5, 100, 10000, 1000000 2. Предполагаемый размер данных, которые будут принудительно возвращаться между клиентом и сервером. 3. Где клиенты будут работать в Интернете или Интранете? Какие-либо ограничения по безопасности? 4. Клиент будет автономным приложением или веб-приложением (например, страница или виджет на странице)?

Для № 3:

Если все, что вы упомянули в # 2, должно быть реализовано как часть задачи, то я не верю, что вы можете просто прочитать некоторые книги и реализовать их. Или результат внедрения будет далек от производственных требований. Я рекомендую нанять архитектора или передать его опытной команде. Просто для общей информации могу порекомендовать прочитать - «Шаблоны архитектуры корпоративных приложений» Мартина Фаулера. Но просто чтение не может заменить опыт.

Для № 4: Я полагаю, что есть и промежуточные системы для .Net. Существуют коммерческие системы промежуточного программного обеспечения, которые работают с Java, .Net и C ++.

ИМО Microsoft выбрала другой подход, чем сообщество Java. Они предоставили фреймворки, которые позволяют вам создавать то, что вы называете «промежуточным программным обеспечением». Сначала загляните в WCF & REST. Очередь может быть легко реализована в БД. Если этого недостаточно, загляните в WCF & MS MQ. Если вам не нравится MS MQ, посмотрите на Amazon SQS. Если этого недостаточно, загляните в BizTalk.

* * 1012 P.S. Платформы Java и .NET настолько огромны, что вы можете создавать то, что хотите, на обоих. Нет смысла переходить с .NET на Java или с Java на .Net только потому, что вы думаете, что что-то упущено в платформе.
1 голос
/ 02 сентября 2010

Промежуточное программное обеспечение - это очень широкий термин, вы конкретно говорите о прокси:

http://en.wikipedia.org/wiki/Proxy_server

http://en.wikipedia.org/wiki/Proxy_pattern

Это также промежуточное ПОкурс.

Другие ответы зависят от того, какие технологии вы используете для взаимодействия клиент-сервер (веб-сервисы, REST, json, ...?), насколько сложна логика вашего сервера и сколько у вас запросов.для обработки, ...

Самая простая вещь, которая могла бы работать в вашем сценарии, - это балансировщик нагрузки (http://en.wikipedia.org/wiki/Load_balancing_(computing)), который перенаправляет запросы на два или более серверов, в зависимости от нагрузки на сервер.Очевидно, что это работает, только если вы можете реплицировать экземпляры вашего сервера.

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

0 голосов
/ 02 сентября 2010

В .NET рекомендуемый подход для сервера промежуточного программного обеспечения заключается в использовании корпоративных сервисов , предоставляющих .NET API через COM +.

COM + предоставляет все функции, которые вы упоминаете (в пункте 2), для приложений .NET.

WCF заменяет удаленное взаимодействие, но это все о совместимости.Несмотря на то, что он обеспечивает функции безопасности и транзакций, они предназначены для связи между двумя конечными точками, а не объектами вашего приложения.

...