ASP.Net webservice / asmx / ashx / независимо от программирования - PullRequest
0 голосов
/ 25 марта 2011

Мне нужно создать прокси-сервер (возможно, с плохим описанием), который получает XML-файл от третьей стороны, сохраняет его, отправляет его другой третьей стороне, возвращает ответ и передает его исходной третьей стороне. Давайте назовем весь этот процесс «единицей».

Должен ли я использовать веб-сервис? Общий обработчик? Что-то еще?

Возможно, мне придется делать 20 «единиц» в секунду, но я знаю, что каждая «единица» может занимать от 30 секунд до минуты, так что на самом деле я имею в виду, что мне нужно иметь 1200 таких «единиц» "работает одновременно, на всех различных этапах процесса, который я описал выше.

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

«Приложение» будет состоять только из 1 страницы и будет работать по SSL. Это, вероятно, будет единственной вещью на этом сервере в любое время, чтобы гарантировать, что этот маленький процесс не является узким местом.

Что в .Net было бы хорошим (быстрым и масштабируемым) способом добиться этого? У меня нет какого-либо эффективного предела того, что мне понадобится в отношении аппаратного обеспечения, поэтому я могу получить кричащий аппарат, если он не гарантирует узких мест.

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Поскольку веб-сервисы основаны на XML, вам необходимо учитывать тот факт, что в итоге вы можете получить «XML внутри XML». Но отчасти я бы сказал, что использование веб-сервисов - хороший путь. Главным образом потому, что он совместим, прост в использовании и понятен (для будущих сопровождающих).

Однако есть альтернативы, которые используют меньше ресурсов процессора / памяти / полосы пропускания. WCF предоставляет несколько моделей для решения этой проблемы, как в отношении работы под IIS, так и в виде отдельного процесса и типа передачи.

Лично я фанат старой доброй двоичной передачи по TCP. REST может быть одним из способов, поскольку он совместим (например, внешний прокси / кеширование) и, по сути, дает вам двоичную передачу с небольшими издержками.

Мне также нравится оставлять грязную работу IIS, поэтому я избегаю автономных приложений WCF. Я предполагаю, что IIS быстрее и стабильнее, чем то, что я могу сделать легко.

Может быть, мой вопрос о высокой одновременной нагрузке может помочь.

2 голосов
/ 25 марта 2011

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

Хорошая статья о WCF:http://www.c -sharpcorner.com / UploadFile / sridhar_subra / 116 /

...