Программа с интерфейсом C# и серверной частью Java: хорошая или плохая практика?

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

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

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

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

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

Чтобы уточнить: единственное, что предлагается сделать в Java, - это переформатировать XML?

Jim Anderson 12.12.2008 22:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
1
4 637
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

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

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

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

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

эта ссылка была идеальной. Я собираюсь отправить ему ссылку и убедить :) спасибо груз

udpsunil 12.12.2008 22:29
Ответ принят как подходящий

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

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

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

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

Вы даже не знаете, в чем его проблема, и предлагаете схему? И под очень неоднозначным названием (tinyurl.com/5gjfjt). В остальном я согласен с вами.

Nate Parsons 15.12.2008 01:53

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

Другие вопросы по теме