- Я хочу, чтобы он работал на серверах Windows.
- Это будет сервер облачного типа - он будет состоять из модулей \ частей, работающих на разных машинах по всему миру, использующих http \ tcp + upnp для соединения друг с другом
- На каждой машине будут контролироваться \ модули мониторинга \ наблюдения для обеспечения статистики производительности
- Эта сеть будет работать с большим количеством потоковых \ ВИДЕО / АУДИО потоковых данных \ 1008 *
- Он будет использовать FFMPEG для перекодирования, а OpenGL, OpenCV и т. Д. Для фильтрации (.NET-оболочки существуют и работают BTW)
- Он не будет использовать WCF или IIS
- Я хочу развивать его в команде из 2-4 разработчиков, умных студентов.
Так нормально ли создавать это в C # .Net, или я не буду тратить свое время на обещания легкости, которые он может предоставить разработчику и перейти на C \ C ++?
Так разумно ли в моем случае написать серверное приложение на C #?
Оффтоп - почему не WCF
Предупреждение: здесь становится субъективным.
WCF будет полезен, если у вас есть большой корпус с относительно небольшим обменом данными за один сеанс обслуживания.
Когда у вас есть видео, LIVE видео, все становится сложным. Большие объемы данных, большое количество пользователей одновременно входят и выходят из вашего сервиса.
Попробуйте сделать потоковую передачу видео через HTTP-привязку - чем попробуйте другие, чем вы поймете, почему мне не нравится идея прямой трансляции с WCF - это медленно, так как way2much не требуется для информации о прямой трансляции и в конце концов Вы когда-нибудь видели приложение для потокового видео на WCF? Нет - вы не ... возможно, вы видели + - живое видео на паре Silverlight + IIS, которое мне не нравится, потому что оно предназначено только для решения потоковой передачи видео Silverlight \ WindowsMediaPlayer, хотя я хочу большего.
Мне нравится иметь кроссплатформенные клиенты с доступным пользовательским интерфейсом. И мне не нравится (это все тут мое личное мнение - поэтому оно субъективно) Silverlight + IIS + WCF group. Итак, что мне делать - правильно переходить к сокетам, потокам в таких старых и простых форматах, как FLV и Flash, в качестве внутреннего клиента - в некоторых частях проще в разработке, более консервативный способ создания живого видео через Интернет, чем тот, который вы получаете от MS сегодня.
Мне нравится потоковое вещание FLV в реальном времени, потому что вы просто открываете сокет и начинаете отправлять на него живые видеоданные FLV (для каждого FLV-заголовка пользователя, а затем для тега FLV по одному: тег видео, аудио тег, тег видео, аудио и т. д.), и Flash проигрывает его! Без специального \ необычного кода. Он быстрый, легкий в поддержке и не заставляет клиента ничего нового \ необычного. И вы на стороне сервера можете использовать эту «TAG» форму представления видео / аудио данных.
Вот вкратце, поэтому я просто не хочу использовать WCF - сложно получить живое видео, воспроизводимое из него на стороне клиента, никаких общих преимуществ для живого видеосервера.
И когда большая часть живых данных проходит через сокеты, зачем беспокоиться об использовании WCF для управления сервисами.
В течение последней половины 2009 года и первой половины 2010 года я увлекался WCF, потоковым видео в реальном времени, silverlight и flash, сравнивая процесс создания клиента и сервера, читая различные форматы с командой настороженно интересных разработчиков. В общем, в конце проекта у нас было много мини-серверов, транслирующих живые данные, и множество разных клиентов, получающих их. Сравнивая все, что мы сделали, мы пришли к выводам, которые близки к тому, который я вам представляю.
Именно поэтому я не хочу использовать WCF в своем ближайшем проекте - я не хочу думать о том, как доставлять медиаданные, я хочу сосредоточиться на их фильтрации \ редактировании.
Почему возник вопрос
Мы начали играть с FFmpeg \ OpenCV в C, и довольно просто манипулировать данными, используя их ... в C ... в Linux ...
Но когда мы начали играть с привязками .Net (сейчас мы играем с Tao.FFmpeg), мы обнаружили, что в большинстве случаев мы много играем с C # Marshal и имеем 2 переменные для его аналога C (проблема указатели) и тд. Я надеюсь, что мы не увидим такой проблемы с Emgu CV, но это меня немного пугает ...