Стандартная библиотека языка Go: сеть и веб-приложения
Содержание:
1. Стандартная библиотека;
2.Сеть и веб-приложения (Вы читаете данный раздел);
3. GUI и базы данных;
4. Будущее «новой волны».
Особого внимания заслуживают пакеты для работы с сетью - ведь именно сетевые взаимодействия являются «коньком» языка Go. Большой пакет net обеспечивает работу с обычными низкоуровневыми сокетами включая TCP/IP- и UDP-сокеты, пакет smtp дает возможность работы с почтой по соответствующему протоколу, а названия пакетов http, html, xmi и websockets говорят сами за себя. Пакет http по сути включает в программу готовый web-сервер, который может принимать и обрабатывать запросы. Минимальная программа «Hello, world» в клиент-серверном варианте на Go выглядит так:
Следует отметить, что Go дает прекрасную возможность начинающим и уже опытным программистам выполнять разработку по на заказ (http://doslab.ru) по упрощенным схемам. Это никак не сказывается на функциональности готовых программ, в вот времени экономит много!
В функции main мы регистрируем функцию, которая будет вызываться при поступлении запроса от клиента, и говорим серверу «слушать» порт 8080. Функция requestHandler получает контекст запроса в виде объектов типа http.ResponseWriter и http.Request (в этом примере просто игнорируются). Эта функция пишет в стандартный поток сакраментальную фразу «Hello, world», но пакет http перенаправляет стандартный вывод так, что он передается клиенту, а не пишется в консоль как обычно. Если теперь запустить эту программу и набрать в адресной строке браузера localhost:8080, то отобразится страница с текстом «Hello, world».
Пример более продвинутого веб-сервера, способного отображать запрошенные пользователем файлы, приведен в статье Дмитрия Выкочко (http://www.ibm.com/deveioperworks/ru/ iibrary/i-go 02/index.htmi) - не буду ее дублировать. В целом работа с сетью в Go, как и следовало ожидать, реализована очень хорошо, но назвать ее простой мне все-таки сложно. Чтобы написать нетривиальное веб-приложение на Go, нужно хорошо разбираться в «анатомии» HTTP-запросов и потратить немало времени на написание функций, обрабатывающих данные форм. Официальный вики-раздел, посвященный веб-приложениям (http://golang.org/doc/codeiab/wiki), дает хорошее представление о технике их написания на Go. В общем, Go - это далеко не PHP в плане удобства, но он гораздо лучше подходит для разработки веб-приложений, чем любой другой компилируемый язык. К слову, существует проект gopages (http://code. google.com/p/gopages), который направлен как раз на то, чтобы сделать Go таким же «встраиваемым» в веб-страницы языком, как PHP.
1. Стандартная библиотека;
2.
3. GUI и базы данных;
4. Будущее «новой волны».
Особого внимания заслуживают пакеты для работы с сетью - ведь именно сетевые взаимодействия являются «коньком» языка Go. Большой пакет net обеспечивает работу с обычными низкоуровневыми сокетами включая TCP/IP- и UDP-сокеты, пакет smtp дает возможность работы с почтой по соответствующему протоколу, а названия пакетов http, html, xmi и websockets говорят сами за себя. Пакет http по сути включает в программу готовый web-сервер, который может принимать и обрабатывать запросы. Минимальная программа «Hello, world» в клиент-серверном варианте на Go выглядит так:
package main;
import (
"http"
"fmt"
)
func requestHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, world")
}
func main() {
http.HandleFunc("/", requestHandler)
http.ListenAndServe(":8080", nil)
}
import (
"http"
"fmt"
)
func requestHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, world")
}
func main() {
http.HandleFunc("/", requestHandler)
http.ListenAndServe(":8080", nil)
}
Следует отметить, что Go дает прекрасную возможность начинающим и уже опытным программистам выполнять разработку по на заказ (http://doslab.ru) по упрощенным схемам. Это никак не сказывается на функциональности готовых программ, в вот времени экономит много!
В функции main мы регистрируем функцию, которая будет вызываться при поступлении запроса от клиента, и говорим серверу «слушать» порт 8080. Функция requestHandler получает контекст запроса в виде объектов типа http.ResponseWriter и http.Request (в этом примере просто игнорируются). Эта функция пишет в стандартный поток сакраментальную фразу «Hello, world», но пакет http перенаправляет стандартный вывод так, что он передается клиенту, а не пишется в консоль как обычно. Если теперь запустить эту программу и набрать в адресной строке браузера localhost:8080, то отобразится страница с текстом «Hello, world».
Пример более продвинутого веб-сервера, способного отображать запрошенные пользователем файлы, приведен в статье Дмитрия Выкочко (http://www.ibm.com/deveioperworks/ru/ iibrary/i-go 02/index.htmi) - не буду ее дублировать. В целом работа с сетью в Go, как и следовало ожидать, реализована очень хорошо, но назвать ее простой мне все-таки сложно. Чтобы написать нетривиальное веб-приложение на Go, нужно хорошо разбираться в «анатомии» HTTP-запросов и потратить немало времени на написание функций, обрабатывающих данные форм. Официальный вики-раздел, посвященный веб-приложениям (http://golang.org/doc/codeiab/wiki), дает хорошее представление о технике их написания на Go. В общем, Go - это далеко не PHP в плане удобства, но он гораздо лучше подходит для разработки веб-приложений, чем любой другой компилируемый язык. К слову, существует проект gopages (http://code. google.com/p/gopages), который направлен как раз на то, чтобы сделать Go таким же «встраиваемым» в веб-страницы языком, как PHP.