Лучший подход к совместному использованию уровня данных и уровня модели между winforms и веб-приложением

В настоящее время я разрабатываю решение ERP для компании. Требования следующие:

  1. Им нужно одно приложение на основе winforms, которое позаботится о таких модулях, как HR, BSC, Inventory и т. Д.

  2. Интернет-решение, которое требует, чтобы все сотрудники получили доступ к своим личным данным, подали заявку на отпуск и т. Д. Это должно быть решение на основе Интернета, к которому можно получить доступ из любого места.

  3. В будущем они также захотят создать систему управления документами, основанную на сети.

Сейчас мы уже закончили работу с некоторыми модулями в приложении winforms, так как это было срочным требованием. Для winforms мы использовали горизонтальный подход к многоуровневой архитектуре. т.е. каждый модуль представляет собой один проект со своим собственным уровнем данных и бизнес-уровнем внутри проекта. Теперь мне нужно начать работу над веб-решением. Мне просто интересно, какой подход будет лучшим подходом для совместного использования уровня данных и уровня модели между приложением winforms и веб-приложением. Кроме того, веб-приложение должно иметь надлежащую безопасность, поскольку это будут конфиденциальные данные. Я подумал о двух подходах, которые могут не охватывать все доступные возможности.

Подходы, о которых я могу думать, следующие:

а. создать веб-сервис, который позаботится о слое данных и моделях. разместите его на сервере и получите доступ к нему через приложение winforms и веб-приложение. Для этого мне нужно будет изменить кодировку, которую я уже сделал. Но это приемлемо, поскольку потребует минимальных усилий в качестве многоуровневой архитектуры. здесь единственное сомнение, которое у меня есть, это то, что приложение winforms будет без необходимости проходить через слой веб-службы и замедлять его.

б. Преобразуйте слой данных и модели в библиотеки DLL. Получите доступ к этим dll в winforms и веб-приложении.

Также относительно веб-приложения, которое будет лучшим подходом:

а. Стоит ли мне использовать веб-приложение на основе MVC3.

б. ИЛИ asp.net и WCF?

Ситуация такова, что я работаю над этим проектом вместе с коллегой, а нас команда состоит всего из двух человек. Так что мы сами принимаем решения обо всем.

У меня довольно хороший опыт работы с winforms, но сравнительно меньший опыт работы с веб-технологиями. Я буду очень признателен за ваше мнение по этому поводу.


person SantoshiKC    schedule 29.08.2012    source источник


Ответы (1)


Если вы хотите, чтобы типы вашей модели точно соответствовали схеме базы данных, вы можете создать их с помощью конструктора Entity Framework и шаблона Self-Tracking Entities. Это позволит легко сериализовать их с изменениями через WCF и сохранять в базе данных и из нее. Затем у вас есть возможность либо создать настраиваемую службу WCF для работы с объектами, либо предоставить контекст Entity Framework напрямую как службу с помощью служб данных WCF (OData).

Что касается уровня представления, два перечисленных вами варианта не исключают друг друга. У вас может быть MVC с WCF, MVC без WCF, WebForms с WCF, WebForms без WCF ... Поскольку вам все равно нужно будет создать службу, а MVC кажется подходящим вариантом в наши дни, я бы, вероятно, порекомендовал MVC приложение, которое использует вашу службу WCF для доступа к данным.

person luksan    schedule 29.08.2012
comment
Спасибо за ваш вклад. В прошлом у меня не было хорошего опыта работы с Entity Framework. Это было очень медленно, и поиск данных занял много времени ... И, как я уже упоминал, у нас уже готовы 3 модуля для приложения winforms. Поэтому я предпочитаю модифицировать существующий код, а не писать целую новую структуру. В основном я буду использовать MVC с WCF. Но в случае winform, если он обращается к данным через службу WCF, не станет ли он медленнее? - person SantoshiKC; 29.08.2012
comment
Я думаю, что это довольно стандартная установка ... но если вы беспокоитесь о производительности с WCF, вы можете использовать свой локальный компонент доступа к данным и службу WCF, реализующую тот же интерфейс. Таким образом, служба WCF могла просто передать локальному компоненту, а приложение ASP.NET могло использовать его напрямую. Другой вариант - поговорить со службой WCF с помощью привязки netNamedPipe, которая, как правило, работает быстрее для клиентов и служб на одном компьютере. - person luksan; 29.08.2012
comment
По сравнению с первоначальной версией Entity Framework значительно улучшила производительность и удобство использования, но я понимаю ваши опасения. Если вы все еще хотите использовать ORM, вот хороший ресурс для выбора: ormeter.net - person luksan; 29.08.2012
comment
Спасибо за объяснение luksan. - person SantoshiKC; 30.08.2012