На чем писать веб сервис
Перейти к содержимому

На чем писать веб сервис

  • автор:

На чем писать веб-сервис

Ранее не сталкивался с веб-сервисами, не могу определится на чем его лучше реализовать php или java ?
В каких случаях лучше использовать java , а в каких php ?
Заранее спасибо. Нагрузка ожидается не большая (дипломная работа), в ней действительно не существенно на чем писать, но ожидают несколько проектов с большой нагрузкой, хотелось бы так раз услышать про тонкости — в каких случаях лучше использовать для веб-сервиса java , а в каких php ?

Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
задан 13 мар 2013 в 11:20
2,629 1 1 золотой знак 15 15 серебряных знаков 26 26 бронзовых знаков

А требования какие? Нагрузка? Сколько запросов ожидается? Что делать сервис будет? Сколько серверов планируется? Если в финансах не ограничены и можете плодить кучу серверов и нагрузку между ними балансировать — то тогда в принципе роли нет никакой на каком языке. Хотя здесь тоже свои тонкости. В общем опишите задачу подробнее — тогда можно будет посоветовать что выбрать в вашем случае. А так — если десяток пользователей и вся нагрузка — отправить/получить пост/сообщение, то разницы и правда нет.

13 мар 2013 в 11:40

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Холиварная тема по сути своей)

Писать нужно на том, что вы понимаете или хотите выучить (если это учебно-развлекательный проект) Или на том, подочто что проще найти исполнителей.

С точки зрения СНГ — программисты на РНР стоят дешевле и представленны в более широком ассортименте, с другой стороны среди Java-кодеров меньше дилетантов (прошу никого пишущего на РНР не обижаться, автор ответа сам регулярно пишет и пописывает на этом языке, но позволяет себе иметь именно такое мнение).

С точки зрения нагрузки на сервера, Java-шустрее, и в чем-то более гибка, чем РНР (за счет правильной многопоточности, красивого классового наследования, нормальной типизации, статических объектов). Но писать на Java — медленее чем на РНР. И c CMS’ками под Java существенно хуже, чем под РНР.

Создание веб-службы с помощью Visual C# .NET

Эта статья поможет написать веб-службу с именем MathService, которая предоставляет методы для сложения, вычитания, деления и умножения двух чисел.

Исходная версия продукта: Visual C# .NET
Исходный номер базы знаний: 308359

Требования

В следующем списке описаны рекомендуемые оборудование, программное обеспечение, навыки и знания, которые вам нужны:

  • Microsoft Windows
  • Сервер сведений о Интернете
  • Visual Studio .NET

В этой статье предполагается, что вы знакомы с разделом Использование интегрированной среды разработки Visual Studio .NET.

Создание веб-службы ASMX

  1. Откройте Visual Studio .NET.
  2. В меню Файл выберите Создать , а затем — Проект. В разделе Типы проектов выберите Проекты Visual C#. Затем выберите ASP.NET веб-служба в разделе Шаблоны. Введите MathService в текстовом поле Расположение , чтобы изменить имя по умолчанию (WebService1) на MathService.
  3. Измените имя веб-службы по умолчанию, созданной из Service1.asmx , на MathService.asmx.
  4. Выберите Щелкните, чтобы переключиться в представление кода в среде конструктора.
  5. Определите методы, которые инкапсулируют функциональность службы. Каждый метод, который будет предоставляться из службы, должен быть помечен атрибутом WebMethod перед ним. Без этого атрибута метод не будет предоставляться из службы.

Примечание. Атрибут требуется WebMethod не для каждого метода. Полезно скрыть некоторые сведения о реализации, вызываемые методами общедоступной веб-службы, или для случая, WebService когда класс также используется в локальных приложениях. Локальное приложение может использовать любой открытый класс, но только WebMethod методы будут доступны удаленно как веб-службы.

Добавьте следующий метод в MathServices созданный класс:

[WebMethod] public int Add(int a, int b) < return(a + b); >[WebMethod] public System.Single Subtract(System.Single A, System.Single B) < return (A - B); >[WebMethod] public System.Single Multiply(System.Single A, System.Single B) < return A * B; >[WebMethod] public System.Single Divide(System.Single A, System.Single B) < if(B == 0) return -1; return Convert.ToSingle(A / B); >

