Программа с интерфейсом C # и Java: хорошая или плохая практика? - PullRequest
4 голосов
/ 12 декабря 2008

У нас с другом возникли разногласия по поводу проблемы разработки приложений. Это простое приложение для управления производством.

По словам моего друга, клиентский интерфейс хранит данные в XML, а Java-программа считывает XML-документ, сохраняет его (в серверной части), применяет некоторую бизнес-логику и снова сохраняет результаты в другом XML. документ. И интерфейс C # будет отображать результат (он хочет использовать сокеты для передачи статуса XML).

Я думаю, что это плохая идея. Я предложил, чтобы все приложение было написано на C # или на Java.

Примечание : приложение является автономным. Он не используется в сети.

Кто-нибудь из вас пробовал это? Пожалуйста, поделитесь своими мыслями:)

Ответы [ 7 ]

11 голосов
/ 12 декабря 2008

Вы правы, и ваш друг дал плохую идею. Кроме того, из вашего вопроса, я вижу, есть несколько проблемных вопросов, я не знаю, с чего начать, поэтому я просто перечислю их, но не в какой-то конкретной ситуации. Но основное правило, по которому вам следует читать, заключается в том, что вы должны согласиться с тем, что чем проще, тем лучше, поскольку Эйнштейн сказал: «Все должно быть сделано как можно проще, но не проще» (или что-то подобное, я не помню точную цитату).

  1. Понятия внешнего интерфейса и внутреннего интерфейса на самом деле не относятся к настольному приложению. Скорее, вы хотите использовать шаблон MVC для разделения интересов. Википедия может быть хорошим местом для начала изучения или рецензирования.
  2. Зачем использовать сокет (который совершенно не нужен), если вам это не нужно. Это первая причина, почему это плохая идея, так как вам не нужно использовать сокеты, если все сделано на языке, работает в одном и том же пространстве процесса (Ваше приложение является настольным или автономным приложением).
  3. Точно так же, почему XML (опять же ненужный). Нет необходимости, потому что вы можете просто передавать объекты Java или C #. С XML, во-первых, возникает сигнал к шуму, поскольку теги добавляются к истинным данным. Затем есть время проанализировать, сконструировать XML, потенциально дополнительные библиотеки и т. Д. Это будет весь тот код, который представлен в подходе вашего друга.

Это самые очевидные причины. Есть и другие причины с точки зрения менеджера или компании:

  1. Для поддержки этого приложения менеджеру или компании необходимо нанять 2 разных набора навыков. Это может быть неверно, так как большинство программистов в любом случае многоязычны. Но это не всегда так.
  2. Что касается развертывания, то теперь вы заставляете своих пользователей устанавливать JRE и .NET Framework только для того, чтобы иметь возможность запускать ваше приложение. И ни один из них не совсем маленький след.
5 голосов
/ 12 декабря 2008

Поговорим о том, чтобы сделать его сложным. Либо Java, либо C #. Один действительно не является бэкэндом для другого. Они оба «делают то же самое», что и языки. Разница лишь в том, хотите ли вы использовать возможности .NET или возможности огромных Java-фреймворков.

3 голосов
/ 12 декабря 2008

Это настольное приложение, которое «не используется по сети» ... Я вообще не вижу необходимости в реальном «бэкэнде».

Напишите настольное приложение на одном языке и сохраните ваши данные в XML.

2 голосов
/ 12 декабря 2008

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

Мне кажется, что ваш друг хочет использовать Java, потому что он лучше понимает структуру обработки XML в Java. Лично я считаю, что взаимодействие между Java и .NET является излишним. Вы сэкономите много человеческих часов и разочарований, написав приложение на одном языке по вашему выбору.

1 голос
/ 12 августа 2012

Возможно использовать возможности настольного приложения C # на внешнем интерфейсе и использовать веб-службу Java Ejb + (Jax-ws) на внутреннем сервере. Приложения C # могут читать SOAP wsdl для создания заглушек и интерфейсов для доступа к бэкэнду Java, реализованному Jax-ws.

1 голос
/ 12 декабря 2008

Для такого типа приложений я бы использовал только один язык.

1 голос
/ 12 декабря 2008

То, что предлагает твой друг, должно быть модульным. Неважно, какой язык вы используете, но если объединить его в один большой проект, вы можете сделать его не модульным.

...