Как лучше всего подключить клиент C # Desktop к удаленной базе данных MySQL? - PullRequest
3 голосов
/ 30 декабря 2011

Я только изучаю c # и программирую клиент Windows, который собирает данные о температуре с компьютера и должен отправить их в удаленную базу данных linux mySQL.

Я собирался запрограммировать ее непосредственно в c #клиент, но я хочу узнать больше способов сделать это и получить опыт.А прямое программирование будет менее безопасным и, скорее всего, потребует дополнительного разъема.

Может кто-нибудь из вас посоветует мне другие способы или способы, которыми вы могли бы это сделать?

  • Есть ли способ программирования программы на C #, которая работает как веб-служба на моем Linux-сервере MySQL?Где я должен искать / искать, чтобы узнать больше об этом.Это называется чем-то особенным?Или, может быть, это не сделано в C #?

  • Должен ли я запрограммировать скрипт php, который принимает запросы HTTP SEND / GET от моего клиента C # Desktop?

  • Любой другой способ?

Каким образом вы наиболее «профессиональны» в реальном мире?Пытаюсь учиться самостоятельно!: D

ФОРМАТ:

  • Рабочий стол Windows: клиент, запрограммированный на C #, который получает временные данные и должен отправлять на сервер
  • Сервер Linux: Запускает Apache и сервер MySQLс базой данных уже настроен.Закрыто снаружи Соединения

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Мой совет - настроить веб-сервис для связи с вашим клиентом Windows.Прямое подключение к серверу MySQL нормально, если они оба находятся в одной локальной сети, но если нет, например, ваш Windows-клиент работает на каком-то ноутбуке, путешествующем везде, или даже сервер MySQL разрешает только локальное входящее соединение, вам следует настроить веб-службу,Также http-соединение обычно может проходить через брандмауэры, в то время как соединения через другие порты блокируются.

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

1 голос
/ 30 декабря 2011

Настоятельно не рекомендуется напрямую выставлять MySQL Server в Интернет. Кроме того, это дает вам довольно грубый набор прав доступа, которых может быть недостаточно для вашего приложения, поэтому запуск какого-либо серверного приложения является правильным способомgo.

  • С помощью mono вы можете просто запустить много кода на основе .Net (и, следовательно, C #) на сервере Linux.Практическое правило: если у него нет графического интерфейса Winforms и нет P / Invoke, все будет работать нормально.Конечно, для этого требуется моно на сервере, чего нет на большинстве коммерческих хостов.
  • Запуск сервера на PHP делает его более переносимым, но снижает производительность.Кроме того, он не позволяет некоторым из ваших бизнес-логических объектов быть реализованными в сборке DLL и использоваться с обеих сторон.
  • Что касается протокола: выберите яд.Опять же, практическое правило заключается в том, что предопределенным протоколам, таким как SOAP, обычно требуется немного больше работы (и больше обучения с первого раза), но в долгосрочной перспективе они, как правило, более устойчивы.

ДляВаш особый сценарий использования Я лично выбрал бы быстрое решение на основе PHP, где протокол - это просто GET с несколькими параметрами, один из которых - температура (и), а другие - аутентификация клиента.

0 голосов
/ 30 декабря 2011

Если датчик температуры генерирует события, то я «перенесу» данные из окна Windows в окно Linux - это сохранит последнюю проверку часто и не обнаружит обновлений.Однако, если вы просто берете образцы температуры, я бы «взял» данные с машины Linux.В любом случае, если вы хотите использовать HTTP, вам понадобится веб-служба с обеих сторон.

В качестве альтернативы, вы можете просто подключиться к базе данных MySQL удаленно из C # и записать данные напрямую (тогда никакой веб-службы не будетбыть обязательным).Это может быть самый быстрый способ заставить это работать.

Вопрос «который профессионален» субъективен - все три варианта выше подойдут.Просто сделайте код ясным и лаконичным:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...