Среда выполнения ASP.NET возвращает страницу справки веб-службы, описывающую веб-службу. На этой странице также можно протестировать различные методы веб-службы.

Использование веб-службы

  1. Откройте Visual Studio .NET.
  2. В разделе Типы проектов выберите Проекты Visual C#, а затем выберите Консольное приложение в разделе Шаблоны.
  3. Добавьте ссылку на веб-службу MathService в новое консольное приложение. На этом шаге создается класс прокси-сервера на клиентском компьютере. После существования прокси-класса можно создавать объекты на основе класса . Каждый вызов метода, который выполняется с объектом , затем отправляется на универсальный идентификатор ресурса (URI) веб-службы (обычно в виде запроса SOAP).
    1. В меню Проект выберите Добавить веб-ссылку.
    2. В диалоговом окне Добавление веб-ссылки введите URL-адрес веб-службы в текстовом поле Адрес и нажмите клавишу ВВОД. Если на локальном компьютере размещена веб-служба, URL-адрес будет равен http://localhost/MathService/MathService.asmx .
    3. Выберите команду Добавить ссылку. Кроме того, можно ввести URL-адрес файла обнаружения (MathService.vsdisco) или выбрать веб-ссылки на локальном веб-сервере в области слева, чтобы выбрать службу MathService из списка.
    4. Разверните раздел Веб-ссылки Обозреватель решений и обратите внимание на используемое пространство имен.
    localhost.Service1 myMathService = new localhost.Service1(); 
    Console.Write("2 + 4 = ", myMathService.Add(2,4)); 

    Ссылки

    Дополнительные сведения см. в разделе Программирование веб-служб с помощью веб-служб справки по Visual Studio .NET или в разделе ASP.NET веб-службы и клиенты веб-служб ASP.NET в руководстве разработчика по платформа .NET Framework.

    Дополнительные сведения см. на следующих веб-сайтах:

    • Документы Office веб-Service-Enabled XML
    • UDDI: веб-служба XML

    Обратная связь

    Были ли сведения на этой странице полезными?

    На чем можно писать сервер: основные языки для бэкенда?

    Сервер можно писать на различных языках программирования, используя разные технологии и фреймворки в зависимости от ваших потребностей, опыта и предпочтений. В данной статье подобраны популярные варианты, которые используют для серверов.

    Python

    Python популярен для разработки веб-серверов с использованием фреймворков, таких, как Flask и Django. Flask обеспечивает минимальный набор инструментов для создания веб-приложений, в то время как Django предоставляет более полное решение для разработки. На хостинге от ГиперХост вы можете развернуть свое Python приложение за короткое время используя инструкцию на нашем блоге:

    Два из наиболее популярных фреймворков для создания веб-приложений на Python — это Flask и Django:

    Flask — это минималистичный и гибкий фреймворк, который предоставляет базовые инструменты для создания приложений. Он позволяет разработчикам выбирать, какие компоненты использовать, и не навязывает строгую структуру проекта. Это делает его отличным выбором для небольших и средних проектов.

    Django — это более полный и мощный фреймворк, который включает в себя множество инструментов для автоматизации многих аспектов разработки веб-приложений, таких как аутентификация, маршрутизация, административный интерфейс и многое другое. Он отлично подходит для создания крупных и сложных приложений.

    Python также имеет богатую экосистему библиотек для работы с HTTP, обработки запросов и ответов, взаимодействия с базами данных и другими аспектами разработки веб-приложений.

    JavaScript (Node.js)

    Node.js позволяет запускать JavaScript на сервере. Это особенно хорошо подходит для создания высокопроизводительных сетевых приложений. Вы можете использовать фреймворки, такие, как Express.js, для упрощения процесса разработки серверных приложений. Размещение Node.js проектов также доступно на виртуальном хостинге с панелью управления Cpanel от ГиперХост, а также на всех тарифах виртуальных серверов.

    Node.js — это среда выполнения JavaScript, которая позволяет выполнять код на стороне сервера, а не только в браузере. Вот почему Node.js хорошо подходит для создания веб-серверов.

    Node.js имеет большое и активное сообщество разработчиков, что означает множество библиотек и модулей, доступных для использования. Это упрощает разработку различных аспектов веб-приложения, таких как обработка маршрутов, взаимодействие с базами данных, работа с API и т.д.

    Java

    Java является классическим выбором для разработки масштабируемых серверных приложений. Вы можете использовать фреймворки, такие как Spring и Apache Struts, чтобы облегчить разработку. Java приложения вы можете разместить на всех тарифах виртуальных серверов от ГиперХост.

    Одним из ключевых преимуществ Java является его способность работать на различных платформах без изменений в коде. Принцип «write once, run anywhere» делает Java подходящим для разработки веб-серверов на разных операционных системах.

    Существует множество фреймворков, созданных для разработки веб-приложений на Java. Например, Spring — это один из наиболее популярных фреймворков, который обеспечивает множество инструментов для создания разнообразных серверных приложений, от простых API до сложных корпоративных систем.

    С множеством обучающих материалов, книг и онлайн-ресурсов Java может быть хорошим выбором для разработчиков с разным уровнем опыта. Однако стоит заметить, что разработка на Java может быть более громоздкой по сравнению с некоторыми более современными языками, и некоторые аспекты могут потребовать более многочисленного кода по сравнению с более лаконичными языками.

    C#

    Если вы разрабатываете приложения для платформы Microsoft, то C# с фреймворком ASP.NET может быть хорошим выбором для создания веб-серверов. Данный тип приложений вы можете захостить только на VDS с ОС Windows от ГиперХост.

    ASP.NET MVC и ASP.NET Core предоставляют высокоуровневый и гибкий способ организации кода, обработки запросов и управления данными. Они поддерживают модульность, шаблоны проектирования, что делает их привлекательными для сложных проектов. C# известен своей строгой типизацией и множеством механизмов безопасности, что способствует созданию надежных веб-приложений.

    Ruby

    Ruby on Rails — это фреймворк на Ruby, который упрощает и ускоряет процесс разработки веб-приложений. Ruby имеет простой и выразительный синтаксис, что делает код более читаемым и понятным. Это способствует быстрой разработке и уменьшает количество необходимого кода.

    Ruby on Rails предоставляет возможность создавать настраиваемые компоненты и модули, что позволяет легко добавлять функциональность и расширять приложение по мере необходимости. Ruby on Rails поддерживает тестирование и обеспечивает инструменты для создания автоматизированных тестов, что помогает убедиться в надежности и корректности приложения.

    PHP

    PHP был популярным языком для создания веб-серверов, хотя в последнее время его популярность уменьшилась. Тем не менее он все еще используется для разработки веб-приложений. PHP приложения поддерживаются на всех без исключения услугах хостинга и серверов от ГиперХост.

    Синтаксис PHP весьма интуитивен и похож на синтаксис других языков программирования. Это делает его отличным выбором для начинающих разработчиков. PHP легко интегрируется с различными системами управления базами данных, такими как MySQL, PostgreSQL и другими. Это позволяет создавать приложения с обширной функциональностью, основанной на данных.

    Существуют различные фреймворки на PHP, такие как Laravel, Symfony, CodeIgniter и другие, которые упрощают разработку сложных веб-приложений и способствуют соблюдению современных стандартов разработки.

    Rust

    Rust — это язык с акцентом на безопасность памяти и производительность. Он становится все более популярным для разработки серверных приложений, требующих высокой надежности.

    За последние годы вокруг Rust сформировалась богатая экосистема библиотек и фреймворков для разработки веб-приложений. Например, вы можете использовать фреймворк Actix, который предоставляет инструменты для создания асинхронных веб-приложений. Rust также предоставляет инструменты для параллельного и асинхронного программирования, что полезно при разработке многопоточных и асинхронных приложений.

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

    Выбор языка и технологий для сервера зависит от ваших целей, опыта и требований к проекту.

    Веб-сервисы. Шаг 1. Что такое веб-сервис и как с ним работать?

    Веб-сервисы. Шаг 1. Что такое веб-сервис и как с ним работать? - 1

    Заголовок топика – это действительно вопрос, т.к. я сам не знаю, что это и впервые попробую поработать с этим в рамках настоящей статьи. Единственное, что могу гарантировать, что код, представленный ниже, будет работать, однако мои фразы будут лишь предположениями и догадками о том, как я сам все это понимаю. Итак, поехали…

    Введение

    1. SOAP. Прежде чем вызвать удаленную процедуру, нужно этот вызов описать в XML файле формата SOAP. SOAP – это просто одна из многочисленных XML разметок, которая используется в веб-сервисах. Все, что мы хотим куда-то отправить через HTTP, сначала превращается в XML описание SOAP, потом засовывается в HTTP пакет и посылается на другой компьютер в сети по TCP/IP.
    2. WSDL. Есть веб-сервис, т.е. программа, методы которой можно удаленно вызывать. Но стандарт требует, чтобы к этой программе прилагалось описание, в котором сказано, что «да, вы не ошиблись – это действительно веб-сервис и можно у него вызвать такие-то такие-то методы». Такое описание представляется еще одним файлом XML, который имеет другой формат, а именно WSDL. Т.е. WSDL – это просто XML файл описания веб-сервиса и больше ничего.

    Java-университет

    Почему так кратко спросите вы? А по подробней нельзя? Наверное можно, но для этого придется обратиться к таким книгам как Машнин Т. «Web-сервисы Java». Там на протяжении первых 200 страниц идет подробнейшее описание каждого тега стандартов SOAP и WSDL. Стоит ли это делать? На мой взгляд нет, т.к. все это на Java создается автоматически, а вам нужно лишь написать содержимое методов, которые предполагается удалено вызывать. Так вот, в Java появился такой API, как JAX-RPC. Если кто не знает, когда говорят, что в Java есть такой-то API, это означает, что есть пакет с набором классов, которые инкапсулируют рассматриваемую технологию. JAX-RPC долго развивался от версии к версии и в конечном итоге превратился в JAX-WS. WS, очевидно, означает WebService и можно подумать, что это простое переименование RPC в популярное нынче словечко. Это не так, т.к. теперь веб-сервисы отошли от первоначальной задумки и позволяют не просто вызывать удаленные методы, но и просто посылать сообщения-документы в формате SOAP. Зачем это нужно я пока не знаю, вряд ли ответ здесь будет «на всякий случай, вдруг понадобится». Сам бы хотел узнать от более опытных товарищей. Ну и последнее, далее появился еще JAX-RS для так называемых RESTful веб-сервисов, но это тема отдельной статьи. На этом введение можно заканчивать, т.к. далее мы будем учиться работать с JAX-WS.

    Общий подход

    1. Описать интерфейс нашего веб-сервиса
    2. Реализовать этот интерфейс
    3. Запустить наш веб-сервис
    4. Написать клиента и удаленно вызвать нужный метод веб-сервиса

    Сервер

    Запустим IDEA и создадим новый проект Create New Project. Укажем имя HelloWebService и нажмем кнопку Next, далее кнопку Finish. В папке src создадим пакет ru.javarush.ws. В этом пакете создадим интерфейс HelloWebService :

     package ru.javarush.ws; // это аннотации, т.е. способ отметить наши классы и методы, // как связанные с веб-сервисной технологией import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; // говорим, что наш интерфейс будет работать как веб-сервис @WebService // говорим, что веб-сервис будет использоваться для вызова методов @SOAPBinding(style = SOAPBinding.Style.RPC) public interface HelloWebService < // говорим, что этот метод можно вызывать удаленно @WebMethod public String getHelloString(String name); >

    В этом коде классы WebService и WebMethod являются так называемыми аннотациям и ничего не делают, кроме как помечают наш интерфейс и его метод, как веб-сервис. Это же относится и к классу SOAPBinding . Разница лишь в том, что SOAPBinding – это аннотация с параметрами. В данном случае используется параметр style со значением, говорящим, что веб-сервис будет работать не через сообщения-документы, а как классический RPC, т.е. для вызова метода. Давайте реализуем логику нашего интерфейса и создадим в нашем пакете класс HelloWebServiceImpl . Кстати, замечу, что окончание класса на Impl – это соглашение в Java, по которому так обозначают реализацию интерфейсов (Impl – от слова implementation, т.е. реализация). Это не требование и вы вольны назвать класс как хотите, но правила хорошего тона того требуют:

     package ru.javarush.ws; // таже аннотация, что и при описании интерфейса, import javax.jws.WebService; // но здесь используется с параметром endpointInterface, // указывающим полное имя класса интерфейса нашего веб-сервиса @WebService(endpointInterface = "ru.javarush.ws.HelloWebService") public class HelloWebServiceImpl implements HelloWebService < @Override public String getHelloString(String name) < // просто возвращаем приветствие return "Hello, " + name + "!"; >> 

    Запустим наш веб-сервис как самостоятельный сервер, т.е. без участия всяких Tomcat и серверов приложений (это тема отдельного разговора). Для этого в структуре проекта в папке src создадим пакет ru.javarush.endpoint , а в нем создадим класс HelloWebServicePublisher с методом main :

     package ru.javarush.endpoint; // класс, для запуска веб-сервера с веб-сервисами import javax.xml.ws.Endpoint; // класс нашего веб-сервиса import ru.javarush.ws.HelloWebServiceImpl; public class HelloWebServicePublisher < public static void main(String. args) < // запускаем веб-сервер на порту 1986 // и по адресу, указанному в первом аргументе, // запускаем веб-сервис, передаваемый во втором аргументе Endpoint.publish("http://localhost:1986/wss/hello", new HelloWebServiceImpl()); >> 

    Теперь запустим этот класс, нажав Shift+F10. В консоли ничего не появится, но сервер запущен. В этом можно убедиться набрав в браузере строку http://localhost:1986/wss/hello?wsdl. Открывшаяся страница, с одной стороны, доказывает, что у нас на компьютере (localhost) запустился веб-сервер (http://) на порту 1986, а, с другой стороны, показывает WSDL описание нашего веб-сервиса. Если вы остановите приложение, то описание станет недоступно, как и сам веб-сервис, поэтому делать этого не будем, а перейдем к написанию клиента.

    Клиент

    В папке проекта src создадим пакет ru.javarush.client , а в нем класс HelloWebServiceClient с методом main :

     package ru.javarush.client; // нужно, чтобы получить wsdl описание и через него // дотянуться до самого веб-сервиса import java.net.URL; // такой эксепшн возникнет при работе с объектом URL import java.net.MalformedURLException; // классы, чтобы пропарсить xml-ку c wsdl описанием // и дотянуться до тега service в нем import javax.xml.namespace.QName; import javax.xml.ws.Service; // интерфейс нашего веб-сервиса (нам больше и нужно) import ru.javarush.ws.HelloWebService; public class HelloWebServiceClient < public static void main(String[] args) throws MalformedURLException < // создаем ссылку на wsdl описание URL url = new URL("http://localhost:1986/wss/hello?wsdl"); // Параметры следующего конструктора смотрим в самом первом теге WSDL описания - definitions // 1-ый аргумент смотрим в атрибуте targetNamespace // 2-ой аргумент смотрим в атрибуте name QName qname = new QName("http://ws.javarush.ru/", "HelloWebServiceImplService"); // Теперь мы можем дотянуться до тега service в wsdl описании, Service service = Service.create(url, qname); // а далее и до вложенного в него тега port, чтобы // получить ссылку на удаленный от нас объект веб-сервиса HelloWebService hello = service.getPort(HelloWebService.class); // Ура! Теперь можно вызывать удаленный метод System.out.println(hello.getHelloString("JavaRush")); >> 

    Максимум комментариев по коду я дал в листинге. Добавить мне нечего, поэтому запускаем (Shift+F10). Мы должны в консоли увидеть текст: Hello, JavaRush! Если не увидели, то видимо забыли запустить веб-сервис.

    Заключение

    В данном топике был представлен краткий экскурс в веб-сервисы. Еще раз скажу, что многое из того, что я написал – это мои догадки по поводу того, как это работает, и поэтому мне не стоит сильно доверять. Буду признателен, если знающие люди меня поправят, ведь тогда я чему-нибудь научусь. UPD. Продолжаем разговор

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *