Текст С помощью схем слоев можно проектировать архитектуру приложений и проверять код на соответствие этой архитектуре. Вы ...

Текст
С помощью схем слоев можно проектировать архитектуру приложений и проверять код на соответствие этой архитектуре. Вы можете отслеживать задачи, относящиеся к моделям, связывая рабочие элементы Team Foundation Server с элементами модели. Это обеспечивает возможности отслеживания в моделях, интегрированной среде разработки и коде как при проектировании новых решений, так и при обновлении имеющихся решений. 

Сначала рассмотрим архитектуру приложения в виде схемы слоев. 

Архитектор команды предложил выполнить рефакторинг части приложения, чтобы оно соответствовало архитектуре на схеме слоев. Эта задача находится в списке невыполненной работы и связана со схемой слоев.



Действие
В Team Explorer в разделе "Моя работа" дважды щелкните рабочий элемент задачи, чтобы отрыть его. 

В рабочем элементе щелкните "Другие ссылки".

В разделе "Связь модели" дважды щелкните ссылку на модель, в результате чего будет открыта схема Petshop.layerdiagram в проекте PetShopModels.

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



Действие
В меню "Архитектура" выберите "Окна", "Обозреватель слоев".

На схеме слоев щелкните слой Business. Найдите артефакты в обозревателе слоев.

На схеме слоев щелкните слой Business правой кнопкой мыши. Выберите команду "Проверить архитектуру". (Ее выполнение может занять некоторое время.)

В окне "Список ошибок" найдите ошибки (каждая из них помечена красным крестом). Дважды щелкните первую ошибку, чтобы найти код, вызывающий ее.

Текст
Мы обнаружили в коде несколько зависимостей, которые противоречат архитектуре. Метод Insert класса Order делает недопустимые вызовы методов в двух других классах. На схеме слоев метод Insert сопоставлен слою Business, который не должен напрямую взаимодействовать со слоями двух других классов. Вместо этого слой Business должен взаимодействовать со слоем PaymentGateway.

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



Действие
На схеме слоев щелкните слой PaymentGateway.

В окне обозревателя слоев найдите пространство имен PaymentGatway.

В обозревателе решений разверните проект PaymentGateway, тип PaymentProcessor и просмотрите методы-члены.

Откройте файл PaymentProcessor.cs, чтобы увидеть определения методов-членов.

Текст
Просматривая код, сопоставленный слою PaymentGateway, мы видим, что часть функций метода Insert можно передать методу ProcessPayment. Создадим схемы последовательностей, чтобы визуально сравнить высокоуровневые структуры и последовательности вызовов для этих двух методов.



Действие
Дважды щелкните первую ошибку, чтобы увидеть код. Мы видим определение метода Insert.

Щелкните в любом месте определения метода Insert правой кнопкой мыши. Выберите команду "Сформировать схему последовательностей". Оставьте все параметры неизменными. Нажмите кнопку "ОК".

Схема последовательностей показывает, что метод Insert вызывает методы классов CreditCardService и OnlinePaymentService.

В файле PaymentProcessor.cs щелкните правой кнопкой мыши внутри определения метода ProcessPayment. Выберите команду "Сформировать схему последовательностей". Оставьте все параметры неизменными. Нажмите кнопку "ОК".

Переключайтесь между схемами последовательностей и определите, на какие классы ссылаются методы Insert и ProcessPayment, а на какие - нет. Покажите совпадения и различия.

Текст
Мы видим, что эти два метода очень похожи и имеют лишь незначительные различия. Выполним рефакторинг метода Insert, чтобы он вызывал метод ProcessPayment. Затем мы снова выполним проверку, чтобы убедиться, что изменения позволили устранить конфликт зависимостей. 



Действие
В определении метода Insert замените код между следующими инструкциями:

if (order.CreditCard.CardType == "CreditCardProviderA" || order.CreditCard.CardType == "CreditCardProviderB") 

и:

CalculatePaymentInfo(order);

на следующий код:

PaymentGateway.PaymentProcessor processor = new PaymentGateway.PaymentProcessor();
if (!processor.ProcessPayment(order))
{
          return OrderStatus.Failed;
}


Выполните проверку архитектуры.




Текст

В этом видео мы показали, как с помощью схем слоев описывать требуемую архитектуру приложений и проверять код на соответствие этой архитектуре. Мы также показали, как с помощью схем последовательностей отслеживать вызовы методов между различными классами. Подробнее об описании архитектуры с помощью моделей UML см. в соответствующих видео.
Тег уже не поддерживается как дочерний элемент . Включите этот тег в целевой объект и добавьте имя целевого объекта в атрибут ... Текст В Visual Studio для получения диагностических данных об уже развернутых приложениях можно использовать автономный сборщик ... Текст в документе не может быть скопирован, поскольку позиция завершения "{0}" находится перед текущей позицией курсора "{1}". ... Текст С помощью схем слоев можно проектировать архитектуру приложений и проверять код на соответствие этой архитектуре. Вы ... Текст Схемы UML позволяют моделировать пользовательские требования и архитектуру приложений, упрощая обсуждение приложения ... Текст Тестирование производительности и нагрузочное тестирование являются ключом к пониманию того, как будут работать приложение ... Текст хранимой процедуры был изменен только в редакторе. Для отладки измененной версии необходимо сначала завершить отладку, ... Текущее значение {0} ссылается на типы, которые не удается разрешить. Редактирование документа в представлении кода невозможно, ...