Библиотека для создания сетевых приложений (асинхронная + многопоточная + SSL)
От: _facelift  
Дата: 12.11.15 03:05
Оценка: -2
Всем привет. Зацените библиотеку.

http://www.doronix.com/asynchronous-multithreaded-c++-tcp-server-with-ssl
http://www.doronix.com/doronix-network

Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.
Что думаете про нее?
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
От: abrec Россия  
Дата: 12.11.15 07:33
Оценка:
Здравствуйте, _facelift, Вы писали:

_>Всем привет. Зацените библиотеку.


_>http://www.doronix.com/asynchronous-multithreaded-c++-tcp-server-with-ssl

_>http://www.doronix.com/doronix-network

_>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.

_>Что думаете про нее?
Привет!
Зачем ОНО????
Библиотека для создания сетевых приложений (асинхронная + мн
От: _facelift  
Дата: 12.11.15 07:57
Оценка:
Здравствуйте, abrec, Вы писали:

A>Привет!

A>Зачем ОНО????

Быстро написать сервер. Из примера:

1) Наследуем наш сервер от базового класса

class HttpServer: public doronix::TcpServer
{
public:
      HttpServer(const std::string &documentRoot, bool useAsyncFiles, int bufferSize, int threadCount = 0);
      doronix::Client *createClient(doronix::TcpSocket *socket) override;
private:
      std::string _documentRoot;
      bool _useAsyncFiles;
};


2) Переопределяем функцию createClient, где мы вернем нашего клиента отнаследанного от базового класса.
Каждый раз когда пришло подключение — вызывается эта функция

#include "httpserver.h"
#include "httpclient.h"

HttpServer::HttpServer(const std::string &documentRoot, bool useAsyncFiles, int bufferSize, int threadCount)
      : doronix::TcpServer(doronix::READING_FROM_STATE, bufferSize, threadCount)
      , _documentRoot(documentRoot)
      , _useAsyncFiles(useAsyncFiles)
{
}

doronix::Client *HttpServer::createClient(doronix::TcpSocket *socket)
{
      HttpClient *client = new HttpClient();

      client->setDocumentRoot(_documentRoot);
      client->setUseAsyncFiles(_useAsyncFiles);

      return client;

}


3) Пишем клиента. Надо отнаследовать наш клиент от класса doronix::Client и переопределить 2 метода — readFromClient, writeToClient
Когда мы читаем и приходят данные — вызывается readFromClient, а когда мы перевели клиента в пишущий режим вызвав setWriting,
вызывается writeToClient чтобы послать данные клиенту.

Начальный стейт (читаем или пишем) вы выставляем в сервере. Меняем методами setReading/setWriting. Возможно поставить чтение
на паузу вызвав suspendWriting/resumeWriting.

В папке examples есть 2 примера — http сервер и чат. Библиотека асинхронная, многопоточная с поддержкой SSL, и возможностью асинхронно/синхронно послать файл.
Все очень быстро.

class HttpClient: public doronix::Client
{
public:
      HttpClient();
      ~HttpClient();

      int readFromClient(const char *buffer, int size) override;
      int writeToClient(char *buffer, int size) override;
 
      void setDocumentRoot(const std::string &documentRoot);
      void setUseAsyncFiles(bool useAsyncFiles);

private:
      bool _headerSent = false;

      doronix::File *_file = 0;
      std::string _buffer;

      std::string _documentRoot;
      bool _useAsyncFiles = true;
};
Отредактировано 12.11.2015 8:00 Николай Ивлев . Предыдущая версия .
Re: Библиотека для создания сетевых приложений (асинхронная + мн
От: abrec Россия  
Дата: 12.11.15 08:06
Оценка:
Здравствуйте, _facelift, Вы писали:


_>Быстро написать сервер. Из примера:


Зачем эти лисапеды? Зачем писать сервер быстро?
Re[2]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: _facelift  
Дата: 12.11.15 08:14
Оценка:
Здравствуйте, abrec, Вы писали:

A>Здравствуйте, _facelift, Вы писали:



_>>Быстро написать сервер. Из примера:


A>Зачем эти лисапеды? Зачем писать сервер быстро?


Предположим работодателю нужен сервер. Он нанимает программиста. И тот полгода чета пишет. И тут возникают варианты

1) А ему надоело и он увольняется. Есть нерабочий код, что с ним делать не понятно
2) Он не смог и увольняется. В итоге у тебя опять куча какого-то кода
3) Он таки написал. Но чета как-то не очень — медленно и баги.
4) Все ОК

Т.е. исход не ясен. Могут написать а могут и не написать или написать плохо

