Im в ситуации, когда я должен спроектировать и реализовать довольно большую систему снизу. У меня есть некоторые (на самом деле) вопросы об архитектуре, на которые я хотел бы получить ваши комментарии и мысли.
Я не надеюсь, что Ive написал слишком много здесь, но я хотел дать вам общее представление о том, что такое система.
Краткая информация о приложениях, прочитайте, если хотите: я не могу поделиться много подробностей о проекте, но в основном это система, в которой мы предлагаем нашим клиентам услугу по управлению своими пользователями. У нас есть горячая линия, в которой пользователи звонят, и наша горячая линия использует приложение (окно) для интуиции для управления данными пользователей и т.д. У клиента также есть веб-приложение, где они могут видеть отчеты, информацию об их бизнесе и пользователях, а также способность изменять свои данные. Изменение данных - это не только данные пользователя, такие как адрес и т.д., Но также информация о продуктах/услугах, которые могут быть у пользователя, что может быть затруднено.
Приложения будут построены на Microsoft.NET Framework 4 с базой данных MS SQL Server 2008. Будет доступно несколько приложений, которые должны получить доступ к этой базе данных, например:
- Интранет-приложение (используется нами и нашей горячей линией)
- Клиентское веб-приложение типа 1
- Клиентское веб-приложение типа 2
- Тип клиентского веб-приложения n разных приложений)
- ...
Теперь моя большая проблема заключается в том, какие части .NET я должен использовать для такой системы. Для "бэкэнд" Ive рассмотрел использование Windows Communication Foundation: Будет ли WCF хорошим выбором?
Приложение интрасети будет приложением, которое должно редактировать множество записей в базе данных. Его нужно легко перемещать с помощью клавиатуры (быстро работать). Имеет такую функцию, как "найти клиента, найти это, найти это, выбрать это и обновить". Какой был бы лучший выбор для разработки этого приложения? Будет ли это WPF или старые добрые Windows Forms? Мне не нужны все графические функции в WPF, такие как 3D, но приложение должно выглядеть красиво (может быть, что-то вроде новых инструментов Visual Studio/Office).
И тот же вопрос касается веб-страниц. У них много работы, но не так много функций, как приложение интрасети, а не столько же данных (гораздо меньше).
Это мои вопросы. Я надеюсь, что выйдет обсуждение, которое откроет мне глаза на некоторые из этих технологий, помогая мне решить, с какой архитектурой идти.
Я хотел бы сказать спасибо заранее, и пусть вы все знаете, что любые мысли будут высоко оценены.
Изменить 1: Похоже, что многие согласны с тем, что мы должны использовать WCF. Когда вы вводите ORM-картупер в слое данных и уровень сервиса с использованием WCF, должно быть достигнуто повышение производительности? У вас есть какие-либо комментарии по этому поводу?
Еще один вопрос, который вызывает всплытие, заключается в том, как мы обрабатываем аутентификацию и роли. Приложение интрасети имеет "главный" доступ (без ограничений). Однако, когда клиент получает информацию из веб-приложения о своих пользователях, то, что возвращается, зависит от того, что их "уровень обслуживания" и несколько других параметров, связанных с клиентом. Каков наилучший способ справиться с этим? Существуют ли какие-либо образцы/лучшие практики?