2016-03-02 4 views
0

Я в процессе создания системы бронирования, которую может использовать регистратор (в отеле) для бронирования номера для клиента. У меня есть некоторый опыт работы с MVC и веб-разработкой, но на этот раз я должен использовать Wpf, который для меня совершенно новый.Вопросы при использовании Wpf & Wcf + MVVM вместе при создании приложения (система бронирования)

Я имею в виду, используя MVVM шаблон, но я немного запутался, где поставить модель, ViewModels и т.д. Я думаю о создании 2 проекта:

Project 1:

Это приложение Wpf, внешняя часть. Он должен работать на собственном компьютере.

Проект 2:

ли приложение службы WCF, бэкенд, который также должен работать на своем собственном компьютере.

Я смущен, когда дело доходит до использования MVVM вместе с этими двумя проектами. Я знаю, что viewModel привязан к представлению, но представление ничего не знает о модели viewModel или модели.

Что я имею в виду создание в проекте Wpf Применение:

  • в папку Models (не уверен)

  • папку

    ViewModel, которая имеет необходимые ViewModels необходимые для создания (например, список доступных номеров или что-то еще).

Эти модели viewModels вызывают службу Wcf, чтобы получить то, что необходимо для отображения представления.

ФОС применение

  • Папка Модели со всеми моделями, созданными (модель номер в качестве примера)

  • DAL папку, в которой я создаю фиктивные данные в базе данных рабочих таблиц.

  • папку Service (с услугами, которые будут обрабатывать запросы от проекта МОФ)


Что же касается меня, это то, что класс должен быть запрос приемника в приложении службы WCF? Допустим, мы запускаем эти два проекта на своем собственном компьютере.

Wpf проект «локальный: 3000» Проект

ФОС «локальный: 3001»

И в моем классе Wpf ViewModel (или соответствующая услуга к нему) делает запрос к проекту ФОС, чтобы получить номер из базы данных. У приложения WCF есть контроллер api для вызова или?

Надеюсь, что кто-то прочитает это и поможет мне с этими недоразумениями, которые у меня есть.

Update:

Есть какой-то ответ от майкрософт на форуме, они сказали, что я должен оставить ФОС и придерживаться Web Api 2 .. Является ли это право на использование Web API вместе с WPF?

+0

Я не проголосовал за это сам, но я уверен, что другие люди будут, потому что это не подходит для формата вопроса StackOverflow. То, о чем вы говорите, называется разработкой «полного стека», у меня был довольно много опыта во всех тех технологиях, которые вы обсуждали, и был бы более чем счастлив предложить совет, если вы мне лично, но честно говоря, я думаю, вам лучше обратиться за помощью к форумам MSDN. –

+0

* "но представление ничего не знает о представлении модели или модели" * Не при ** все **. Представление привязано к свойствам модели и моделей вида, а шаблоны разработаны и отключаются от их типов. Модель и модели ** ** не знают ничего о представлении. Это позволяет им тестировать устройство без необходимости заниматься автоматизацией пользовательского интерфейса. Модель просмотра интерпретирует входные данные пользователя, доставляемого через пользовательский интерфейс, и преобразует их в действия, такие как загрузка некоторых моделей из службы wcf. – Will

+0

Thx для вашего сообщения .. могу ли я задать простой вопрос, в моей ситуации я должен использовать Web Api 2 для вызова из своего приложения Wpf или использовать службу Wcf? У меня уже есть опыт работы с Web Api 2, но не знаю, правильно ли использовать его здесь? – Pixel

ответ

1

Вопрос в том, почему WCF?

Доступно ли всем пользователям доступ к базе данных?

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

Но давайте вернемся к вашей проблеме и проекты:

MVVM это просто шаблон, который вы можете использовать с WPF, в вашем WCF project нечего беспокоиться. Пожалуйста, прочтите этот MSDN article about MVVM

Вы должны держать свой бизнес-логику (Model) в вашем WCF или Database, и если вы используете EF, то будут все модельные классы автогенерируемого. И вы используете EF только в WCF project.

Вы создаете свои представления и ViewModels в своем проекте WPF. Ваш ViewModel - это своего рода переводчик для вашей модели и вида. Предположим, у вас есть текстовое поле, и вы хотите связать его с людьми FirstName и LastName, и эти свойства разделены в вашей модели. Затем вы можете использовать ViewModel для создания другого свойства с именем FullName и предоставить эти два свойства для вашего представления.

Что касается меня, то какой класс должен быть приемником в приложении Wcf? Допустим, мы запускаем эти два проекта на своем собственном компьютере.

проект Wpf "локальный: 3000" Проект

ФОС "локальный: 3001"

Ваш WPF не имеет никакого адреса. Это нормальный Windows application.

ваши WCF сервисы будут выглядеть как этот http://localhost:3001/YourService.svc

И вы можете сообщаться йота его, добавив ServiceReference в вашем WPF project.

И в моем классе Wpf ViewModel (или соответствующая услуга к нему) делает запрос к проекту ФОС, чтобы получить номер из базы данных. Есть ли приложение WCF для вызова или?

API's Вы создаете себя внутри своего Service.

Here - как вы можете создать службу WCF.

+0

Спасибо за ваш ответ. У меня есть хорошее знание, использующее Web Api с инфраструктурой Entity. Является ли веб-api лучшим выбором здесь, или я должен придерживаться этой службы WCF? Я не знаю, как нормальный способ делать что-то, когда дело доходит до Wpf :( – Pixel

+0

Просто несколько несогласных мнений здесь .... утверждение 'классы моделей будут автоматически сгенерированы' применимо только к первой базе данных, большинство мест I Во-вторых, я бы не советовал помещать слой базы данных/ORM в проект WCF, я лично поместил его в свой собственный проект, к которому статически привязаны как проекты WCF, так и WPF во время компиляции, что помогает обеспечить чистый SoC и хороший дизайн архитектуры. –

+0

Он также позволяет значительно улучшить интеграцию с инфраструктурами инъекций зависимостей (например, Ninject), которые могут нуждаться в различной области видимости таких вещей, как контексты базы данных и репозитории объектов, например, «для каждого запроса» для веб-сервисы и «per-form» для WPF. –

 Смежные вопросы

  • Нет связанных вопросов^_^