Что имеем. Предположим зарплата программиста этого 80 тысяч рублей в месяц. И за полгода на сервер потрачено
6 * 80 = 480 тысяч рублей. Это по курсу 60 рублей за доллар 8 тысяч долларов. Многовато как-то. Здесь же у нас
за 500 баксов готовая библиотека. Все есть — надо только логику под себя написать. Экономишь $7500 и полгода,
которые еще не известно как завершаться.
Re[3]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: abrec Россия  
Дата: 12.11.15 08:43
Оценка: +1
Здравствуйте, _facelift, Вы писали:


_>Предположим работодателю нужен сервер. Он нанимает программиста. И тот полгода чета пишет. И тут возникают варианты


_>1) А ему надоело и он увольняется. Есть нерабочий код, что с ним делать не понятно

_>2) Он не смог и увольняется. В итоге у тебя опять куча какого-то кода
_>3) Он таки написал. Но чета как-то не очень — медленно и баги.
_>4) Все ОК

_>Т.е. исход не ясен. Могут написать а могут и не написать или написать плохо


_>Что имеем. Предположим зарплата программиста этого 80 тысяч рублей в месяц. И за полгода на сервер потрачено

_>6 * 80 = 480 тысяч рублей. Это по курсу 60 рублей за доллар 8 тысяч долларов. Многовато как-то. Здесь же у нас
_>за 500 баксов готовая библиотека. Все есть — надо только логику под себя написать. Экономишь $7500 и полгода,
_>которые еще не известно как завершаться.

Если программист, которого наняли писать сервер, причем на с++, не знаком с сокетами, фрэймворками типа boost::asio, zmq, возможно в скором времени std::asio,
то ему, для написания, качественного сервера, ваша библиотека не поможет.
Если жэ знаком, то она для него бесполезна.
Re[4]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: _facelift  
Дата: 12.11.15 08:55
Оценка:
Здравствуйте, abrec, Вы писали:

A>Здравствуйте, _facelift, Вы писали:


A>Если жэ знаком, то она для него бесполезна.


Спорно. В asio нет ни потоков, ни SSL. Все это надо самому прикручивать, а это время.
Re[5]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: abrec Россия  
Дата: 12.11.15 09:03
Оценка: +1
Здравствуйте, _facelift, Вы писали:

_>Спорно. В asio нет ни потоков, ни SSL. Все это надо самому прикручивать, а это время.

Советую перечитать документацию.
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 12.11.15 12:11
Оценка: +1
Здравствуйте, _facelift, Вы писали:

_>Всем привет. Зацените библиотеку.


_>http://www.doronix.com/asynchronous-multithreaded-c++-tcp-server-with-ssl

_>http://www.doronix.com/doronix-network

_>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.

Это всё есть в ASIO. Боле того, для чего-то серьёзного лучше выбрать тот же ACE чем это и тем более ОНО ЗА ДЕНЬГИ ЧТО ЛИ?!
_>Что думаете про нее?
Не нужна (с).
Sic luceat lux!
Re[2]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: _facelift  
Дата: 12.11.15 14:38
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Здравствуйте, _facelift, Вы писали:


_>>Всем привет. Зацените библиотеку.


_>>http://www.doronix.com/asynchronous-multithreaded-c++-tcp-server-with-ssl

_>>http://www.doronix.com/doronix-network

_>>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.

K>Это всё есть в ASIO. Боле того, для чего-то серьёзного лучше выбрать тот же ACE чем это и тем более ОНО ЗА ДЕНЬГИ ЧТО ЛИ?!
_>>Что думаете про нее?
K>Не нужна (с).

Дык не дорого же. Но моя же проще? Быстрее же написать можно.
Re[3]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: SkyDance Земля  
Дата: 12.11.15 23:54
Оценка: +1
_> Но моя же проще? Быстрее же написать можно.

Реклама своих коммерческих продуктов на этом форуме не поощряется. И правильно, в общем-то, что не поощряется.

Что до вашей библиотеки, то... "я могу печтатать со скоростью 1000 знаков в минуту! Но такая фигня получается". (С)

Завязываться на неизвестно чью библиотеку, неизвестно как поддерживаемую, с неизвестными условиями багфиксов. На это не пойдет ни один вменяемый менеджер. Поэтому моя рекомендация такова: публикуйте ее как open source и продвигайте как только можете. Деньги вы заработаете со своей известности, если библиотеку хоть кто-то будет пользовать. Заработаете много больше, чем даже если продадите ее пару раз. А больше все равно не купят.
Re[4]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: _facelift  
Дата: 13.11.15 01:38
Оценка: :)
Здравствуйте, SkyDance, Вы писали:

_>> Но моя же проще? Быстрее же написать можно.


SD>Деньги вы заработаете со своей известности, если библиотеку хоть кто-то будет пользовать. Заработаете много больше, чем даже если продадите ее пару раз. А больше все равно не купят.


А как можно заработать на своей известности в этом случае? Ну или как вообще можно заработать на open source библиотеке?
Re[5]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: SkyDance Земля  
Дата: 13.11.15 02:06
Оценка: +1
_>А как можно заработать на своей известности в этом случае?

