Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Где расположить соединение и взаимодействие с сервером в приложении с GUI  (Прочитано 5834 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Man1BLR
Участник

by
Offline Offline
Пол: Мужской

« : 21-10-2010 17:08 » 

Всем привет. Есть клиент, есть сервер. У клиента присутствует GUI. Реализовав GUI задался вопросм, где лучше всего расположить соединение с сервером. Соединение реализуется с помощью класса Socket, но на ответы с SocketChannel тоже интересно посмотреть. Сервер пишется свой.

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

Приблизительный код, котороый выводит только GUI
Код:
public class MainFrame extends JFrame {

    /** DEFAULT_WIDTH ширина фрейма по умолчанию */
    public static final int DEFAULT_WIDTH = 600;
    
    /** DEFAULT_HEIGHT высота фрейма по умолчанию */
    public static final int DEFAULT_HEIGHT = 500;

    public static final int DEFAULT_PORT = 2525;
    public static final String DEFAULT_HOST = "localhost";

    public MainFrame() {

        this.setTitle("PC Builder");
        this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

        MainPanel mainPanel = new MainPanel();
        
        this.add(mainPanel, BorderLayout.CENTER);
    }

    private static void createAndShowGUI() {

        MainFrame mainFrame = new MainFrame();
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
    }

    private static Socket createServerConnection() {
        Socket socket = null;
        try {
            socket = new Socket(DEFAULT_HOST, DEFAULT_PORT);
        } catch (UnknownHostException ex) {
            socket = null;
            Logger.getLogger(MainFrame.class.getName()).log(
                    Level.SEVERE, null, ex);
        } catch (IOException ex) {
            socket = null;
            Logger.getLogger(MainFrame.class.getName()).log(
                    Level.SEVERE, null, ex);
        }

        return socket;
    }

    public static void main(String [] args) {

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }        
        });
    }
}
« Последнее редактирование: 21-10-2010 17:27 от Алексей1153++ » Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #1 : 21-10-2010 17:23 » 

смотрите в сторону MVC, MVC2
Записан

С уважением Lapulya
Man1BLR
Участник

by
Offline Offline
Пол: Мужской

« Ответ #2 : 21-10-2010 17:28 » 

Конечно MVC это хорошо, но вот не могу никак найти хорошую информацию и пример, чтобы хорошенько разобраться в этом паттерне. Сложности естественно возникают с контроллером.
Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #3 : 21-10-2010 17:30 » 

А какие у вас сложности с контроллером?

Ща найду ссылку на книгу
http://rutracker.org/forum/viewtopic.php?t=2944228

В книге много лишнего, поскольку там рассматривается ASP.NET, но паттерн там полностью обсосан, так что пронуская все что относится к ASP.NET MVC, можно получить данные о паттерне.
« Последнее редактирование: 21-10-2010 17:34 от lapulya » Записан

С уважением Lapulya
Man1BLR
Участник

by
Offline Offline
Пол: Мужской

« Ответ #4 : 21-10-2010 17:44 » 

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

Добавлено через 3 минуты и 10 секунд:
Ща найду ссылку на книгу
http://rutracker.org/forum/viewtopic.php?t=2944228
Интересно, а такая на русском есть, просто на русском быстрее прочитаю)))
« Последнее редактирование: 21-10-2010 17:47 от Man1BLR » Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #5 : 21-10-2010 18:19 » 

ничего зацикливать не надо, я java не знаю, поэтому пример оповещения контроллера приведу на с++
Код:
class Model
{
      typedef std::list<IController *> Controllers;
      Controllers theControllers;
      void doSomething() { /* do anything what model needs */ invokeControllers(); }
      void invokeControllers()
      {     Controllers::iterator iter = theControllers.begin();
             for(; iter < theControllers.end() ; iter++)
                  iter->modelDoSomething();
      }
      public void addController(IControleer * controller) { theControllers.push_back(controller);}
};

class IContrpoller
{
       public virtual void modelDoSomething() = 0;
};

class Controller : public IController
{
       public void modelDoSomething() {}
}
на java у меня примеров нет, а на ASP.NET у тебя есть целая книга, есть ли она на русском я не знаю
« Последнее редактирование: 21-10-2010 18:24 от lapulya » Записан

С уважением Lapulya
Man1BLR
Участник

by
Offline Offline
Пол: Мужской

« Ответ #6 : 21-10-2010 18:55 » 

lapulya, спасибо огромное за выделенное время для меня и за пример спасибо, щас немножко почитаю про MVC поподробнее, а потом уж если что не пойму то напишу
Записан
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #7 : 21-10-2010 19:17 » new

да, не за что, тут таких отзывчивых пол форума... Может они просто на java не смотрят ))) я бы и сам не обратил внимания, еслиб в теме не было написано про архитектурный вопрос.

Кстати с подобными вопросами, которые на самом деле к языку отношение имеют мало, лучше писать в другой раздел, ну например в технологии разработки систем.
« Последнее редактирование: 21-10-2010 19:20 от lapulya » Записан

С уважением Lapulya
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines