2009-04-21 1 views
6

Я работаю в большом государственном правительственном учреждении, которое является a tad за раз. Наши наборы устарели и бюджетные зависания препятствуют любой подготовке или найму новых сотрудников/консультантов (стрельба людей также невозможна). Проектирование бизнес-объектов, внедрение шаблонов проектирования, создание библиотек и служб кода, модульное тестирование, контроль источника и т. Д. - все, что вы не найдете здесь. Мы столько же, сколько и на Joel Test, как вы можете получить. Хорошей новостью является то, что мы можем только подняться отсюда!Прыжки в архитектуру N-уровня с WCF?

Мы разрабатываем настольные CRUD-приложения (на C++, C# или Java), которые попадают в базу данных Oracle напрямую через соединение ODBC. У нас в основном есть графический интерфейс, заполненный заявлениями SQL и кодом исправления. Нам сказали перейти к сервис-ориентированной n-уровневой архитектуре, чтобы предотвратить прямой доступ к базе данных и удалить потребность Oracle Client на пользовательских машинах.

Есть ли WCF путь, по которому мы должны идти вниз? Мы выполнили несколько прохождений приложений n-уровня (например, this one), и они кажутся простыми в реализации, но мы просто недостаточно знаем, чтобы понять, рассматриваем ли мы даже правильные технологии. Использование созданных .NET наборов данных DataSets кажется приятной остановкой, чтобы сэкономить нам месяц/годы работы (в отличие от создания новых бизнес-объектов с нуля для многочисленных проектов). Является ли этот консервированный подход жизнеспособным для первого шага?

+1

Спасибо за вклад от всех. Похоже, мы можем продолжить тщательное доказательство концепции. Поскольку так много ответов повторялось одно и то же, я просто пошел с первым. – BikeMrown

ответ

4

Недавно я начал использовать службы WCF для своего уровня данных в некоторых веб-приложениях, и я должен сказать, что это расстраивает в начале (первая неделя или около того), но это стоит того, чтобы развернуть код.

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

Из описания окружающей среды, в которой вы находитесь, я уверен, что вы поймете выгоду почти сразу.

+0

Не могли бы вы ответить на http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcf? – Lijo

2

Последняя компания, с которой я работал, выбрала WCF практически по той причине, что вы описали выше. Существует много хорошей документации и книг для WCF, ее относительно легко получить работу, а WCF поддерживает множество опций конфигурации.

Могут возникнуть некоторые головные боли, когда вы начинаете пытаться сгибать WCF, чтобы работать таким образом, который специально не разработан из коробки. Это, как правило, проблемы с конфигурацией. Но сайты вроде этого или IDesign могут помочь вам в этом.

+0

Отличный сайт, который я еще не видел, спасибо! – BikeMrown

+0

Не могли бы вы ответить на http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcf? – Lijo

2

Прежде всего, я бы определенно не (извините за акцент) беспокоиться о том времени, когда вы будете экономить с помощью типизированных DataSet «S против создания собственных бизнес-объектов. Обычно это не то место, где вы потратите большую часть своего времени разработки. Я предпочитаю использовать бизнес-объекты самостоятельно.

В вашей ситуации я хотел бы сначала реализовать концепцию доказательства. Это решение всех проблем, с которыми вы можете столкнуться. Это доказательство концепции должно реализовать весь прецедент, начиная с клиента, извлекать данные из базы данных и возвращать их клиенту. Перед тем, как продолжить, вы должны быть уверены в своей реализации.

Затем о выборе технологии. WCF, безусловно, является хорошим выбором для общения между вашими клиентскими приложениями и уровнем обслуживания. Я полагаю, что и ваши клиенты, и ваш уровень обслуживания станут приложениями C#? Это упрощает работу, поскольку взаимодействие между различными платформами (например, Java/C#) по-прежнему не является тривиальным, хотя оно должно работать в большинстве случаев.

+0

Да, оба слоя клиента и сервиса будут перемещаться только на C#. Я вижу вашу точку зрения на бизнес-объекты. Я просто понял, что типизированные наборы данных могут сделать переход немного менее сложным для некоторых наших разработчиков, поскольку они больше узнают о дизайне объектов. – BikeMrown

+0

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

+0

Мои комментарии могут быть неправильными. Я согласен с вами в отношении типизированных наборов данных и конфликтов с ood. Я имел в виду типизированные наборы данных как временную остановку, чтобы их проект двигался, а не как опыт обучения для бизнес-объектов. Ваша точка зрения заставляет меня задаться вопросом, не смущает ли это их из-за непрозрачности/сложного характера технологии. – BikeMrown

2

Взгляните на Entity Framework (так как для него уже есть несколько поставщиков Oracle) в сочетании с .NET 3.5 SP1, который обеспечивает встроенную сериализацию WCF ваших классов, сгенерированных EF.

Вот хороший блог, чтобы начать: http://blogs.msdn.com/dsimmons

2

CSLA может быть хорошо подходит для N-Tier настольных приложений. Он поддерживает WCF, имеет большое сообщество разработчиков и хорошо документирован. Он очень объектно ориентирован.

+0

Очень интересно! Я еще не сталкивался с CSLA, и это выглядит довольно многообещающе. Спасибо за совет. – BikeMrown

+0

Одним из приятных аспектов CSLA является то, что вы можете использовать Remoting, WCF или собственный протокол, просто меняя конфигурацию, а не ваш код. Через пару лет у Microsoft может быть еще одна предпочтительная коммуникационная структура. CSLA может дать вашему приложению некоторую изоляцию от этого. –

+0

Не могли бы вы ответить на http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcf? – Lijo

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