Очень просто: вас с руками оторвут большие компании. Архитектором или программистом за большие деньги.

_>Ну или как вообще можно заработать на open source библиотеке?


...а вот в sales или менеджмент не возьмут.
Re[6]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: _facelift  
Дата: 13.11.15 02:40
Оценка:
Здравствуйте, SkyDance, Вы писали:

_>>А как можно заработать на своей известности в этом случае?


SD>Очень просто: вас с руками оторвут большие компании. Архитектором или программистом за большие деньги.


_>>Ну или как вообще можно заработать на open source библиотеке?


SD>...а вот в sales или менеджмент не возьмут.


Спасибо. Буду думать.
Re[5]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 13.11.15 11:40
Оценка:
Здравствуйте, _facelift, Вы писали:

_>Здравствуйте, SkyDance, Вы писали:


_>>> Но моя же проще? Быстрее же написать можно.


SD>>Деньги вы заработаете со своей известности, если библиотеку хоть кто-то будет пользовать. Заработаете много больше, чем даже если продадите ее пару раз. А больше все равно не купят.


_>А как можно заработать на своей известности в этом случае? Ну или как вообще можно заработать на open source библиотеке?

Саппорт, добавление новых фич.
Sic luceat lux!
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
От: Denwer Россия  
Дата: 19.01.16 07:22
Оценка:
Здравствуйте, _facelift, Вы писали:

_>Всем привет. Зацените библиотеку.


_>http://www.doronix.com/asynchronous-multithreaded-c++-tcp-server-with-ssl

_>http://www.doronix.com/doronix-network

_>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.

_>Что думаете про нее?

Общая стоимость единицы
41181.11 RUB

Это ошибка?
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 19.01.16 13:36
Оценка:
_>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.
Для того чтобы утверждать что бибилотека работает быстро, нужно показать какие-нибудь тесты. Может для тебя 10000 сообщений в сек. это уже быстро. Ну и "быстро" разное бывает.

_>Что думаете про нее?

Ничего не думаю. За деньги и без доступа к исходным кодам такая вещь никому точно нужна не будет. Чем это лучше asio или poco? Правильный ответ, скорее всего, ничем не лучше, а наоборот хуже, с кучей багов, открытого трекера нет, соответственно посмотреть историю исправления багов мы не можем, оценить исходники мы не можем. Оно пытается HTTP парсить? Ну а где документация и табличка с описанием поддержки протокола HTTP? Или оно полностью протокол поддерживает? Об этом ни слова нигде, может я конечно плохо читал, но в библиотеке за 500$ такие вещи должны легко находиться, КМК.
Re: Библиотека для создания сетевых приложений (асинхронная + многопоточная + SS
От: Pzz Россия https://github.com/alexpevzner
Дата: 16.02.16 13:35
Оценка:
Здравствуйте, _facelift, Вы писали:

_>Асинхронная + многопоточная + SSL. Работает очень быстро, сама маленькая.

_>Что думаете про нее?

Я бы не купил. И даром бы не взял.

Кто его знает, сколько там тонких криптографических ошибок в реализации SSL? Библиотека клозедсорсная, видимости никакой. И автор вроде не является общеизвестным авторитетом в области криптографии. Даже простой вопрос, какие версии SSL/TLS поддерживаются, не имеет очевидного ответа. Окажется в итоге, что там SSL 2.0 с RC4 в качестве шифра и MD5 в качестве подписи
Re[4]: Библиотека для создания сетевых приложений (асинхронная + многопоточная +
От: qqqqq  
Дата: 26.02.16 23:38
Оценка:
Здравствуйте, abrec, Вы писали:
A>Если программист, которого наняли писать сервер, причем на с++, не знаком с сокетами, фрэймворками типа boost::asio, zmq, возможно в скором времени std::asio,
A>то ему, для написания, качественного сервера, ваша библиотека не поможет.
A>Если жэ знаком, то она для него бесполезна.
Я не часто видал чтобы кого-то нанимали писать сервер. Обычно нанимают людей работать работу, а сервер там или еще что — дело 10-е, по ходу дела видно будет. Контракторов — да вполне могут нанять только написать сервер. Бывают софто-инженеры — профессионалы не в каких-то там серверах и бустах, а в определенной проблемной области. Ничего удивительного если эти инженеры не курсах про boost::asio. Но нынче все сферы деятельности используют сети, поэтому время от времени сервер писать приходится многим. Я так понял товарищ предлагает класс, который значительно упростит этот процесс. Это отличная идея. Трудно сказать воплощена ли она тоже отлично и стоит ли оно таких денег — я не разбирался в деталях. Тем не менее, вот он написал как любой дурак может легко и просто создать сервер на основе его библиотеки классов. Вы можете предложить тоже самое с этим boost::asio? Или эта асиа — такая сложная штука что для нее понадобится нанимать спец. программиста?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.