По договоренности
Требуется на основе готовых библиотек (от inetlab.com) разработать сервер, который будет принимать несколько входящих SMPP-подключений, собирать вошедшие СМС в очередь в памяти, и передавать их в одно исходящее подключение по SMPP.
При этом нужно логировать в отдельные папки (для каждого входящего SMPP подключения отдельная папка с именем, совпадающим с именем подкдюченного юзера):
1) все входящие SMS в файлы, для каждого интервала свой файл, т.е. например 2011-10-20 21-00.txt, 2011-10-20 22-00.txt, 2011-10-20 23-00.txt в каждом файле записаны СМС, полученные за час до времени, указанного в файле. Сам интервал возможно настраивать (от 1 до 60 минут). Это нужно, чтобы можно было дослать СМС, если вдруг сервер неожиданно отключится. Можно предложить какое-то другое, более надежное решение (кроме БД).
2) общее количество принятых СМС, количество СМС в очереди, количество отправленных СМС все это с N минутным интервалом, файлы создаются только если какие-то СМС прошли за это время
3) в отдельный файл ошибки (ошибки подключений и другие)
Необходимо предусмотреть корректное управление очередью входящих SMS, когда в пиковую нагрузку количество входящих SMS превышает пропускную способность исходящего подключения. Нужно использовать эффективную с точки зрения использования памяти структуру для хранения очереди.
Работа сервера должна полностью осуществляться в памяти, с логированием в файлы, без использования БД. Вся настройка должна производиться через конфигурационные файлы, никакой интерфейс не нужен.
От разработчика необходим опыт работы на .NET с сетевыми протоколами, желательно с SMPP 3.4, с потоками и очередями. Требуется выдать надежный высокопроизводительный код, работающий под высокой нагрузкой без потерь SMS.
В дальнейшем нужно будет проект развивать, добавить возможность работы с несколькими исходящими подключениями, работу с БД (MS SQL), сделать интерфейс для настройки, но именно сейчас требуется как можно быстрее создать первую версию решения, позволяющего быстро пропускать SMPP трафик, считать его и сохранять для отчетности.