블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Category

Recent Post

Recent Comment

Archive

2009. 10. 27. 02:41 .Net Project/ASP.NET 3.5 Sp1
반응형


- 로컬에서 잡히지 않은 에러를 원격으로 접속해서 해결

- 운영서버에서 디버깅 하는 방법은 권장하지 않으므로

- 로컬에서 원격 운영 서버에 접속해서 에러를 해결 - 프로세스 연결 

- Remote Debbugging Monitor (msvsmon.exe) 

- 디버그 - 프로세스에 연결 - 컴퓨터 찾아보기





반응형
posted by Magic_kit
2009. 10. 27. 02:40 .Net Project/ASP.NET 3.5 Sp1
반응형
Output Cache

  웹 / 사용자 정의 컨트롤의 상태값을 매번 요청하지 않고

  메모리에 저장 동일한 요청이 들어오면 바로 처리

  새로고침 때마다 connection, command, databinding 계속 하면 속도 오래 걸림

  속도가 가장 늦는 명령이 connection

  Caching기능을 적용시켜 두면 페이지 레벨로 속도 향상 가장 좋음

  한 읽어두고 지정된 시간안에는 변경되지 않음

 

  OutputCache 지시문 (권장사항. 고정적으로 선언해 두고 사용)

 <%@ OutputCache Duration="60" VaryByParam="None" %>

 

  60 동안에는 새로 고침해도 다시 읽어오지 않음

  output 개체에 담아 두고 바로 출력

 

protected void Page_Load(object sender, EventArgs e)

{

    // 로드할 때마다 시간 출력 

    // DB연결해서 데이터를 1000 가져온다고 가정

    this.lblTime.Text = DateTime.Now.ToLongTimeString();

} 

 

페이지 단위 적용

    <%@ OutputCache Duration="초단위" VaryByParam="None" %>

 

사이트에 공지사항인 경우

  메인페이지에 출력할 매번 Connection하지 않고 시간 정해두고 바로 출력되게 있음

  바로바로 적용하고 싶을 때는 Outputcache 사용 안하는게 좋음

  블로그 경우 카테고리는 변경이 안되기 때문에 outputcache 기능 사용해서 속도 향샹

 

  똑같은 기능을 C# 코드 기반으로 (동적으로 변경할 경우)

protected void Page_Load(object sender, EventArgs e)

{

    // 코드 기반으로 캐싱 기능 적용하기

    Response.Write(DateTime.Now.ToLongTimeString()); // 현재 날짜 출력

    // 캐싱 설정

    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));

    // 매개 변수 방식 지정

    Response.Cache.VaryByParams["*"] = true;

    // 코드 기반으로 캐싱 기능 적용하기

    Response.Write(DateTime.Now.ToLongTimeString()); // 현재 날짜 출력

} 






반응형
posted by Magic_kit
2009. 10. 27. 02:39 .Net Project/ASP.NET 3.5 Sp1
반응형
 

ViewState

        페이지의 소스(히든필드) 임시 보관

              - 해당 페이지를 벗어나면 소멸


Cookies

        브라우저에 임시 보관 또는 텍스트파일형태로 영구본관

       페이지에 Cookies 생성해 두고 다른 페이지에서도 사용 가능

       브라우저의 메모리 공간에 저장


QueryString

       브라우저의 URL 임시로 데이터 실어서 다른페이지 이동

 

 

FrmViewState.aspx

 

<!-- 로딩시간 저장해 두었다가 버튼 클릭하면 출력 -->

<asp:Button ID="btnClick" runat="server" Text="처음 로딩 시간"

            onclick="btnClick_Click" />

<asp:Label ID="lblDisplay" runat="server" Text=""></asp:Label>

       

 

FrmViewState.aspx.cs

     protected void Page_Load(object sender, EventArgs e)

    {

        // 처음 로드시

        if (!Page.IsPostBack)

        {

            // 상태 개체에 데이터를 보관

            // odject 형식으로 받음

            ViewState["LOAD_TIME"] = DateTime.Now;

        }

    }
  protected void btnClick_Click(object sender, EventArgs e)

    {

        // 다른 메서드에서도 사용 가능

        // ViewState 저장된 출력

    if (ViewState["LOAD_TIME"] != null)

    {

         this.lblDisplay.Text = "로드시간 : "

             + Convert.ToDateTime(ViewState  ["LOAD_TIME"]).ToShortTimeString();

        }

    }


 저장버튼 눌러 쿠키저장 
 

FrmCookies.aspx 

 

<!-- 쿠키 저장 버튼 -->

<asp:Button ID="btnAddCookies" runat="server" Text="쿠키에 현재시간 저장"

            onclick="btnAddCookies_Click" />

 

 

FrmCookies.aspx.cs

 

protected void btnAddCookies_Click
                           (
object sender, EventArgs e)

{       

    // 쿠키 저장

    Response.Cookies["NOW"].Value = 
    DateTime
.Now.ToShortTimeString();

    Response.Cookies["NOW"].Expires =
              
DateTime.Now.AddDays(30); // 30일간 저장

    // Expires : 쿠기의 만료 날짜 시간을 가져오거나 설정

 

    // 쿠키 읽어오기

    if (Request.Cookies["NOW"] != null)

    {

        string now = Request.Cookies["NOW"].Value;

        Response.Write("방금 구운 쿠키 : " + now); 

    }

} 


쿠키에 현재 시간 저장하기

FrmCookiesShow.aspx.cs

using System;
using System.Web; 

