AWAS는 T4Scaffolding 위에 구축된 ASP.NET용 간단하고 독창적인 코드 생성 패키지입니다. AWAS를 사용하면 제공된 엔터티 모델을 기반으로 웹 API 컨트롤러, 서비스, 저장소에 대한 표준 상용구를 빠르게 스캐폴딩할 수 있습니다.
GitHub
NuGet
T4비계(≥ 1.0.8)
패키지 관리자 콘솔 창을 엽니다.
Tools > Library Package Manager > Package Manager Console
다음 명령을 실행합니다.
Install-Package ASP.NET.WebApiScaffolding
모든 명령은 설치 후 패키지 관리자 콘솔에서 실행됩니다.
#### Student
Web API 컨트롤러를 생성하려면
Scaffold WebApiController Student
* 그러면 Student
DbContext 및 서비스도 자동으로 생성됩니다. 이러한 동작을 비활성화하려면 -NoChildItems
플래그를 사용하세요.
* 생성된 웹 API 컨트롤러 및 모든 하위 항목은 서비스 계층 패턴을 기반으로 합니다. 대신 리포지토리 패턴을 기반으로 생성하려면 -Repository
플래그를 사용하세요.
#### Student
위한 서비스를 생성하려면
Scaffold Service Student
* 위와 같습니다.
#### Student
저장소를 생성하려면
Scaffold Repository Student
* 이 명령에는 분명히 -Repository
플래그가 없습니다.
####선택적 플래그
플래그 | 행동 |
---|---|
-Repository | 생성된 상용구의 저장소 패턴으로 전환 |
-NoChildItems | 다른 종속성을 자동으로 생성하지 마세요. |
-Force | 기존 파일이 있으면 덮어쓰기 |
Scaffold WebApiController [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-Repository] [-TemplateFolders] [-Force]
Scaffold Service [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-Repository] [-TemplateFolders] [-Force]
Scaffold Repository [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-TemplateFolders] [-Force]
Scaffold DbContext [-Project] [-CodeLanguage] [-DbContextType] [-Area] [-NoChildItems] [-TemplateFolders] [-Force]
[-optional flag]
Student
라는 모델로 작업한다고 가정하면 AWAS는 서비스 계층 패턴을 기반으로 상용구를 생성합니다. 특정 모델의 경우 스택은 다음과 같습니다.
학생 컨트롤러 |
---|
학생서비스 |
또는 -Repository
플래그를 추가하여 리포지토리 패턴을 기반으로 상용구를 생성할 수 있습니다. 스택은 다음과 같습니다.
학생 컨트롤러 |
---|
학생서비스 |
학생 저장소 |
Project/
...
Controllers/
StudentController.cs
CourseController.cs
...
DataAccessLayer/
ProjectContext.cs
ProjectInitializer.cs
Repositories/
StudentRepository.cs
CourseRepository.cs
...
Services/
StudentService.cs
CourseService.cs
...
...
패키지가 T4Scaffolding 위에 구축되었으므로 T4Scaffolding이 제공하는 CustomScaffolder
및 CustomTemplate
활용할 수 있습니다.
####Custom Scaffolder Custom Scaffolder를 사용하면 동일한 Boiletplate를 쉽게 생성할 수 있도록 맞춤형 Boiletplate 스캐폴더를 만들 수 있습니다.
사용자 정의 스캐폴더를 생성하려면 Foo
호출하세요.
Scaffold CustomScaffolder Foo
폴더가 생성됩니다:
Project/
...
CodeTemplates/
Scaffolders/
Foo/
Foo.ps1
FooTemplate.cs.t4
...
이제 필요에 따라 Foo.ps1
및 FooTemplate.cs.t4
사용자 정의할 수 있습니다. 새로 생성된 사용자 정의 스캐폴더를 사용하려면 다음을 실행하세요.
Scaffold Foo [flags]
####사용자 정의 템플릿 사용자 정의 템플릿을 사용하면 T4Scaffolding 및 AWAS와 함께 제공되는 기존 스캐폴더를 원하는 템플릿 스타일로 재사용할 수 있습니다.
WebApiController
에 대한 사용자 정의 템플릿을 생성하려면 다음을 수행하십시오.
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
폴더가 생성됩니다:
Project/
...
CodeTemplates/
Scaffolders/
WebApiController/
WebApiControllerTemplate.cs.t4
...
이제 WebApiControllerTemplate.cs.t4
필요에 맞게 사용자 정의할 수 있습니다. 사용자 지정 템플릿이 폴더에 존재하는 한 패키지는 스캐폴드된 모든 WebApiController에 대해 해당 템플릿을 사용합니다.
Scaffold WebApiController [flags]
Scaffold CustomTemplate WebApiController WebApiControllerTemplate
Scaffold CustomTemplate Service ServiceWithContextTemplate
Scaffold CustomTemplate Service ServiceWithRepositoryTemplate
Scaffold CustomTemplate Repository RepositoryTemplate
Scaffold CustomTemplate Initializer InitializerTemplate
Scaffold CustomTemplate DbContext DbContextTemplate
Scaffold CustomTemplate DbContext DbContextEntityMemberTemplate
제가 그동안 사용했던 리소스 중 일부는...
'ObjectContent`1' 유형이 'applicationxml' 콘텐츠 유형에 대한 응답 본문을 직렬화하지 못했습니다. 문자셋=utf-8'.
이 예외 메시지가 표시되면 App_Start/WebApiConfig.cs
> Register()
에 다음 코드 조각을 추가하고 다시 시작하세요.
var json = config . Formatters . JsonFormatter ;
json . SerializerSettings . PreserveReferencesHandling = Newtonsoft . Json . PreserveReferencesHandling . Objects ;
config . Formatters . Remove ( config . Formatters . XmlFormatter ) ;
패키지는 MvcScaffolding에서 영감을 받았습니다. 웹 API, 비동기 버전으로 볼 수 있지만 레이어 및 폴더 구조 측면에서 일부 독선적인 관점이 있습니다.