2. WEB SERVICE TEAM
2011. Technology Seminar
Agenda
• ASP.NET 버전 업그레이드 현황
• ASP.NET 4.0
• C#.NET 4.0
• ASP.NET New Platform
– ASP.NET MVC
– ASP.NET Web Pages
• Summary
4. WEB SERVICE TEAM
2011. Technology Seminar
ASP.NET 버전 업그레이드 현황
ASP.NET 4
ASP.NET 1.1
Server Controls, State Management,
Data Management 등
ASP.NET 2.0
MasterPage, Security, Theme, WebPart,
Provider Model 등
ASP.NET 3.0 WPF, WCF, WF, CardSpace 등
ASP.NET 3.5 Embedded ASP.NET AJAX, LINQ 등
ASP.NET 3.5 SP1
ASP.NET Dynamic Data
ASP.NET AJAX 기능 추가
ADO.NET 데이터 서비스
ASP.NET MVC 1.0 ~
MVC 패턴 적용, 단위 테스팅 지원,
URL Routing 등
ASP.NET Web Pages
ASP.NET AJAX
6. WEB SERVICE TEAM
2011. Technology Seminar
ASP.NET 4.0
• ASP.NET Core Services 강화
• ASP.NET Web Forms 기능 추가
• ASP.NET AJAX 4 기능 강화
• ASP.NET MVC 기능 추가
• Dynamic Data 기능 강화
>Web.config 파일 리팩토링
>확장 가능한 Output Caching
>Web Application 자동 시작 기능
>영구적인 페이지 이동 기능
>허용 가능한 URL 범위 확장
>확장 가능한 Html, URL, HTTP 헤더 인코딩
>세션 상태 정보 압축
>단일 작업자 프로세스 상의 개별
애플리케이션에 대한 성능 모니터링 지원
>ASP.NET Multi-Targeting 향상
>명령적(Imperative) 문법
>스크립트 로더 (Script Loader)
>클라이언트 데이터 액세스 강화
>jQuery 통합
>동적인 메타 태그 설정
(MetaKeywords, MetaDescription)
>개별 컨트롤에 대한 ViewState의 활성화
>페이지 Routing 사용 지원
>ClientID 속성 설정
>ASP.NET Chart 컨트롤 확장
>서버 컨트롤의 확장 및 기능 보완
>Area 지원
>Data-Annotation 어트리뷰트 유효성 검사
>Helper 메서드 지원
>선언적인 DynamicDataManager 컨트롤
>Entity 템플릿
>URL과 E-mail을 위한 필드 템플릿 추가
>Data Model에서의 상속 지원
>다대다(Many-to-Many) 관계 지원
>향상된 필터 지원
7. WEB SERVICE TEAM
2011. Technology Seminar
• Web.Config 파일 리팩토링
– 주요 구성 요소들은 machine.config 파일로 이동.
– 응용 프로그램은 이 설정을 상속.
• 확장 가능한 Output Caching
– 하나 이상의 사용자 지정 출력 캐시 공급자 구성 가능.
– 모든 저장 메커니즘을 사용하여 HTML 콘텐츠 유지.
• 로컬, 원격 디스크, 클라우드 저장소, 분산 캐시 엔진 등.
– “Microsoft Velocity” 분산 캐시 서버 시스템과 통합
ASP.NET Core Services 강화
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
8. WEB SERVICE TEAM
2011. Technology Seminar
• Web Application 자동 시작 기능
– 기존 버전까지는 응용 프로그램 게시 후 첫 요청을 처리하
기 위해서 비용이 많이 드는 초기화 작업이 필요.
– 첫 번째 HTTP 요청을 처리하기 전에 미리 초기화 작업을
수행할 수 있음.
• IIS 7.5 기반에서 사용 가능
• 영구적인 페이지 이동 기능
– Redirect 는 임시적인 페이지 이동을 발생
– 영구적인 페이지 이동을 발생시키는 RedirectPermanent
ASP.NET Core Services 강화
Response.RedirectPermanent(newUrl);
Response.RedirectToRoutePermanent(routeName);
9. WEB SERVICE TEAM
2011. Technology Seminar
• 허용 가능한 URL 범위 확장
– URL 경로 길이에 제한을 없애고 확장할 수 있는 기능 추가
– 사용자 정의할 수 있는 URL 문자 검사 기능 추가
• 확장 가능한 HTML, URL 및 HTTP 인코딩
– 사용자 지정 인코딩 루틴 생성 및 적용 가능
• HTML encoding
• URL encoding
• HTML attribute encoding
• Encoding outbound HTTP headers
ASP.NET Core Services 강화
<httpRuntime maxRequestLength="260" maxQueryStringLength="2048“ />
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,,?" />
10. WEB SERVICE TEAM
2011. Technology Seminar
• 확장 가능한 HTML, URL 및 HTTP 인코딩 (계속)
ASP.NET Core Services 강화
public class AntiXssEncoder : HttpEncoder
{
public AntiXssEncoder() { }
protected override void HtmlEncode(string value, System.IO.TextWriter output)
{
output.Write(AntiXss.HtmlEncode(value));
}
protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output)
{
output.Write(AntiXss.HtmlAttributeEncode(value);
}
}
<httpRuntime encoderType="AntiXssEncoder" />
11. WEB SERVICE TEAM
2011. Technology Seminar
• 단일 작업자 프로세스 상의 개별 애플리케이션에 대
한 성능 모니터링 지원
– 여러 응용 프로그램에서 단일 공유 작업자 프로세스를 사
용하는 경우에 장애 발생 시 문제가 발생한 개별 응용 프
로그램 식별이 어려움
– aspnet.config 파일에 appDomainResourceMonitoring 속
성을 사용하여 개별 응용 프로그램의 리소스 소비량 확인
• Managed Processor Time
• Managed Memory Used
ASP.NET Core Services 강화
<configuration>
<runtime>
<appDomainResourceMonitoring enabled="true" />
</runtime>
</configuration>
12. WEB SERVICE TEAM
2011. Technology Seminar
• 동적인 메타 태그 설정
– <meta> APIs
• Page.MetaKeywords
• Page.MetaDescription
• 개별 컨트롤에 대한 ViewState의 활성화
– ViewState를 보다 깔끔하게 관리
• 페이지 대상 Disabled, 컨트롤 대상 Enabled
ASP.NET Web Forms 기능 강화
<%@ Page MetaDescription="products" MetaKeywords="Listing" %>
this.MetaDescription = "Listing For " + value;
this.MetaKeywords = "Seoul, KOREA, " + value;
<%@ Page ViewStateMode="Disabled” %>
<asp:TextBox ID="TextBox1" runat="server" ViewStateMode="Enabled"></asp:TextBox>
13. WEB SERVICE TEAM
2011. Technology Seminar
• 페이지 Routing 사용 지원
– 깔끔하고, 논리적인 URL 생성
• 사람이 기억하기 쉽고, SEO에 적합
– 인바운드, 아웃바운드 URL을 처리
• 요청과 리소스에 대한 매핑은 global.asax안에 Route에 정의
• Page.RouteData 와 <asp:RouteParameter />
• 마크업에서의 URL 출력 : RouteUrl, RouteValue
– <%$ .. %> 라는 새로운 표현식 사용
ASP.NET Web Forms 기능 강화
Old : http://three.hanbiton.com/Community/ThreeView.aspx?postid=1111
New : http://three.hanbiton.com/Community/Three/View/1111
14. WEB SERVICE TEAM
2011. Technology Seminar
• ClientID 속성 설정
– 클라이언트 코드에서 사용할 수 있도록 생성되는 ID
• ClientIDMode
– AutoID : ASP.NET 기본 형식
– Static : 고정적인 형식 (Fix ID)
– Predictable : ClientIDRowSuffix 속성에서 지정한 필드 값이 추
가되는 형식
– Inherit : 상위 컨트롤의 ClientIDMode를 따르는 형식
ASP.NET Web Forms 기능 강화
<%@ Page ClientIDMode=“Static” %>
<asp:ListView runat="server" ID="ListView1" ClientIDRowSuffix="ProductID">
<ItemTemplate>
<asp:Label runat="server" ClientIDMode="Predictable">Client ID</asp:Label>
</ItemTemplate>
</asp:ListView>
15. WEB SERVICE TEAM
2011. Technology Seminar
• ClientID 속성 설정 (계속)
– ClientIDMode 별 ID 형태
• UniqueID는 ClientIDMode 속성에 영향받지 않음
• ClientIDMode = “AutoID”
• ClientIDMode = “Static”
• ClientIDMode = “Predictable”
ASP.NET Web Forms 기능 강화
ListView1$ctrl0$ProductIDLabel
ListView1$ctrl1$ProductIDLabel
ListView1$ctrl2$ProductIDLabel
ListView1_ctrl0_ProductIDLabel
ListView1_ctrl1_ProductIDLabel
ListView1_ctrl2_ProductIDLabel
ProductIDLabel
ProductIDLabel
ProductIDLabel
ListView1_ProductIDLabel_1
ListView1_ProductIDLabel_2
ListView1_ProductIDLabel_3
16. WEB SERVICE TEAM
2011. Technology Seminar
• ASP.NET Chart 컨트롤 확장
– <asp:ChartControl .. /> 기능 강화 및 내장
ASP.NET Web Forms 기능 강화
17. WEB SERVICE TEAM
2011. Technology Seminar
• 서버 컨트롤의 확장 및 기능 보완
– 데이터 컨트롤에서 열 선택 유지되는 기능
• GridView와 ListView 컨트롤만 해당
• EnablePersistedSelection = “true”
– ListView 컨트롤 강화
• LayoutTemplate은 더 이상 필수가 아님
– CheckBoxList와 RadioButtonList 컨트롤 강화
• 새로운 RepeatLayout 지원 : OrderedList(ol), norderedList(ul)
– controlRenderingCompatibilityVersion=“3.5|4.0”
• <page controlRenderingCompatibilityVersion=“4.0” />
• disabled 속성은 Html Input 요소에만 적용
– RenderOuterTable 속성 지원
• FormView, Login, Wizard, ChangePassword 등
– Menu 컨트롤 보강
• Table로 렌더되지 않음. li로 렌더됨.
• 키보드 네비게이션 지원
ASP.NET Web Forms 기능 강화
19. WEB SERVICE TEAM
2011. Technology Seminar
• 이전 버전까지의 C#.NET
– C#.NET 1.0
• C#.NET의 탄생
– C#.NET 2.0
• C# 개발에 큰 변화를 일으킨 Generic, Partial Type
• Nullable Type, Iterator, Anonymous Method, Static Class,
Friend Assemblies
– C#.NET 3.0
• 가장 큰 변화는 LINQ의 도입과 var 키워드 지원
• Partial Method
• Delegate -> Anonymous Method -> Lambda Expression
• Static Member -> Static Class -> Extention Method
C#.NET 4.0
21. WEB SERVICE TEAM
2011. Technology Seminar
• 동적 유형 지원
– Dynamic : 실행시간을 지연하여 런타임에서 타입을 유추
C#.NET 4.0 새로운 기능
Dynamic Static
Weak Typing Strong Typing
Run-Time Binding Compile-Time Binding
Late Binding Early Binding
Python, Ruby.. C, C++, C#, Java..
dynamic dynamicValue = 1;
int i = dynamicValue;
// 동적 조작에 대한 예
dynamic dynamicValue = MakeDynamicObject();
dynamicValue.M(1); // Method
dynamicValue.f = dynamicValue.P; // Property Getter/Setter
dynamicValue["one"] = dynamicValue["two"]; // Indexer
int i = dynamicValue + 2; // Operator
string s = dynamicValue(3, 4); // Delegate
var c = new C(dynamicValue); // Constructor
22. WEB SERVICE TEAM
2011. Technology Seminar
• 공변성과 반공변성 : 가변성
– Covariance : 지정된 Type대신 그 Type에서 파생된 자식
Type을 사용할 수 있게 해주는 것
– Contravariance : 지정된 Type 대신 그 Type의 상위 부모
Type을 사용할 수 있게 해주는 것
– 이전 버전까지는 Generic에 대해서 Invariant 였으나, 4.0부
터는 Covariance 및 Contravariance 지원
C#.NET 4.0 새로운 기능
class Human { }
class Man : Human { }
class Dog : Man { }
// 위와 같은 클래스 관계 구조에서 Man Type을 필요로 하는 경우..
// Man Type 대신 Dog Type을 사용할 수 있게 해주는 것 : Covariance
// Man Type 대신 Human Type을 사용할 수 있게 해주는 것 : Contravariance
delegate void Action<in T>(T a);
delegate T Func<out T>();
// Contravariance를 하기 위해서는 in 키워드 사용
// Covariance를 하기 위해서는 out 키워드 사용
23. WEB SERVICE TEAM
2011. Technology Seminar
• 명명된 인수와 선택적 인수
– 많은 파라미터를 정의해야 하는 경우 불필요한 노력이 발
생하는 문제를 해결
– 일반적인 메서드 정의와 호출 방법
– 명명된 인수와 선택적 인수를 사용
C#.NET 4.0 새로운 기능
// 메서드 정의
public void TestMethod(int number, string name, bool isCheck) { }
// 메서드 호출
TestMethod(1, "itist", true);
// 메서드 정의
public void M(int number, string name = "itist", bool isCheck = true) { }
// 메서드 호출
TestMethod(1, “Goodguy", false); //OK
TestMethod(1); //OK
TestMethod(1, name: “Goodguy", isCheck:false); //OK
TestMethod(1, name: “Goodguy"); //OK
TestMethod(1, isCheck: false); //OK
24. WEB SERVICE TEAM
2011. Technology Seminar
• COM 특성 상호운용 개선사항
– .NET과 COM의 상호운용 구조
– 개선된 사항
• Automatic Object -> Dynamic Mapping
• Optional and Named Parameters 지원
• PIA embedding (“NO-PIA”)
C#.NET 4.0 새로운 기능
25. WEB SERVICE TEAM
2011. Technology Seminar
• COM 특성 상호운용 개선사항 (계속)
– Automatic Object -> Dynamic Mapping
• COM에서 Variant 타입을 사용하는 경우 PIA에서는 Object로
표현되던 불편함을 해소
• Dynamic을 사용해서 Variant 타입 표현 가능
– Optional and Named Parameters 지원
• 메서드 호출 시 사용하지 않거나 불필요한 매개변수에 대한
ref missing 처리를 하지 않아도 됨
C#.NET 4.0 새로운 기능
// 기존
Excel.Workbook workBook = excel.Workbooks.Open("filename.xlsx", missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing);
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.ActiveSheet;
// 개선
Excel.Workbook workBook = excel.Workbooks.Open("filename.xlsx");
Excel.Worksheet workSheet = workBook.ActiveSheet;
26. WEB SERVICE TEAM
2011. Technology Seminar
• COM 특성 상호운용 개선사항 (계속)
– PIA embedding (“NO-PIA”)
• 필요한 PIA 인터페이스를 코드에 삽입
C#.NET 4.0 새로운 기능
28. WEB SERVICE TEAM
2011. Technology Seminar
• ASP.NET MVC?
– 모델-뷰-컨트롤러(MVC) 아키텍처의 효율성과 깔끔함, 애
자일 개발의 최신 개념과 기술, 그리고 기존 ASP.NET 플랫
폼에 우수한 부분들만을 결합한 플랫폼
• ASP.NET Web Forms의 단점
– 취약한 관계의 분리
– ViewState
– 제약이 많은 HTML 기반 컨트롤
– 테스트의 어려움
– 핵심 컨셉과 거리가 생기는 현업 개발
ASP.NET MVC
29. WEB SERVICE TEAM
2011. Technology Seminar
• MVC
– M(Model) : 뷰가 사용할 어플리케이션의 객체(비즈니스)
– V(View) : 어플리케이션의 UI를 담당하는 HTML 템플릿
– C(Controller) : 응답과 요청의 대한 핸들러
ASP.NET MVC
30. WEB SERVICE TEAM
2011. Technology Seminar
• ASP.NET MVC의 장점
– 아키텍처
• MVC 패턴 도입으로 인한 향상된 역할 및 관계의 분리
– 확장성
• 프레임워크 자체가 독립적인 구성 요소(.NET 인터페이스 or
내장된 추상 기본 클래스)들로 구성되어 있기 때문에 라우팅,
뷰 엔진, 컨트롤러 팩토리 등에 어떠한 구성 요소라도 직접
구현 및 대체가 가능
– 엄격한 HTML 제어
• ViewState가 존재하지 않고, 제약적인 UI요소들을 포함한 컨
트롤들이 사용되지 않음
– 테스트
• 완벽하게 분리된 역할 및 관계로 인해 각각 독립적인 소프트
웨어 조각으로 분리할 수 있으므로, 단위 테스트 및 자동 테
스트가 용이
ASP.NET MVC
31. WEB SERVICE TEAM
2011. Technology Seminar
• ASP.NET Web Pages?
– 기존 웹 개발의 복잡성을 획기적으로 개선하고, ASP.NET
의 성능과 안정성을 그대로 유지하며, 빠르고 쉬운 개발 환
경을 제공하는 새로운 플랫폼
• WebMatrix?
– MS계열의 LAPM(Linux, Apache, PHP, MYSQL)
– 쉬운 설치 과정만으로 웹 개발 환경 구성 가능
– 가장 중요한 특징 : 무료
– 구성 요소
• 웹 서버, 데이터베이스, 개발 프레임워크, 개발도구, 기타 유
틸리티
ASP.NET Web Pages
32. WEB SERVICE TEAM
2011. Technology Seminar
• Web Matrix 구성 요소
– [웹 서버] IIS Developer Express
• 웹사이트를 실행해 개발과 테스트를 진행하도록 돕는 가벼운
웹 서버 자체 내장
– [데이터베이스] SQL Server CE
• .NET 기반의 API를 제공하는 간결화된 데이터베이스
– [개발 프레임워크] Web Pages Framework & Razor Syntax
• 새로운 표현 구문인 Razor Syntax 템플릿 엔진 지원
– [개발 도구] WebMatrix or Visual Studio
• Visual Studio에 강력한 개발 환경 사용 가능
– 디버깅, 코드인텔리센스, 등
– [유틸리티] 서버관리, 모니터링, 보고서, 오픈 소스 스토어
• 웹 서버 및 웹 사이트 관리를 위한 기본적인 유틸리티 지원
• 외부 Helper를 업/다운로드 할 수 있는 스토어 제공
ASP.NET Web Pages
33. WEB SERVICE TEAM
2011. Technology Seminar
ASP.NET Web Pages
.NET Framework 4.0
ASP.NET
WebPages
• .NET Framework 4.0 기반 기술
• 추가적인 유틸리티 설치 불필요
• ASP.NET의 풍부한 기능 활용 가능
• 최상위 계층에서 쉬운 문법 제공
34. WEB SERVICE TEAM
2011. Technology Seminar
• 생산성과 확장성의 극대화
• 다양한 개발 편의 기능 제공
• 표준을 지향하는 깔끔한 UI 코드
• SEO를 지향하는 메커니즘 도입
• ASP.NET AJAX 4 강화
• jQuery의 통합
• C# 언어의 활용성 및 기능성 강화
• 플랫폼 및 방법론의 다양화
Summary