public partial class FrmCookiesShow : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        // FrmCookies.aspx.cs에서 만든 정보를 다른 페이지에서도 사용 가능

        // ViewState 해당 페이지에서만 가능

        // 쿠키 읽어오기

        if (Request.Cookies["NOW"] != null)

        {

            string now = Request.Cookies["NOW"].Value;

            Response.Write("FrmCookies 페이지에서 구운 쿠키 : " + now);

        }

 

        // 코드레벨에서 HttpCookie 클래스 사용해서 쿠키 생성

        HttpCookie myName = new HttpCookie("MyName");

 

        myName.Values.Add("Name", "용원");

        myName.Values.Add("Nick", "Agent");

        Response.Cookies.Add(myName);

 

        // Name Nick 따로 출력

        HttpCookie saved = Request.Cookies["MyName"];

        Response.Write(myName.Values["Name"] + "<br />");

        Response.Write(myName.Values["Nick"] + "<br />");

    }

}


FrmQueryString.aspx
<a href="FrmQueryStringTest.aspx?Num=5&Name=Min">
   링크로 쿼리스트링 전달
</a> 

FrmQueryString.aspx.cs 

public partial class FrmQueryStringTest : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        // 페이지에서 넘겨온 쿼리스트링 출력

        // 간단한 다른 페이지로 넘겨줄 가장 효율적

        if (!String.IsNullOrEmpty(Request.QueryString["Num"]))

        {

            Response.Write(Request.QueryString["Num"] + "<br />"); // 5

            Response.Write(Request["Name"]); // Min

        }

    }

}







반응형

'.Net Project > ASP.NET 3.5 Sp1' 카테고리의 다른 글

54장 Remote Debugging  (0) 2009.10.27
53장 Output Cache  (0) 2009.10.27
51장 상태관리 서버측_(Application, Session, Cache)  (0) 2009.10.27
50장 상태관리(httpContext)  (0) 2009.10.27
49장 추적(Trace)  (0) 2009.10.27
posted by Magic_kit
2009. 10. 27. 02:39 .Net Project/ASP.NET 3.5 Sp1
반응형
 상태관리 StateManagent
 

Application

       Application 전역변수 : Public,  모든 사용자가 접근

               - 사이트에 1개만 생성

Session

      Session 전역변수 : Private, 해당 사용자만 접근

              - 사용자 수만큼 생성 가능

      Session.Timeout = 20

      Timeout 변경 : web.config <Configuration> 안에 <System.web> 안에 아래 코드 추가


<
configuration>

    <system.web>

             <!-- 세션 유지 시간 변경() : 기본값 : 20 -->

     <sessionState timeout="60"></sessionState>


Cache
     Cache 전역변수 : 빠른 속도가 필요한 처리를 보관
     CPU 레지스트리 메모리 사용 가장 안정적  빠른 메모리, 자주 사용하는 데이터 저장 

    Application, Session 사용하기 전에 전역 응용 프로그램 클래스 추가

    Global.asax 추가

    카운터 만들 사용

    게이트 웨이 역할, 들어가는 관문 역할


 [1] Application 활용
 

//[1] Application 전역변수 출력

// Global.asax에서 초기화 모든 페이지에서 사용가능

if (Application["SITE_NAME"] != null)

{

    Response.Write(Application["SITE_NAME"].ToString());

}

 

// 어떠한 전역변수든지 if 문으로 묶는다.

// if 문으로 예외처리 필수

if (Application["NO_NAME"] != null)

{

    Response.Write(Application["SITE_NAME2"].ToString());

}
 


 [2] Session 활용
 

//[2] 세션 변수 출력

// 세션 사용자가 나갈 까지 유지

if (Session["AccessTime"] != null)

{

    Response.Write(String.Format("접속시간 : {0}",

        Convert.ToDateTime(Session["AccessTime"]).ToString()));

}
 


 [3] CaChe
 

//[3] Cache 개체

// 많이 선언하면 좋지 않다

// 정말로 빠른 속도가 필료한 기능에만...

Cache["NAME"] = "김용원"; // cache 개체 생성

// 빨리 실행되야 하는 담아두기

 

if (Cache["Name"] != null)

{

    Response.Write(Cache["NAME"].ToString()); // 출력

}
 


Global.asax

 

<%@ Application Language="C#" %>

 

<script runat="server">

 

    void Application_Start(object sender, EventArgs e)

    {

        // 응용 프로그램이 시작될 실행되는 코드입니다.

        // 처음 사이트에 들어왔을 한번만 발생

        // 사이트에 10명이 들어와도 한번만 발생

        Application.Lock();

        Application["SITE_NAME"] = "닷넷코리아"; // 웹사이트가 살아있는 동안

        Application.UnLock();

        // 100명이 접속해도 한개 변수만 생성

    }

   

    void Application_End(object sender, EventArgs e)

    {

        //  응용 프로그램이 종료될 실행되는 코드입니다.

    }

       

    void Application_Error(object sender, EventArgs e)

    {

        // 처리되지 않은 오류가 발생할 실행되는 코드입니다.

    }

 

    void Session_Start(object sender, EventArgs e)

    {

        // 세션이 시작할 실행되는 코드입니다.

        // 웹사이트에 10명이 들어오면 10 발생

        Session["AccessTime"] = DateTime.Now;

        // 첫번 사용자가 들어왔을 접속 시간 따로

        // 두번 사용자가 들어왔을 접속 시간 따로 저장

    }

 

    void Session_End(object sender, EventArgs e)

    {

        // 세션이 끝날 실행되는 코드입니다.

        // 참고: Session_End 이벤트는 Web.config 파일에서 sessionstate 모드가

        // InProc 설정되어 있는 경우에만 발생합니다. 세션 모드가 StateServer
                또는
SQLServer

        // 설정되어 있는 경우에는 이벤트가 발생하지 않습니다. 

    }      

</script>





반응형
posted by Magic_kit