Основные различия между J2EE и C # /. Net при разработке веб-сервисов - PullRequest
9 голосов
/ 08 июля 2009

До того, как начать новую работу, он был в основном парнем .NET; Я занимался только разработкой и использованием веб-сервисов на C # /. Net. Однако я отправляюсь в путешествие, чтобы изучить все тонкости работы на платформе J2EE, и мне любопытно, каковы основные различия в этом конкретном типе разработки.

Примечание: Я знаком с языком Java на уровне консоли / простого интерфейса, но не очень хорошо разбираюсь в том, как использовать функциональную архитектуру веб-служб.

Обновление: Хорошие ответы, я просто хотел добавить, что в простой структуре классов веб-сервисов они, кажется, не показывают слишком много различий; но как насчет того, чтобы соединить все это с логикой БД и фактически разместить ее - заставить службу работать и работать / как она взаимодействовала.

Ответы [ 3 ]

9 голосов
/ 09 июля 2009

Хотя существует только один способ создания веб-служб в .NET с использованием технологии Microsoft, веб-службы Java очень фрагментированы. См. этот вопрос, например. Большинство фреймворков могут выполнять как веб-сервисы с контрактом вначале (начиная с файла WSDL), так и с кодом вначале (начиная с исходного кода). Каждый фреймворк также имеет свой способ размещения веб-службы. Например, среда Axis2 развертывает веб-службы в виде файлов AAR внутри веб-приложения Axis2. Другие платформы развертывают веб-сервисы в файле WAR (Axis2 также может это сделать).

Для людей, переходящих из .NET в Java, всегда сложно выбрать каркас веб-служб. Интеграция с IDE также не так хороша, как с Visual Studio.

Если вы новичок в J2EE, я рекомендую взглянуть на Spring Framework. Spring имеет подпроект (Spring-WS), который позволяет создавать веб-службы, работающие по контракту. Интеграция с БД и логикой приложения намного проще с помощью инфраструктуры внедрения зависимостей, такой как Spring. Apache CXF также прекрасно интегрируется с Spring.

4 голосов
/ 08 июля 2009

Я никогда не пробовал раньше веб-сервисов, но недавно. И я был поражен тем, насколько просто это в Java с JAX-WS.

Вот веб-сервис

@WebService
class BusinessProcess implements IBusinessProcess
{
   public HelloWorldObject helloWorld()
   {
      return new HelloWorldObject("Earth");
   }
}

И это все.
Если вам нужна дополнительная логика и уровень, такой как DB Entities, он добавляется так же просто, как я мог представить только с EJB3.

Насколько я только что видел способ определения WebService в C #, большой разницы нет вообще.

    [WebService(... )]
    public class BusinessProcess : System.Web.Services.WebService
    {
        [WebMethod]
        public HelloWorldObject helloWorld()
        {
            return new HelloWorldObject("Earth");
        }
    }

Я полагаю, что есть разница в дальнейшей логике.

3 голосов
/ 09 июля 2009

Я бы предложил использовать Apache CXF для спина. Я выбрал его для крупного проекта здесь, на работе, и он прекрасно работает! Какие преимущества это дает вам по сравнению с EJB3? Хммм ... я не могу сказать, за исключением того, что я использовал CXF, в то время как EJB3 никогда не был у меня на кухне (неясные рекомендации Cheers).

С CXF код не намного больше, чем пара аннотаций тут и там. Он использует стандартные аннотации JAXB для сортировки объектов. Через конфигурацию также можно разместить перехватчики до и после вызовов веб-сервисов, если вы хотите вести логирование и т. Д.

@WebService
public interface UserService {
    public Collection<User> getUsers(@WebParam(name = "systemID") Long sysID);
}

Обратите внимание, что аннотация @WebParam является необязательной, но в WSDL выглядит лучше, чем такие вещи, как arg0. Да, может быть немного конфигурации XML, чтобы согласиться с этим:

<!-- the #userService is a reference to a Spring bean defined elsewhere --> 
<jaxws:endpoint id="userWS" implementor="#userService"
    implementorClass="com.blah.blah.blah.UserServiceImpl"
    address="/UserService" />

Что касается использования веб-сервисов ... Изучив Руководство пользователя CXF, вы узнаете, как это делается: http://cwiki.apache.org/CXF20DOC/developing-a-consumer.html

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