지금까지 VisualStudio 의 써드파티로써 대표적으로

GrapeCity 의 SPREAD, ActiveReport, Inputman, PlusPAK 등을 써 왔는기에 이번에 새로 진행하는 솔류션에서도

GrapeCity 의 ComponentONE 을 사용하고자 평가판을 받아서 여러가지 기능을 시험해 보았는데, 몇가지 문제점이 있었다.

 

1. 서포트대응

 - 안되는 부분에 있어서, 왜 안되는지.. 그리고 어떤식으로 하면 가능한지.. 혹은 절대로 불가능한지.. 설명해주지 않는다.

 

2. 기술적 오픈범위

 - 구현된 기술은 분명히 완성도가 있다. 하지만, 필자는 개인적으로 제약되는 기능이 너무 많다고 느꼈다.

(예를들면 수평 스크롤바를 비표시 하는것이 불가능하다는 이야기를 들었다.)

 

테크니컬 서포트란 무엇인가??

필자의 생각은.. 해당 솔류션의 구매자들이 다양한 가지각색의 패턴으로 물어오는 질문에 대해서, 상세하게 검토 및 구현가능 여부를 알려주고, 통보하고, 대안을 제시할수 있어야한다고 생각한다.

그런데, 그것이 불가능하다면.. 혹은 본사에 문의해서 알아야한다. 라는 통보를 받아봤을때에는 그것은 서포트라고 볼수 없을것이다. (이럴바에야 미국에서 구매하고 영어로 미국에 질문을하지...)

 

그리하여, 다른 솔류션을 검토하던중에 Infragistics 의 Ultimate (올인원 패키지) 를 사용해보았다.

현재까지 딱히 문제점이라고 할것은 없다.

기술적으로도 서포트팀의 기술력인지... 개발자의 기술력인지는 알수없으나,

간지러웠던 부분을 속시원히 긁어주었다. (정확히 라인까지 지정해서 수정방법까지 제안해주었다. 물론, 100%의 코드는 아니었지만, 약간의 수정으로 하고자했던것을 100% 소화해낼수 있었다.)

 

기술적으로도 오픈되어있는 부분이 상당히 많아서, 커스터마이즈 / 튜닝 등을 통한 재가공 및 배포에도 용이하다는것을 알게되었다.

 

솔류션!! 이라고하면 닫혀있는 구조체 라는 인식이 상당히 강했었는데...

거의 모든부분을 간단히 한줄로 제어할수있도록 많은생각을 했음을 옅볼수 있었다.

혹시나 Outlook Style Schedule 관련 솔류션을 찾고계시다면, Infragistics 제품을 한번 추천해봅니다.

 

< 관련링크 >

http://www.infragistics.com/

일본, 도쿄 하라주쿠의 Infragistics Japan (http://jp.infragistics.com/) 본사에가서

JAPAN, Azuma(東) MVP, Ikehara(池原) MVP  를 만났습니다.

 

자사의 솔류션을 활용하여 제가 지금 하려는 기능에 대해서 어떻게 구현하면 되는지

기술자문을 구했습니다.

 

Infragistics Japan 에서 Microsoft MVP 에게 NetAdvantage Ultimate 를 제공해주셔서 아직 정식구매를 하지는 않았음에도 불구하고,

제공받은 라이센스로 앞으로 개발내용을 조금씩 공유하고자 합니다.

 

한국에는 애석하게도 많은 자료가 없군요.

앞으로 제가 조금씩 써 놓으면 누군가는 도움이 될것 같네요. ^^

 

  • NetAdvantage for Windows Forms
  • NetAdvantage for ASP.NET
  • NetAdvantage for WPF
  • NetAdvantage for Silverlight
  • Ignite UI (旧 NetAdvantage for jQuery)
  • NetAdvantage for Windows Phone
  • NetAdvantage Reporting
  • NUCLiOS
  • Iguana UI (コミュニティパック)
  •  

    를 비롯하여, 태블릿 등 다용도로 활용이 가능한 솔류션 입니다.

     

    제품 다운로드는 이곳에서

    (http://jp.infragistics.com/dotnet/netadvantage.aspx)

     

    저는 현재, NetAdvantage for Windows Forms / NetAdvantage for ASP.NET / NetAdvantage for Silverlight 제품의 구현기술을 검토중입니다.

     

    프로젝트에대한 상세내용을 공개할수는 없지만,

    기능적인 부분에 대해서 조금씩 다뤄볼까 합니다.

     

    (※ 추후 카테고리 분류예정 )

     

    항상 엑셀 2003 을 고수해왔기에 업데이트를 꺼려했는데,

    간혹 엑셀 VBA / VBE 를 통해서 간단한 툴을 만들어 사용할때도 있고해서

    미리미리 2010 버젼 / 오피스 365 에 대응하고자

    엑셀을 2003 버젼으로 메뉴를 커스터마이징 하기로 하였다.

     

    우선, 첫번째

    마우스 오른쪽을 클릭해서 리본의 최소화를 눌러준다. 

     

     

     

    두번째

    마우스 오른쪽을 눌러서 리본의 유져설정을 눌러준다.

     

     

     

    세번째

    인포트 / 익스포트를 눌러서 아래에 있는 파일을 읽어들이면

    밑의 화면과같은 설정이 된다. (최대한 2003과 비슷하게 맞췄고, 개발위주로 하기에.. 개발탭도 추가하였다.)

     

     

    Excel 2010 to 2003 Menu.exportedUI

     

     

     

    오피스를 2010 으로 업데이트해서 불편함을 겪는이가 한명이라도 줄었으면 하는 마음에

    포스팅하여, 정보를 공유하고자 합니다.

     

    2010이 되면서, 여러가지 추가된 기능이 있고 스마트해졌으니

    추가된, 새로운 기능의 습득에도 시간을 투자해야할듯 싶네요.

    작업을 하다보면, 환경에따른 테스트를 해야할때가 있다.

     

    프레임워크를 날려버리고, 기동 테스트

    프레임워크를 복수설치하고 기동테스트

     

    제어판에서 프로그램 추가 제거를 선택하여, 삭제하고 레지스트에 등록된 필요없는 찌꺼기들 (신뢰싸이트 등등... ) 정리를 해야한다.

     

    이럴때 유용한 툴 입니다.

    파일은 첨부파일을 확인해주세요.

     

     

    dotnetfx_cleanup_tool.zip

     

    -----------------------------------
    SUPPORTED PRODUCTS
    -----------------------------------

    The .NET Framework cleanup tool supports removing the following products:

      * .NET Framework - All Versions
      * .NET Framework - All Versions (Tablet PC and Media Center)
      * .NET Framework - All Versions (Windows Server 2003)
      * .NET Framework - All Versions (Windows Vista and Windows Server 2008)
      * .NET Framework 1.0
      * .NET Framework 1.1
      * .NET Framework 2.0
      * .NET Framework 3.0
      * .NET Framework 3.5
      * .NET Framework 4
      * .NET Framework 4.5

     

    보다 자세한 내용은 아래를 참고하세요.

     

    .NET FRAMEWORK CLEANUP TOOL USER'S GUIDE

    The latest version of this user's guide can be found at http://blogs.msdn.com/astebner/pages/8904493.aspx.

    -----------------------------------
    INTRODUCTION
    -----------------------------------

    This .NET Framework cleanup tool is designed to automatically perform a set of steps to remove selected versions
    of the .NET Framework from a computer.  It will remove files, directories, registry keys and values and Windows
    Installer product registration information for the .NET Framework.  The tool is intended primarily to return your
    system to a known (relatively clean) state in case you are encountering .NET Framework installation,
    uninstallation, repair or patching errors so that you can try to install again.

    There are a couple of very important caveats that you should review before using this tool to remove any version
    of the .NET Framework from your system:

      * This tool is designed as a last resort for cases where install, uninstall, repair or patch installation did not
        succeed for unusual reasons.  It is not a substitute for the standard uninstall procedure.  You should try the
        steps listed in this blog post before using this cleanup tool.
     
      * This cleanup tool will delete shared files and registry keys used by other versions of the .NET Framework.  If
        you run the cleanup tool, you will need to perform a repair/re-install for all other versions of the .NET
        Framework that are on your computer or they will not work correctly afterwards.

    -----------------------------------
    DOWNLOAD LOCATIONS
    -----------------------------------

    The .NET Framework cleanup tool is available for download at the following locations:

    http://cid-27e6a35d1a492af7.skydrive.live.com/self.aspx/Blog_Tools/dotnetfx_cleanup_tool.zip
    http://blogs.msdn.com/astebner/attachment/8904493.ashx

    The .zip file that contains the tool also contains a file named history.txt that lists when the most recent version
    of the tool was published and what changes have been made to the tool over time.

    -----------------------------------
    SUPPORTED PRODUCTS
    -----------------------------------

    The .NET Framework cleanup tool supports removing the following products:

      * .NET Framework - All Versions
      * .NET Framework - All Versions (Tablet PC and Media Center)
      * .NET Framework - All Versions (Windows Server 2003)
      * .NET Framework - All Versions (Windows Vista and Windows Server 2008)
      * .NET Framework 1.0
      * .NET Framework 1.1
      * .NET Framework 2.0
      * .NET Framework 3.0
      * .NET Framework 3.5
      * .NET Framework 4
      * .NET Framework 4.5

    Not all of the above products will appear in the UI for the .NET Framework cleanup tool on every operating system.
    The cleanup tool contains logic so that if it is run on an OS version that includes the .NET Framework as an OS
    component, it will not offer the option to clean it up.  This means that running the cleanup tool on Windows XP
    Media Center Edition or Tablet PC Edition will not offer the option to clean up the .NET Framework 1.0, running
    it on Windows Server 2003 will not offer the option to clean up the .NET Framework 1.1 and running it on Windows
    Vista or Windows Server 2008 will not offer the option to clean up the .NET Framework 2.0 or the .NET Framework 3.0.

    When choosing to remove any of the above versions of the .NET Framework, the cleanup tool will also remove any
    associated hotfixes and service packs.  You do not need to run any separate steps to remove the service pack(s)
    for a version of the .NET Framework.

    -----------------------------------
    SILENT MODE
    -----------------------------------

    The .NET Framework cleanup tool supports running in silent mode.  In this mode, the tool will run without showing
    any UI, and the user must pass in a version of the .NET Framework to remove as a command line parameter.  To run
    the cleanup tool in silent mode, you need to download the cleanup tool, extract the file cleanup_tool.exe from
    the zip file, and then run it using syntax like the following:

        cleanup_tool.exe /q:a /c:"cleanup.exe /p <name of product to remove>"

    The value that you pass with the /p switch to replace <name of product to remove> in this example must exactly
    match one of the products listed in the Supported products section above.  For example, if you would like to run
    the cleanup tool in silent mode and remove the .NET Framework 1.1, you would use a command line like the following:

        cleanup_tool.exe /q:a /c:"cleanup.exe /p .NET Framework 1.1"

    One important note ・as indicated above, the cleanup tool will not allow you to remove a version of the .NET
    Framework that is installed as part of the OS it is running on.  That means that even if you try this example
    command line on Windows Server 2003, the tool will exit with a failure return code and not allow you to remove
    the .NET Framework 1.1 because it is a part of that OS.

    Similarly, you cannot use the cleanup tool to remove the .NET Framework 1.0 from Windows XP Media Center Edition
    or Windows XP Tablet PC Edition or remove the .NET Framework 2.0 or 3.0 from Windows Vista or Windows Server 2008.
    In addition, if you run the cleanup tool on an OS that has any edition of the .NET Framework installed as a part
    of the OS, it will prevent you from using the .NET Framework - All Versions option because there is at least one
    version that it cannot remove.

    If you are planning to run the cleanup tool in silent mode, you need to make sure to detect what OS it is running
    on and not pass in a version of the .NET Framework with the /p switch that is a part of the OS or make sure that
    you know how to handle the failure exit code that you will get back from the cleanup tool in that type of scenario.

    -----------------------------------
    UNATTENDED MODE
    -----------------------------------

    The .NET Framework cleanup tool supports running in silent mode.  In this mode, the tool will run and only show a
    progress dialog during removal, but will require no user interaction.  Unattended mode requires the user to pass
    in a version of the .NET Framework to remove as a command line parameter.  To run the cleanup tool in unattended
    mode, you need to download the cleanup tool, extract the file cleanup_tool.exe from the zip file, and then run it
    using syntax like the following:

        cleanup_tool.exe /q:a /c:"cleanup.exe /p <name of product to remove> /u"

    For example, if you would like to run the cleanup tool in unattended mode and remove the .NET Framework 1.1, you
    would use a command line like the following:

        cleanup_tool.exe /q:a /c:"cleanup.exe /p .NET Framework 1.1 /u"

    -----------------------------------
    EXIT CODES
    -----------------------------------

    The cleanup tool can returns the following exit codes:

      * 0    - cleanup completed successfully for the specified product
      * 3010 - cleanup completed successfully for the specified product and a reboot is required to complete the
               cleanup process
      * 1    - cleanup tool requires administrative privileges on the machine
      * 2    - the required file cleanup.ini was not found in the same path as cleanup.exe
      * 3    - a product name was passed in that cannot be removed because it is a part of the OS on the system
               that the cleanup tool is running on
      * 4    - a product name was passed in that does not exist in cleanup.ini
      * 100  - cleanup was able to start but failed during the cleanup process
      * 1602 - cleanup was cancelled

    -----------------------------------
    LOG FILES
    -----------------------------------

    The cleanup tool creates the following log files:

      * %temp%\cleanup_main.log    - a log of all activity during each run of the cleanup tool; this is a superset
                                     of the logs listed below as well as some additional information
      * %temp%\cleanup_actions.log - a log of actions taken during removal of each product; it will list files that
                                     it finds and removes, product codes it tries to remove, registry entries it
                                     tries to remove, etc.
      * %temp%\cleanup_errors.log  - a log of errors and warnings encountered during each run of the cleanup tool

    -----------------------------------
    .NET FRAMEWORK DOWNLOAD LOCATIONS
    -----------------------------------

    If you plan to re-install the .NET Framework after running the cleanup tool, you can download the various versions
    of the .NET Framework from the following locations:

    .NET Framework 1.0

        http://www.microsoft.com/downloads/details.aspx?familyid=d7158dee-a83f-4e21-b05a-009d06457787

    .NET Framework 1.0 SP3

        http://www.microsoft.com/downloads/details.aspx?familyid=6978d761-4a92-4106-a9bc-83e78d4abc5b

    .NET Framework 1.1

        http://www.microsoft.com/downloads/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3

    .NET Framework 1.1 SP1

        http://www.microsoft.com/downloads/details.aspx?familyid=a8f5654f-088e-40b2-bbdb-a83353618b38

    .NET Framework 2.0

        http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5

    .NET Framework 2.0 with SP1

        http://www.microsoft.com/downloads/details.aspx?FamilyId=79BC3B77-E02C-4AD3-AACF-A7633F706BA5

    .NET Framework 2.0 with SP2

        http://www.microsoft.com/downloads/details.aspx?FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f

    .NET Framework 3.0

        http://www.microsoft.com/downloads/details.aspx?FamilyID=10CC340B-F857-4A14-83F5-25634C3BF043

    .NET Framework 3.0 with SP1

        http://www.microsoft.com/downloads/details.aspx?FamilyId=EC2CA85D-B255-4425-9E65-1E88A0BDB72A

    .NET Framework 3.5

        http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6

    .NET Framework 3.5 with SP1

        http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7

    .NET Framework 4 Full

        http://www.microsoft.com/downloads/details.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7

    .NET Framework 4 Client Profile

        http://www.microsoft.com/downloads/details.aspx?FamilyID=e5ad0459-cbcc-4b4f-97b6-fb17111cf544

    [ 질문내용 ]

    폼 디자이너에서 ColumnHeadersDefaultCellStyle.BackColor = backcolor.black 이부분을 적용해도

    datagridview1 에는 아무 적용된게 없습니다 ..

    다른 속성은 자 잘 적용되고 잇습니다.


    꼭 backcolor 만 적용하려면 안되는데

    이게 무슨 문제인가요?

    알려주시면 정말 고맙겟습니다!

    즐거운 하루 되시고 하시는일 잘되시길 바랍니다!

    With Me.DataGridView1
    .GridColor = Color.BlueViolet
    .BorderStyle = BorderStyle.Fixed3D
    .CellBorderStyle = DataGridViewCellBorderStyle.None
    .RowHeadersBorderStyle = _
    DataGridViewHeaderBorderStyle.Single
    .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
    .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
    .ColumnHeadersDefaultCellStyle.BackColor = Color.black
    End With

     

     

    [답변]

    DataGridView 의 배경색을 다른색깔로 바꾸고 싶어하시는게 맞으신가요?

    ※혹시 제가 이해를 잘못한거라면, 다시한번 질문 주십시오.

    테스트 해보았습니다. 아래와같이 한번 해보십시오.

     

     

    컨트롤 :

    1. DataGridView1

    2. Button1

    실행결과 :

     

     

    코드 :

    Me.DataGridView1.DefaultCellStyle.BackColor = Color.Brown

    Me.DataGridView1.DefaultCellStyle.BackColor 속성을 사용해서 컬러를 지정할수 있습니다.

    문제해결에 도움이 되지 않는다면, 다시한번 질문 주십시오.

    감사합니다.

    값비교 및 결과출력에 대한 예제 입니다.

    MSDN 개발자 포럼에서 질문받은 내용이기도합니다.

    제가 일본에서 일을하며 거주중이라, 예제 및 소스의 주석에는 간혹 일본어가 눈에띌수 있으니, 이해해 주십시오.

     

     

    화면 디자인 및 컨트롤 배치는 위의 그림을 참고하세요.

    그리고, 실행화면은 아래와 같습니다.

     

     

    전체 코드는 아래와 같습니다.

     

    Public Class clsResult

        Private Sub btnLt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGt.Click

            Dim iNum1, iNum2 As Integer '변수의 정수형 선언'
            Dim fResult As Boolean

            iNum1 = txtInput1.Text  '텍스트 박스의 내용을 변수에 옮긴다
            iNum2 = txtInput2.Text

            fResult = iNum1 < iNum2  '두 변수를 비교한다
            Label1.Text = "<"  '< 연산자 표시

            IbIResult.Text = fResult 'Boolean 결과를 레이블에 출력한다

        End Sub


        Private Sub btnLe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGe.Click

            Dim iNum1, iNum2 As Integer '변수의 정수형 선언'
            Dim fResult As Boolean

            iNum1 = txtInput1.Text  '텍스트 박스의 내용을 변수에 옮긴다
            iNum2 = txtInput2.Text

            fResult = iNum1 <= iNum2  '두 변수를 비교한다
            Label1.Text = "<="  '<= 연산자 표시

            IbIResult.Text = fResult 'Boolean 결과를 레이블에 출력한다
        End Sub


        Private Sub btnGt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGt.Click

            Dim iNum1, iNum2 As Integer '변수의 정수형 선언'
            Dim fResult As Boolean

            iNum1 = txtInput1.Text  '텍스트 박스의 내용을 변수에 옮긴다
            iNum2 = txtInput2.Text

            fResult = iNum1 > iNum2  '두 변수를 비교한다
            Label1.Text = ">"  '> 연산자 표시

            IbIResult.Text = fResult 'Boolean 결과를 레이블에 출력한다
        End Sub


        Private Sub btnGe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLe.Click

            Dim iNum1, iNum2 As Integer '변수의 정수형 선언'
            Dim fResult As Boolean

            iNum1 = txtInput1.Text  '텍스트 박스의 내용을 변수에 옮긴다
            iNum2 = txtInput2.Text

            fResult = iNum1 >= iNum2  '두 변수를 비교한다
            Label1.Text = ">="  '>= 연산자 표시

            IbIResult.Text = fResult 'Boolean 결과를 레이블에 출력한다
        End Sub


        Private Sub btnEq_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEq.Click

            Dim iNum1, iNum2 As Integer '변수의 정수형 선언'
            Dim fResult As Boolean

            iNum1 = txtInput1.Text  '텍스트 박스의 내용을 변수에 옮긴다
            iNum2 = txtInput2.Text

            fResult = iNum1 = iNum2  '두 변수를 비교한다
            Label1.Text = "="  '= 연산자 표시

            IbIResult.Text = fResult 'Boolean 결과를 레이블에 출력한다
        End Sub


        Private Sub btnNe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNe.Click

            Dim iNum1, iNum2 As Integer '변수의 정수형 선언'
            Dim fResult As Boolean

            iNum1 = txtInput1.Text  '텍스트 박스의 내용을 변수에 옮긴다
            iNum2 = txtInput2.Text

            fResult = iNum1 <> iNum2  '두 변수를 비교한다
            Label1.Text = "<>"  '<> 연산자 표시

            IbIResult.Text = fResult 'Boolean 결과를 레이블에 출력한다
        End Sub


        Private Sub btnLike_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLike.Click

            Dim fResult As Boolean

            fResult = txtInput1.Text Like txtInput2.Text '두 문자열을 비교한다"
            Label1.Text = "Like" 'Like 연산자 표시

            IbIResult.Text = fResult 'Boolean 결과를 레이블에 출력한다
        End Sub

    End Class

     

    현재 커서의 위치를 취득하는 방법이다.

     

    네임스페이스: System.Windows.Forms
    어셈블리: System.Windows.Forms(System.Windows.Forms.dll)

     

    Private Sub MoveCursor()
       ' Set the Current cursor, move the cursor's Position,
       ' and set its clipping rectangle to the form.

       Me.Cursor = New Cursor(Cursor.Current.Handle)
       Cursor.Position = New Point(Cursor.Position.X - 50, Cursor.Position.Y - 50)
       Cursor.Clip = New Rectangle(Me.Location, Me.Size)
    End Sub

     

    이와같은 함수로 현재 커서의 위치를 취득할수 있다.

    아주 좋은 정보가 있어서, 퍼왔습니다. (제일밑에 출처게재있음)

    [소스 다운로드]

     

    Windows Azure モバイル アプリケーション開発実践

    ASP.NET MVC 4 を使った Mobile Web ソリューション実装

    執筆者: 日本マイクロソフト株式会社 エバンジェリスト 鈴木章太郎 & 井上章

    更新日: 2012 年 4 月 20 日

     

     

    今回は、Visual Studio 2010 SP1、C# と、ASP.NET MVC 4 、SQL Azure、jQuery Mobile 等を利用して新しい Mobile Web アプリケーションを作成します。


    目次

    1. Web アプリケーションにおける課題
    2. ASP.NET MVC アプリケーションの作成
    3. Display Modes によるビューの切り替え
    4. jQuery Mobile を使ってモバイル向けビューを作成する

    1. Web アプリケーションにおける課題

    PC 用 Web ブラウザーと Mobile Web ブラウザー

    Web アプリケーションを作成して、Web サーバーや Windows Azure にデプロイした場合、様々なデバイスからアクセスされることになります。その場合、良く遭遇するのが、下記のような現象でしょう。下記の図を見てください。

    このアプリケーションは、2012 年 4 月開催の Windows Developer Days のセッション管理を、ASP.NET MVC 4 を使い、SQL Azure に作成済みの RDB を使って Model を作成し、そこから簡単に View と Controller を生成し、Web アプリケーションを生成して作ったものです。非常に単純なテクニカル セッション情報管理のデモ アプリケーションです。画面遷移としては、まずホーム画面が表示されます。

    図 1: ホーム画面

    その後、画面中のセッション リストをクリックすると、セッション一覧画面に遷移します。

    図 2: セッション一覧画面

    この中で、あるセッションを選択して、Details をクリックすると、セッション詳細画面に、

    図 3: セッション詳細画面

    Edit をクリックすると、セッション情報編集画面に、それぞれ遷移します。

    図 4: セッション情報編集画面

    iPhone の Safari でアクセスした場合

    さて、当たり前ですが、これは、PC 用のブラウザー用に作成したアプリケーションなので、例えば iPhone の Safari では少し工夫が必要となります。下記の図はホーム画面にアクセスした場合です。

    図 5: Safari で見たホーム画面

    これはまだ良い方ですが、セッション リストをクリックしてセッション一覧画面に遷移してみましょう。

    図 6: Safari で見た session 一覧画面

    このような状況は、iPhone 以外に、例えば、Android でも、 Windows Phone でもブラウザー アプリケーションである限り生じることでしょう。ASP.NET であれば、コンテンツ自体を HTML5 で作成・配信することができますが、このままでは表示が最適化できないので、個別に対応しておきたいところです。このような状況に対応するソリューションは、昔から存在しており、有償のパッケージとして売られているものも多数あります。しかし、ASP.NET MVC 4 を使えば、この Web アプリケーションを、iPhone のみならず、各種モバイル デバイス毎に最適化させることができるのです。

    今回は、この ASP.NET MVC 4 を使った Mobile Web アプリケーションの作成と実行について、ご説明していきます。

    ページのトップへ

    2. ASP.NET MVC アプリケーションの作成

    SQL Azure データベースの作成

    今回は、テクニカル セッション情報を収納するデータベースを作成します。まず、Windows Azure ポータルにログインします。

    図 7: Windows Azure Portal へのログイン

    "データベース" タブをクリックすると、SQL Azure の管理画面に遷移します。

    図 8: SQL Azure 管理画面

    画面上にある、作成ボタンをクリックして、新規でデータベースを作ります。下記のダイアログが出ますので、名前は適当につけて、Web エディション、1 GB で作成します。

    図 9: SQL Azure データベースの作成

    テーブルの作成

    SQL Azure のポータル画面で、作成したばかりのデータベースを選択して、管理ボタンをクリックすると、個別のデータベースの管理画面に遷移しますので、ユーザー名とパスワードを入力して、ログインします。

    図 10: SQL Azure 管理ポータル ログイン

    すると、下記のようなデータベースの管理画面が表示されます。このデータベースに関する諸情報が表示されており、ここから、テーブル作成、ビュー作成、ストアド プロシージャ作成、新規クエリ発行等、次のアクションをとることが可能となっています。

    図 11: データベースの管理画面

    次は、データベースの概要画面です。

    図 12: データベースの概要画面

    ここで、データベースのデザイン画面に遷移し、テーブルを作成します。

    図 13: データベースのデザイン画面

    テーブルを作成するには、新しいクエリ ボタンを押して、出てきたテキスト エリアに入力して実行します。テーブルは下記のクエリの通り、作成してください。最初は TimeSlots テーブルです。

    /***** CREATE TABLE [TimeSlots] *****/
    USE [WDD2425]
    GO

    /****** Object: Table [dbo].[Timeslots] Script Date: 04/10/2012 13:56:36 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[Timeslots](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](max) NULL,
    [Start] [datetime] NULL,
    [End] [datetime] NULL,
    CONSTRAINT [PK_Timeslots] PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
    )

    GO

    次は、Sessions テーブルです。

    /***** CREATE TABLE [Sessions] *****/
    USE [WDD2425]
    GO

    /****** Object: Table [dbo].[Sessions] Script Date: 04/10/2012 13:44:03 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[Sessions](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Code] [nvarchar](max) NULL,
    [Title] [nvarchar](max) NULL,
    [Room] [nvarchar](max) NULL,
    [Hash] [nvarchar](max) NULL,
    [Timeslot_Id] [int] NOT NULL,
    CONSTRAINT [PK_Sessions] PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
    )

    GO

    ALTER TABLE [dbo].[Sessions] WITH CHECK ADD CONSTRAINT [FK_SessionTimeslot] FOREIGN KEY

    ([Timeslot_Id])
    REFERENCES [dbo].[Timeslots] ([Id])
    GO

    ALTER TABLE [dbo].[Sessions] CHECK CONSTRAINT [FK_SessionTimeslot]
    GO

    次は、Speakers テーブルを作成します。

    /***** CREATE TABLE [Speakers] *****/
    USE [WDD2425]
    GO

    /****** Object: Table [dbo].[Speakers] Script Date: 04/10/2012 13:50:00 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[Speakers](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](max) NULL,
    CONSTRAINT [PK_Speakers] PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
    )

    GO

    以上でテーブル作成は終了です。

    ASP.NET MVC Web Application の作成

    Visual Studio に戻り、この SQL Azure データベースに接続し、作成した WDD2425 データベースを用いて、ASP.NET MVC アプリケーションを作成します。データは適当に入れておいてください。

    ※なお、これまでの作業に関しては、SQL Server Management Studio を使って、SQL Azure に接続して行っても OK です。

    次の手順で、ASP.NET MVC 4 Web Application を作成します。適当な名前 (例: MvcApplication1) で、ASP.NET MVC 4 Web Application プロジェクトを新規作成します。

    図 14: ASP.NET MVC3 Web Application の作成

    次に出てくるダイアログでは、テンプレートでインターネット アプリケーションを選択し、ビュー エンジンは、今回は ASPX ではなく、Razor を選択します。

    図 15: プロジェクト テンプレートとビュー エンジンの選択ダイアログ

    次いで、ソリューション エクスプローラー上の Model のフォルダーを右クリックして、Model の追加を行います。追加→新しい項目を選択します。

    図 16: Model の追加

    新しい項目の追加ダイアログが出るので、データ タブを選択し、ADO.NET Entity Data Model を選択します。

    図 17: ADO.NET Entity Data Model の選択

    ウィザードが起動するので、最初に、データベースから作成、を選択して次へをクリックします。

    図 18: データベースから作成を選択

    次に、データ接続の選択、で、Microsoft SQL Server にチェックして、続行します。

    図 19: Microsoft SQL Server にチェック

    そして、データ ソースの箇所で、SQL Azure のサーバー名と、SQL Azure 認証のためのユーザー IDパスワードを入力します。データベースは、WDD2425 を選択します。

    図 20: データベースの選択

    そして、テーブルの左のチェック ボックスにチェックを入れて全てのテーブルを選んで、完了をクリックします。

    図 21: Model ウィザードの完了

    すると、必要なライブラリが読み込まれて、同時に WDD2425 アプリケーションの Model が生成されます。この状態で必ず Ctrl+Shift + B で忘れずにビルドをしておきましょう。そうしないと次のコントローラーの追加のダイアログ ボックスの画面で、Class のリスト内に必要なモデルが表示されません。

    図 22: 生成された Model

    次いで、ソリューション エクスプローラー上で、Controller のフォルダーを右クリックして、新規コントローラー追加します。

    図 23: Controller の追加

    コントローラーの追加ダイアログ ボックスが出るので、SessionController という名前にして、モデル クラス = Sessions、データ コンテキスト クラス = WDD2425 と設定して、追加をクリックします。

    図 24: コントローラーの追加ダイアログ ボックス

    すると、自動的に各種 (CRUD 用の) View も生成され、ソリューション エクスプローラーは下記の通りになります。

    図 25: 自動生成される View 他

    この状態で、Ctrl + F5 を押して、アプリケーションを起動しホーム画面を表示します。

    図 26: アプリケーションの起動画面

    この URL の部分の最後に、session (例: http://localhost:62217/session) と入れてリターン キーを押すと、下記の通り、既に全て必要な View その他機能が生成されていることが確認できます。各リンクをクリックして確認してみてください。

    図 27: View その他機能の確認

    あとは、ホーム画面のタイトルや Session 一覧へのリンク等を、図 1 にご紹介したように修正して、ASP.NET MVC Web アプリケーションの作成は終了です。

    ページのトップへ

    3. Display Modes によるビューの切り替え

    デバイス/ブラウザー検出とビューの切り替え

    1. でご紹介した通り、昨今では、PC 上の Web ブラウザーだけでなくスマート フォンやタブレットの呼ばれるモバイル端末上の Web ブラウザーで Web サイトを閲覧することが増えています。いつでも、どこでも、どんなデバイスでも使用可能な Web アプリケーションを開発するにあたって、モバイル端末からのアクセスか否かによってビューを自動で切り替える機能や、モバイル ブラウザー向けのビューと、デスクトップ・フル ブラウザー向けのビューをユーザーが任意に切り替え可能な機能が ASP.NET MVC 4 で容易に実装できます。

    図 28: Display Modes によるビューの切り替え機能適用のイメージ

    ASP.NET MVC 4 の Display Modes と呼ばれる機能では、デスクトップ PC 上の Web ブラウザー向けのビューと、モバイル端末の Web ブラウザー向けのビューをそれぞれ用意しておくだけで、ASP.NET MVC 4 フレームワークが自動でブラウザー種別を判断して切り替えをおこないます。

    Display Modes

    ASP.NET MVC 4 の Display Modes と呼ばれる機能では、デスクトップ PC 上の Web ブラウザー向けのビューと、モバイル端末の Web ブラウザー向けのビューをそれぞれ用意しておくだけで、ASP.NET MVC 4 フレームワークが自動でブラウザー種別を判断して切り替えをおこないます。例えば、下記のようにデスクトップ PC の Web ブラウザー向けの Index.cshtml と共に、モバイル ブラウザー向けの Index.Mobile.cshtml を作成します (ここでは Index.cshtml ファイルをコピーして同フォルダーにペーストして使用しています)。

    図 29: Index.Mobile.cshtml の作成

    さらに、分かりやすいように各ビューの一部を変更して下記のように記述します。

    Index.cshtml

    @{
    ViewBag.Title = "Windows Developer Days PC";
    }

    ...

    Index.Mobile.cshtml

    @{
    ViewBag.Title = "Windows Developer Days Mobile";
    }

    ...

    この状態で、Visual Studio 2010 のメニューの [デバッグ開始 (F5)] または [デバッグなしで開始 (Ctrl + F5)] でアプリケーションを開始すると、デスクトップ PC 上の Web ブラウザーでは下記のように Index.cshtml がビューとして使用されます。

    図 30: デスクトップ PC の Web ブラウザーでの表示

    一方、同じ URL に対してモバイル端末の Web ブラウザーを使ってアクセスすると、下記のように Index.Mobile.cshtml がビューとして使用されます。

    図 31: Windows Phone Emulator での表示

    このように、モバイル端末用のビューを用意するだけで容易に表示を切り替えることが可能です。

    この DisplayMode 機能では、HttpBrowserCapabilities の IsMobileDevice プロパティを元にモバイル Web ブラウザーか否かの判別がおこなわれています。

    例えば、ビュー "Views\Home\Index.cshtml" に対して、通常のデスクトップ PC の Web ブラウザーでアクセスすると、通常は "IsMobileDevice == false" と判定され、そのまま Index.cshtml がビューとして使用されます。一方、この Web アプリケーションをモバイル端末の Web ブラウザーでアクセスして "IsMobileDevice == true" と判定されると、ASP.NET MVC 4 の DisplayMode 機能によってデフォルトでは Index.Mobile.cshtml が自動的にビューとして使用されるようになります。ここでは Index ページを例にとりましたが、この DisplayMode 機能はレイアウト ページ (_Layout.cshtml など) や部分ビュー (_LoginPartial.cshtml など) に対しても同じように動作します。

    モバイル デバイス毎にビューを切り替える

    デフォルトの Display Modes 機能では、モバイル Web ブラウザーか否かの判定でビューを切り替えるのみですが、モバイルと判定された場合のビューをさらに分けて用意し、モバイル端末の種別ごとにビューを切り替えることも可能です。

    例えば、iPhone 専用のビューを用意したい場合、System.Web.WebPages を参照した上で、下記のコードを Global.asax.csApplication_Start メソッドに追加し、DefaultDisplayMode インスタンスを追加登録します (UserAgent をベースとした判別ロジックは一例です)。

    using System.Web.WebPages;

    ...

    protected void Application_Start()
    {
    DisplayModeProvider.Instance.Modes.Insert
    (0, new DefaultDisplayMode("iPhone")
    {
    ContextCondition = (context => context.GetOverriddenUserAgent().
    IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
    });

    ...
    }

    そして、例えば Index.cshtml に対して、iPhone 用のビュー Index.iPhone.cshtml を用意します。

    図 32: Index.iPhone.cshtml の追加

    また、Index.Mobile.cshtml の例と同様に、Index.iPhone.cshtml の記述をわかりやすいように下記のように書き換えます。

    Index.iPhone.cshtml

    @{
    ViewBag.Title = "Windows Developer Days iPhone";
    }

    ...

    この状態で、Visual Studio 2010 のメニュー [デバッグ開始 (F5)] または [デバッグなしで開始 (Ctrl + F5)] でアプリケーションを開始し iPhone でページを表示すると、下記のように iPhone 用のビューが使用されるようになります。

    図 33: iPhone (Simulator) での表示

    Note:
    Display Modes では、ビューのファイル名に追加する文字列 (MobileiPhone など) の大文字・小文字の区別はされません。

    ページのトップへ

    4. jQuery Mobile を使ってモバイル向けビューを作成する

    プロジェクトへ jQuery Mobile を追加する

    jQuery Mobile (英語) と呼ばれる JavaScript ライブラリを使用すると、モバイル デバイスに最適化したビューを簡単に作成することができます。

    ASP.NET MVC 4 の Internet Application プロジェクト テンプレートでは、標準では jQuery Mobile は含まれていませんが、NuGet と呼ばれるパッケージ マネージャの仕組みを使うことで簡単に jQuery Mobile をプロジェクトに追加することができます。

    Visual Studio 2010 のメニューから、[ツール] – [Library Package Manager] – [Manage NuGet Packages for Solution...] を選択すると、[Manage NuGet Packages] ダイアログが表示されます。このダイアログの左側の "Online" を選択してから右上の検索ボックスに "jQuery.Mobile" と入力すると簡単に jQuery Mobile パッケージを検索することができます。

    図 34: NuGet による jQuery Mobile のインストール

    ここで [Install] ボタンをクリックすると、jQuery Mobile の JavaScript ファイルと CSS ファイルがプロジェクトに追加されます。

    なお、NuGet パッケージ マネージャでは、上記のダイアログ ベースの管理だけでなくコマンドライン ベースの管理も可能です。メニューの [ツール] – [Library Package Manager] – [Package Manager Console] を選択するとコンソール ウィンドウが開きますので、ここで "Install-Package jQuery.Mobile" と入力することでもパッケージを追加可能です。

    図 35: コマンドラインでの jQuery Mobile の追加

    現時点では、jQuery Mobile のバージョン 1.0.1 が Script フォルダーに追加され、同時に依存関係を持った jQuery が 1.6.4 に更新されます。

    図 36: プロジェクトに追加された jQuery Mobile 関連ファイル

    モバイル用レイアウト ビューの作成

    続いて、前述の Display Modes の機能を使ってレイアウト ビューもデバイス毎に切り替えるようにします。
    下記のようにデスクトップ PC の Web ブラウザー向けのレイアウト ビュー _Layout.cshtml と共に、モバイル ブラウザー向けの _Layout.Mobile.cshtml を作成します。

    図 37: _Layout.Mobile.cshtml の追加

    そして、jQuery Mobile の機能を使って下記のようにビューを記述します。

    _Layout.Mobile.cshtml

    <!DOCTYPE html>
    <html<
    <head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <meta name="viewport" content="width=device-width" />
    <link rel="stylesheet" href="~/Content/jquery.mobile-1.0.1.min.css" />
    <script type="text/javascript"
    src="~/Scripts/jquery-1.6.4.min.js"></script>
    <script type="text/javascript"
    src="~/Scripts/jquery.mobile-1.0.1.min.js"></script>
    </head>
    <body>

    <div data-role="page" data-theme="a">

    <div data-role="header">
    <h1>WDD モバイル</h1>
    <div data-role="navbar">
    <ul>
    <li>@Html.ActionLink("Sessions", "Index", "Session")</li>
    <li>@Html.ActionLink("About", "About", "Home")</li>
    <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
    </ul>
    </div>
    </div>

    <div data-role="content">
    @RenderBody()
    </div>

    </div>

    </body>
    </html>

    同時に、Index.Mobile.csthml と Index.iPhone.cshtml のセッション情報一覧へのリンクを下記のように jQuery Mobile のボタンとアイコン属性を指定して書き換えます。

    Index.Mobile.cshtml と Index.iPhone.csthml

    @{
    ViewBag.Title = "Windows Developer Days Mobile"; // または iPhone
    }
    <div>
    <h1>@ViewBag.Title.</h1>
    <h2>@ViewBag.Message</h2>
    <p>
    <a href="@Url.Action("Index", "Session")"
    data-role="button" data-icon="star">セッション情報一覧はこちら</a>
    </p>
    </div>

    この状態で iPhone でアプリケーションを表示すると、下記のように jQuery Mobile で最適化されたレイアウトやボタンが使用されたトップ ページが表示されます。

    図 38: jQuery Mobile で最適化されたトップ ページ

    モバイル用セッション情報一覧ビューの作成

    同様に、セッション情報一覧のビューの表示を jQuery Mobile を使って最適化します。セッション情報一覧表示用のビュー ファイル "Views\Session\Index.cshtml" のモバイル用ビュー ファイル "Views\Session\Index.Mobile.cshtml" を作成します。

    図 39: モバイル用セッション一覧ビューの作成

    そして、下記のようにセッション情報一覧表示用のビューを記述します。

    Views\Session\Index.Mobile.cshtml

    @model IEnumerable<MvcApplication1.Models.Sessions>

    @{
    ViewBag.Title = "セッション一覧";
    }

    <h2>@ViewBag.Title</h2>

    <div>
    <ul data-role="listview" data-theme="c">
    @foreach (var item in Model) {
    <li>
    <a href="@Url.Action("Details", new { item.Id })">
    <h4>@Html.DisplayFor(modelItem => item.Title)</h4>
    <p>Session Code: @Html.DisplayFor(modelItem => item.Code)</p>
    <p>Room: @Html.DisplayFor(modelItem => item.Room)</p>
    </a>
    </li>
    }
    </ul>
    </div>

    <p>
    <a href="@Url.Action("Create", "Session")"
    data-role="button" data-icon="plus">追加</a>
    </p>

    この状態で iPhone でセッション情報一覧を表示すると、下記のような表示となります。

    図 40: jQuery Mobile を使って最適化したセッション情報一覧ビュー

    各セッションをタップ (クリック) すると、セッション情報の詳細ビューに表示が変わり、詳しい情報を確認することもできます。

    Note:
    このドキュメントでは、詳細ビュー "Details.cshtml" の変更まではご紹介しませんが、ここまでご紹介した jQuery Mobile を使ってモバイル デバイスで見やすいレイアウトに容易に変更することができます。

    検索機能の追加

    jQuery Mobile を使うと、リスト表示されたデータ アイテムの検索機能を簡単に追加することができます。前述の Views\Session\Index.Mobile.cshtml の ul リストの属性に、下記のように data-filter="true" と data-filter-placeholder="検索" を追加します。

    Views\Session\Index.Mobile.cshtml

    ...

    <div>
    <ul data-role="listview" data-theme="c"
    data-filter="true" data-filter-placeholder="検索">
    ...

    この修正だけで、下記の実行例のように検索ボックスが表示されるようになります。

    図 41: 検索ボックスの追加

    検索はクライアント サイドでインクリメンタルにおこなわれるため、とても軽快にリスト アイテムを検索することができます。

    図 42: アイテムの検索の様子

    以上のように、ASP.NET MVC 4 と jQuery Mobile、そして SQL Azure などを利用することで、スマート フォンやタブレットなどの各種モバイル デバイスに対応した Web アプリケーションを迅速に作成することが可能です。

     

    출처 : http://msdn.microsoft.com/ja-jp/windowsazure/hh965702(ja-jp)

    1. TOSHU TOSHU 2013.01.28 15:13 신고

      혹시나 한국판 번역이 필요하신분이 열분정도 계시면,
      시간나는대로 번역해서 올리도록 하겠습니다.
      댓글로 문의주세요.

     

    아래와 같은 방법으로

    1초에 한번씩 메세지를 띄울수 있습니다.

     

    컨트롤 : 텍스트박스, 라벨, 타이머 (각1)

     

     

    Public Class Form1
        Dim cnt As Integer = 1
        Dim tmpStr As String

        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            If cnt <= 5 Then
                tmpStr = tmpStr & Now & " TEST:" & cnt & vbCrLf
                cnt = cnt + 1
                TextBox1.Text = CInt(TextBox1.Text) - 1

            Else
                Timer1.Stop()
                MsgBox(tmpStr)
                End

            End If

        End Sub

     

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Timer1.Interval = 1000
            Timer1.Start()
            TextBox1.Text = 5
        End Sub
    End Class

     

    Visual Basic 6.0에서 Visual Basic .NET으로 마이그레이션할 경우 얻을 수 있는 이점

    White Paper

    Ken McNamee
    Eric Cherng
    James Duff
    Scott Stanfield
    Vertigo Software, www.vertigosoftware.com


    Jay Roxe
    Microsoft Corporation


    2004년 8월

    적용 응용 프로그램:

    Microsoft Visual Basic 6.0

    Microsoft Visual Basic .NET

    Microsoft Visual Studio .NET 2003

    Microsoft .NET Framework 1.1



    요약

    Doculabs에서 최근 실시한 독립 벤치마크 결과, Visual Basic .NET 웹 응용 프로그램이 동등한 응용 프로그램보다 성능이 우수하며 더 많은 사용자를 지원하는 것으로 나타났습니다. 본 자료는 그 벤치마크 결과를 요약한 것으로, 응용 프로그램 성능 및 개발자 생산성 향상을 중점적으로 다룹니다. 벤치마킹 응용 프로그램을 ASP/Visual Basic 6.0 버전에서 ASP.NET/Visual Basic.NET 버전으로 마이그레이션하는 방법을 통해 이러한 이점을 설명하겠습니다.

    다른 조건은 그대로 두고 Visual Basic 6.0에서 Visual Basic .NET으로 바꾸기만 했는데도 시스템의 트랜잭션이 평균 3배 이상 늘었습니다. 본 자료에서는 그 결과를 요약하고 그러한 결과를 이끈 Output Caching과 같은 Visual Baskc .NET의 새 기능에 대해 설명합니다.


    도입

    이 벤치마크 테스트 결과를 보면 Visual Basic .NET으로 업그레이드할 경우 Visual Basic 6.0 응용 프로그램보다 성능이 최소한 2배 이상 향상된다는 것을 알 수 있습니다. 그렇다면 기술 업그레이드가 어떻게 그렇게 현격한 성능 향상을 가져올 수 있을까요? 본 자료에서는 실제 응용 프로그램 성능을 점검하고 현저한 성능 및 확장성 향상을 이끈 ASP.NET과 Visual Basic .NET의 새 기능에 대해 살펴봅니다.

    Visual Basic .NET은 Visual Basic 프로그래밍 언어의 최신 버전입니다. 첫 번째 버전부터 Visual Basic은 강력한 응용 프로그램 작성에 사용되는 간단하면서도 생산적인 언어로 유명했습니다. Visual Basic .NET은 사용자에게 익숙한 구문은 대부분 그대로 유지하면서 이 언어를 발전시켜 이러한 전통을 계승하고 있습니다. 또한 .NET Framework에서 Visual Basic .NET을 지원하므로 Visual Basic 개발자는 이전 버전에서는 볼 수 없었던 더 많은 강력한 기능에 액세스할 수 있습니다. 예를 들면, Visual Basic 6.0의 웹 서비스 호출과 같은 복잡한 기능이 Visual Basic .NET에서는 코드 단 두 줄로 해결됩니다.

    Visual Basic 6.0에서 Visual Basic .NET으로 변경할 경우 얻어지는 성능 향상을 설명하기 위해 Nile Web 응용 프로그램의 벤치마크를 살펴 보겠습니다. Nile은 많은 독립 테스팅 업체가 응용 프로그램 플랫폼 벤치마크에 널리 사용하는 온라인 전자 상거래 서점 샘플 응용 프로그램입니다. 이 벤치마크는 원래 Doculabs와 PC Magazine에서 다양한 응용 프로그램 플랫폼을 테스트하기 위해 사용한 것으로 Visual Basic 6.0과 Visual Basic .NET으로 포트되었습니다. Nile은 샘플이긴 하지만 90% 데이터 구동, 세션 상태 사용, 사용자 인증 로그인과 같은 실제 웹 응용 프로그램 요소를 사용하기 때문에 상당히 유익한 벤치마크입니다.

    Nile 응용 프로그램의 두 Visual Basic 버전의 벤치마크를 살펴 보겠습니다. 하나는 Visual Basic 6.0 COM+ 구성 요소를 사용해 ASP로 작성된 버전이며 나머지 하나는 Visual Basic .NET을 사용하여 ASP.NET 1.1로 작성된 버전입니다. 동일한 컴퓨터 구성과 동일한 응용 프로그램에서 Visual Basic 6.0과 Visual Basic .NET을 비교하면 Visual Basic .NET이 제공하는 현격한 성능 향상을 확인할 수 있을 것입니다.

    이 벤치마크를 실행하기 위해 20분마다 250명의 가상 사용자를 추가하도록 시뮬레이션합니다. 너무 많은 HTTP 오류가 발견되거나 평균 응답 시간이 3초를 초과할 경우 벤치마크 테스트가 종료됩니다. 다음은 이 벤치마크 결과입니다. 하드웨어 및 소프트웨어 설정에 관한 자세한 내용은 벤치마크 결과 섹션의 끝부분에 제공됩니다.

    본 자료에 제시된 결과는 여기 (US)에서 볼 수 있는 전체 보고서를 요약한 것입니다.


    피크 처리량

    피크 처리량은 특정 구성이 지원할 수 있는 최대 처리량을 말합니다. 다음 그림은 Visual Basic 6.0 및 Visual Basic .NET Nile 응용 프로그램을 둘 다 사용해 테스트한 서로 다른 네 가지 CPU 구성의 피크 처리량입니다.



    위 그림에서 볼 수 있는 것처럼 ASP.NET/VB.NET 버전은 상응하는 ASP/VB6 버전보다 최소한 200% 이상 우수합니다. 더 높은 CPU 구성에서는 Visual Basic .NET 버전의 피크 처리량이 Visual Basic 6.0 버전보다 3배 이상 우수한 것을 볼 때 200%라는 수치는 실제로 아주 적게 잡은 수치라고 할 수 있습니다.

    Visual Basic 6.0의 경우 CPU 수가 증가할 경우 응용 프로그램 성능이 평균 48% 증가했습니다. 한편 Visual Basic .NET 버전 응용 프로그램은 성능이 평균 70% 증가했습니다. 이는 Visual Basic .NET을 사용하여 응용 프로그램을 작성할 경우 추가 리소스를 보다 더 잘 활용할 수 있으며 훨씬 더 확장성 있는 솔루션을 제작할 수 있다는 것을 뜻합니다.

    소규모 기업이나 취미로 개발을 하는 사람은 일반적으로 웹 응용 프로그램을 실행하는 멀티 프로세서 서버를 보유하지 않습니다. Visual Basic .NET에서의 성능 향상 때문에 1 CPU 및 2 CPU 구성의 경우만 하더라도 ASP.NET/VB.NET 응용 프로그램이 ASP/VB6 응용 프로그램보다 월등하게 우수합니다. 성능 확장력이 있으므로 처음에는 최소한의 하드웨어만 투자하면 되며 나중에 성능 확장이 필요할 경우 그에 맞게 하드웨어를 추가하면 됩니다.

    소규모 기업과 달리 대부분의 대기업은 일반적으로 최적의 성능을 내기 위해 더 많은 CPU에서 응용 프로그램을 실행합니다. 다음 그림은 8 CPU 구성을 자세히 나타낸 것으로 Visual Basic .NET 응용 프로그램의 피크 처리량 성능이 동일한 Visual Basic 6.0 응용 프로그램보다 3배 이상 우수하다는 것을 알 수 있습니다.



    확장성 비교

    피크 처리량도 중요하지만 더 중요한 것은 그 처리량이 사용자 로드에 따라 어떻게 달라지는가 하는 것입니다. 처리량을 비교해 보면 시스템이 포화되어 오류가 발생하기 전까지 그 시스템에서 지원할 수 있는 최대 트랜잭션을 알 수 있습니다. 아래 그림은 8 CPU 구성 서버에서 실행되는 Nile의 ASP/VB6 및 ASP.NET/VB.NET 버전 처리량을 비교한 것입니다.


    위 그림을 보면 Visual Basic 6.0 응용 프로그램은 우리 테스트 기준을 벗어나기 전까지 초 당 약 500 트랜잭션에서 약 4,500명의 가상 사용자를 지원할 수 있습니다. 4,500명이면 많은 수이긴 하지만 초 당 약 2,200 트랜잭션에서 약 13,000 명의 가상 사용자를 지원할 수 있는 Visual Basic .NET 버전과는 비교가 되지 않습니다. 이는 동일한 응용 프로그램의 경우 Visual Basic 6.0에서 Visual Basic .NET으로 업그레이드하면 사용자는 두 배 이상, 그리고 처리량은 4배 이상을 지원할 수 있다는 것을 뜻합니다. 하드웨어 및 운영 체제 등 모든 것이 동일할 경우 처리량과 사용자가 증가했다는 것은 Visual Basic .NET으로 작성된 응용 프로그램이 Visual Basic 6.0으로 작성된 응용 프로그램보다 리소스를 훨씬 더 효율적으로 활용하며 따라서 기존 투자에 훨씬 더 큰 가치를 제공한다는 것을 보여줍니다.

    모든 벤치마크 결과에서 공통적인 경향은 Visual Basic 6.0 응용 프로그램을 Visual Basic .NET으로 전환할 경우 특히 웹 응용 프로그램의 경우 성능 및 확장성이 크게 향상된다는 것입니다. 다음은 이러한 극적인 성능 향상을 가능하게 한 Visual Basic .NET의 기술 향상에 대한 설명입니다.

    설정

    이 섹션의 하드웨어 및 소프트웨어 설명은 전체 보고서의 상세 정보를 요약한 것입니다.

    하드웨어

    Compaq ProLiant 시리즈가 이 벤치마크의 서버로 사용되었습니다. 4 CPU 3.6GB RAM 구성의 Compaq ProLiant DL580 서버(733 MHz Pentium III Xeon)가 데이터베이스 서버로 사용되었으며 웹 응용 프로그램 서버로는 4 및 8 CPU 2 GB RAM 구성의 Compaq ProLiant 8500R(700 MHz Pentium III Xeon)이 사용되었습니다. 이 서버에서 작업 부하를 생성하기 위해 모두 50대의 단일 프로세서 Dell 클라이언트 워크스테이션를 사용하였습니다. 그리고 마지막으로 테스트 관리 및 결과 수집에는 Mercury Interactive Controller를 사용하였습니다.

    소프트웨어

    Windows Server 2003 Enterprise Edition이 이 벤치마크의 운용 체제로 사용되었습니다. 운영 체제 외에 SQL Server가 데이터베이스로 사용되었으며 IIS(Internet Information Services) 6.0이 Nile Web 응용 프로그램을 호스팅하는데 사용되었습니다. 기본 제공되는 .NET Framework 1.1이 Nile VB .NET 버전 실행에 사용되었으며 로드 생성 및 결과 수집에는 Mercury Interactive LoadRunner 7.5 테스트 제품을 사용하였습니다.


    Visual Basic .NET으로 마이그레이션해야 하는 6가지 이유

    Visual Basic .NET은 Microsoft Windows 및 Web용 응용 프로그램을 신속하게 구성하는데 필요한 가장 간단하면서도 가장 생산적인 언어와 도구를 제공합니다. 따라서 Microsoft .NET 개발 환경으로 바꾸려는 새 개발자뿐만 아니라 기존의 Visual Basic 개발자에게도 매우 탁월한 선택입니다. Visual Basic .NET은 강화된 비주얼 디자이너, 향상된 응용 프로그램 성능, 보다 우수한 배포 옵션, 향상된 데이터베이스 액세스, 그리고 강력한 IDE(Integrated Development Environment)를 제공하여 신속하게 응용 프로그램을 개발할 수 있도록 만들어 줍니다.



    보다 쉽고 강력한 웹 기반 응용 프로그램 개발

    ASP.NET의 최고급 언어인 Visual Basic .NET을 사용하면 개발자는 기존의 ASP Web 응용 프로그램에 비해 더욱 광범위한 성능과 생산성 향상을 제공하는 웹 기반 응용 프로그램을 손쉽게 개발할 수 있습니다. Visual Basic 개발자는 이제 자신의 기존 기술을 사용하여 안정적이고 확장성 있는 고성능 웹 응용 프로그램을 더욱 신속하게 구축할 수 있습니다.

    그렇다면 Visual Basic .NET은 웹 개발 부분에서 어떻게 Visual Basic 6.0에 비해 이렇게 우수한 성능 향상을 달성할 수 있는 것일까요? 먼저, 기존 ASP에서 사용했던 속도가 느린 해석된 스크립팅 모델을 더 이상 사용하지 않습니다. ASP.NET 페이지는 실제로 웹 응용 프로그램 내에 완벽하게 컴파일된 클래스로, 해석된 ASP 페이지보다 3~5배나 빠르게 실행됩니다. 페이지는 ASP.NET 런타임에 의해 자동으로 일단 컴파일 됩니다. 그리고 페이지가 변경될 때까지 임시 위치로 캐시되며 페이지가 변경되면 다시 컴파일 됩니다. 두 번째로, ASP.NET에서는 캐시된 출력 복사본이 이미 메모리에 있는 경우 런타임이 그 페이지 처리를 건너뛰도록 허용하는 Output Caching이라고 하는 기능이 있습니다. 이 기능은 HTML 출력을 사용자에게 반환하는데 필요한 시간을 크게 줄일 수 있으며 웹 서버의 처리 용량이 크게 증가합니다. 또한 ASP.NET Output Caching은 쉽게 구성할 수 있습니다. 따라서 사용자 정의 가능한 다양한 수의 매개 변수를 기초로 다양한 시간 동안 페이지를 캐시할 수 있습니다. Output Caching은 또 캐싱 전용 페이지 조각을 지원하므로 한 페이지의 대부분을 캐시하고 한 섹션만 동적으로 남겨둘 수도 있습니다. 마지막으로 Visual Basic .NET 개발자는 HTML뿐만 아니라 개체 및 데이터 캐싱까지 허용하는 보다 강력한 Caching API에 액세스할 수 있습니다. 이러한 기술 향상이 벤치마크 결과(Visual Basic .NET으로 구축한 ASP.NET 웹 응용 프로그램의 탁월한 기능과 같은)로 성능 그래프에서 보여준 우수한 성능의 가장 큰 이유입니다.

    성능 외에도 ASP.NET은 언어가 단순하다는 또 다른 장점이 있습니다. Visual Studio의 이전 버전, 특히 Visual InterDev에서는 개발자가 웹 개발을 하려면 ASP 페이지 용 VBScript, COM 구성 요소 용 Visual Basic 6.0, 사용자 인터페이스 용 HTML, 그리고 클라이언트 브라우저 용 JScript를 알아야 했습니다. ASP.NET의 기본 제공 기능과 컨트롤 및 Visual Basic .NET을 언어로 사용하면 개발자는 어떤 브라우저 및 어떤 플랫폼에서나 인텔리전트하게 구성할 수 있는 풍부한 씬 클라이언트 사용자 인터페이스를 쉽고 빠르게 만들 수 있습니다. 기본 텍스트 상자 및 단추부터 달력, DataGrids, 필드 확인기와 같은 리치 컨트롤까지 컨트롤 범위도 다양합니다. HTML 및 Jscript를 사용한 프로그램 옵션이 완벽하게 지원되지만 ASP.NET은 이러한 컨트롤을 HTML 및 Jscript로 출력하는 최상의 방법을 자동으로 결정합니다. 게다가 ASP.NET은 어떤 브라우저 유형이 페이지를 요청하는지를 자동으로 감지하고 해당 브라우저에 적합한 HTML/Jscript를 출력하므로 이제 특정 브라우저 유형을 지원하기 위해 사용자 지정 코드를 작성할 필요가 없습니다.

    ASP.NET은 또 코드 유지 관리성 부문이 크게 향상되었습니다. 기존의 ASP 웹 응용 프로그램은 그 구성이 엉망일 때가 많았습니다. 페이지에는 해당 브라우저에 대한 HTML 출력뿐만 아니라 서버 측 VBScript 형태의 비즈니스 논리도 포함되어 있습니다. 비즈니스 논리를 별도의 COM 구성 요소로 컴파일하면 코드와 HTML을 분리할 수 있지만 또 다른 도구에서 또 다른 프로젝트를 만들어야 하며 또 다른 언어를 알고 있어야 하고 게다가 COM 구성 요소를 호출하려면 인라인 VBScript를 포함시켜야 합니다. Visual Basic .NET 또는 다른 .NET 언어를 사용해 만들어진 ASP.NET 페이지는 HTML은 한 파일에, 서버 측 코드는 다른 파일에 있도록 하는 Code Behind라는 개념을 제공합니다. 이렇게 되면 코드를 읽고 유지 관리하기가 쉬우므로 훨씬 더 효율적인 팀 기반 개발과 개발자 생산성 향상이 이루어집니다. Code Behind를 사용하면 웹 디자이너는 단순한 ASP.NET 구문을 사용하여 페이지 레이아웃을 디자인할 수 있으며 Visual Basic .NET 개발자는 동시에 비즈니스 논리 관련 작업을 할 수 있습니다. 따라서 소스 제어 동시성 문제 발생 빈도가 크게 떨어집니다.

    웹 팜 환경에서 세션 개체의 유용성을 제한하는 심각한 결함을 가졌던 기존 ASP에서 교훈을 얻어 ASP.NET 용 세션 상태를 다시 작성했습니다. 기존 ASP 모델 외에도 ASP.NET에는 응용 프로그램이 단일 서버에서 다중 서버 웹 팜으로 손쉽게 확장하면서도 세션 상태가 제공하는 장점을 여전히 이용할 수 있는 두 가지 새로운 옵션이 추가되었습니다. 세션 상태는 이제 전용 상태 서버 또는 SQL Server 데이터베이스에 저장이 가능합니다. 두 옵션 모두 웹 팜의 모든 서버에 액세스할 수 있으며 어떠한 이유로 인해 웹 응용 프로그램이 중단되어 다시 시작되더라도 세션 상태가 손실되지 않습니다. 또한 ASP.NET 세션 상태는 쿠키가 없는 작업에 대해도 보다 많이 지원합니다. 이러한 모든 옵션은 구성이 가능하므로 사용되는 세션 상태 유형을 작동 정지 없이 언제라도 즉시 변경할 수 있습니다.

    강력한 Windows 기반 응용 프로그램 구축

    Visual Basic .NET은 강력한 Microsoft Windows 기반 응용 프로그램과 서비스를 구성하는 가장 생산적인 도구로서, XML Web Services, 강화된 Windows Form Designer 및 많은 추가 컨트롤을 지원하는 Windows Forms 응용 프로그램을 구축하기 위한 세계적 수준의 환경을 제공합니다.

    XML Web Services를 사용하여 데이터 요청을 중개하면 분산 아키텍처의 데이터 중심적인 Windows 기반 응용 프로그램을 보다 확장성있게 만들 수 있습니다. .NET Framework는 우수한 수준의 웹 서비스 지원을 제공하므로 인터넷을 통한 웹 서비스 메서드 호출이 로컬 기능 호출만큼 쉬워집니다.

    새 Windows Forms Designer는 Visual Basic 6.0 Forms Designer에 비해 크게 업그레이드되어 개발자가 보다 짧은 시간 내에 데스크톱 응용 프로그램을 상용화할 수 있도록 만들어 줍니다. Form 클래스에는 이제 Visual Basic .NET 개발자가 작성해야 하는 코드 양을 크게 줄여주는 동시에 현대적인 사용자 인터페이스 경험을 제공하는 많은 새 속성과 컨트롤이 있습니다. 예를 들면, 컨트롤 앵커링 및 유연한 도킹 지원은 이제 Resize 이벤트 핸들러에 더 이상 복잡한 코드가 필요하지 않다는 것을 뜻합니다. 그리고 Opacity 속성을 사용하여 이 양식을 부분적으로 투명하게 만들 수 있으며 TransparencyKey 속성을 사용하면 직사각형이 아니게 만들 수도 있습니다. 한편 TopMost 속성은 이 양식이 계속해서 다른 모든 응용 프로그램 창 위에 보이도록 합니다.

    Visual Basic 6.0에는 도구 상자에서 끌어서 놓으면 되는 풍부한 기능을 제공하는 큰 컨트롤 모음이 있었습니다. Visual Basic .NET에서는 이 모음이 확장되어 CheckedListBox, PrintPreviewControl, LinkLabel과 같은 몇몇 컨트롤이 추가되었으며, 클릭 가능한 웹 브라우저 링크로 표시됩니다.

    시스템 트레이 아이콘을 지원하는 응용 프로그램 만들기를 예로 들어 봅시다. Visual Basic .NET에서는 NotifyIcon 컨트롤을 사용하면 복잡한 Win32 API 호출을 다시 정렬하지 않고도 시스템 트레이에 손쉽게 응용 프로그램 아이콘을 표시할 수 있습니다. 이렇게 하려면 오른쪽 클릭 메뉴에 시스템 트레이 아이콘을 제공하는 COntextMenu 컨트롤을 추가하거나 해당 응용 프로그램의 주요 사용자 인터페이스 내 아무 곳에서나 이 아이콘을 사용하면 됩니다. 하지만 Visual Basic 6.0을 사용할 경우에는 이 단순한 작업을 실행하는데 너무나 많은 기술이 필요하며 원시 Win32 API를 잘 알고 있어야 합니다.

    Visual Basic .NET의 강력한 새 개체 지향적 기능을 이용하면 더 간단하면서 유지 관리성도 더 높은 코드를 사용하므로 기존의 UserControls를 더욱 쉽게 확장할 수 있습니다.

    Visual Basic .NET은 이 외에도 Declares 구문을 사용한 복잡한 코드를 요구하는 많은 Win32 API 기능에 대해 더욱 통합된 지원을 제공합니다. System.Drawing 네임스페이스의 클래스는 복잡한 창 그림에 사용되는 단순한 API를 제공합니다. 이 외에도 GIF, JPG, PNG와 같은 가장 많이 사용되는 이미지 유형에 대한 통합 지원도 있습니다. 이 네임스페이스를 사용하면 개발자는 자신만의 이미지를 체계적으로 손쉽게 만들거나 심지어는 기존 이미지에 텍스트를 포개는 작업까지도 손쉽게 할 수 있습니다.

    Visual Basic .NET 개발자는 이제 실제 Windows Services와 멀티-스레딩, 그리고 웹 서비스 액세스 통합 지원을 통해 보다 복잡하면서도 더욱 튼튼한 응용 프로그램을 만들 수 있습니다. Visual Basic .NET은 타사 솔루션 없이도 Windows Services를 손쉽게 만들 수 있도록 해주는 ServiceBase 클래스를 제공합니다. 그리고 새 스레딩 기능 덕분에 응용 프로그램 성능과 응답력이 실제로나 사용자 인식에 있어서나 크게 향상되었습니다. Visual Basic 언어 자체도 크게 향상되고 현대화되었습니다. Visual Basic .NET은 이제 보다 견고하고 재사용 가능하며 유지 관리성도 훨씬 큰 코드를 허용하는 완벽하게 객체 지향적인 언어입니다. 엄격한 형식 검사 덕분에 찾기 힘든 버그는 줄고 명시적인 인터페이스는 많아져 재사용 가능성이 향상됩니다. 그리고 견고한 예외 처리는 오류 찾기를 훨씬 더 효율적이고 정확하게 만들어 주므로 응용 프로그램이 훨씬 더 안정적입니다.

    원활한 배포

    Visual Basic .NET이 Visual Basic 6.0에 비해 탁월함이 두드러지는 분야 중 하나가 배포 분야입니다. Visual Basic 6.0 개발자는 응용 프로그램을 설치하고 구성 요소를 등록하며 응용 프로그램 간에 서로 다른 버전의 동일한 구성 요소를 공유하도록 하는 방법을 처리하는 DLL Hell 프로세스에 익숙합니다. 하지만 이러한 작업은 아주 불편하고 심지어는 악몽 같은 작업이 될 수도 있습니다. .NET Framework는 Windows 및 웹 응용 프로그램 모두 대상 디렉터리에 복사하기만 하면 설치되는 XCOPY 배포 기능을 제공합니다.

    XCOPY 배포가 부적절한 경우에는 새 자동 다운로드 배포가 웹 브라우저에 URL을 표시하여 Windows 기반 응용 프로그램이 실행되도록 합니다. Visual Basic .NET을 사용하여 작성된 Windows 응용 프로그램은 이제 HTML 페이지와 동일한 방식으로 설치 및 유지 관리가 가능합니다. 즉, 새 응용 프로그램 또는 응용 프로그램 구성 요소를 사용해 서버를 업데이트하기만 하면 됩니다. 이 개념을 No-Touch 배포라고 하며, 응용 프로그램 사용자가 항상 최신 버전의 Windows 응용 프로그램을 실행하도록 만들어 줍니다. 이 기능은 사용자에게 익숙한 사용자 인터페이스를 제공하는 동시에 Windows 기반 응용 프로그램 배포를 둘러싼 많은 문제점을 해결해 줍니다. Microsoft는 외에도 .NET 응용 프로그램 용 Updater Application Block과 같은 다른 구성 요소도 제공합니다. 이 구성 요소를 사용하면 개발자는 인텔리전트하게 스스로 업데이트하는 방법을 아는 아주 우수하고 유연한 응용 프로그램을 만들 수 있습니다.

    웹 응용 프로그램의 경우 ASP.NET은 그 배포 기능에 있어서도 아주 탁월합니다. 더 이상 COM 구성 요소를 등록할 필요가 없으므로 몇 분간의 작동 정지를 유발하고 잠겨진 DLL을 릴리스하기 위해 웹 서버를 중단한 다음 다시 시작해야 할 필요도 없어졌습니다. Visual Basic .NET을 사용해 구성된 ASP.NET 응용 프로그램을 실행 중인 웹 응용 프로그램 위로 복사하기만 하면 되며 웹 서버를 중단하거나 서버를 다시 부팅할 필요가 없습니다. 그리고 웹 서버에 이루어진 기존의 모든 HTTP 요청은 그 웹 응용 프로그램의 기존 인-메모리 버전에서 계속해서 실행되며 새 HTTP 요청은 새 버전에서 처리됩니다. 이 기능 덕분에 작동 정지가 전혀 없는 웹 응용 프로그램이 가능한 것입니다.

    ASP.NET에는 web.config라고 하는 새로운 개념의 웹 응용 프로그램 구성 파일이 있습니다. 응용 프로그램 고유 설정이 이 파일에 안전하게 저장되어 나머지 웹 페이지에 배포되도록 합니다. 이 파일에서 읽혀진 설정은 메모리에 저장됩니다. Web.config 파일이 변경되면 ASP.NET은 새 파일에서 그 설정을 다시 읽어 새 요청을 처리하는 새 프로세스를 시작합니다. 응용 프로그램이 변경되는 이 경우에도 웹 서버 작동 정지가 필요하지 않습니다.

    ADO.NET을 사용한 강력하고 유연한 데이터 액세스

    ADO.NET을 사용하면 개발자는 데이터 액세스 코드에 IntelliSense 및 문 완성을 제공하는 강력한 형식의 프로그래밍 모델 및 DataSet 클래스와 같은 보다 강력한 구성 요소를 액세스할 수 있습니다. 기존 ADO와 달리 ADO.NET은 연결되었거나 연결이 끊어진 데이터 중심 응용 프로그램에 최상의 성능과 확장성을 제공하도록 최적화되었습니다.

    DataSet 클래스는 데이터베이스 연결에 필요한 지연 시간은 최소화하면서 데이터를 쿼리 및 업데이트하는 우수한 방법입니다. 기존 ADO는 데이터 송수신에는 우수했지만 개발자가 연결을 끊고 나면 데이터 처리 방법이 제한적이었습니다. 이 때문에 많은 개발자가 성능, 응답력, 시스템 확장성을 제한하는 길을 걸을 수 밖에 없었습니다. 하지만 다중 테이블과 관계, 그리고 기존 및 새로운 가치를 추적하는 기능을 갖춘 DataSet는 데이터베이스의 인-메모리 복사와 같은 역할을 합니다. 따라서 DataSet 클래스를 통해 데이터베이스의 한 부분을 클라이언트로 보내 새 데이터로 업데이트한 다음 다시 서버로 보내 데이터베이스에 통합되도록 할 수 있습니다. Visual Basic .NET 및 ADO.NET을 사용하면 개발자는 신속히 생산성을 갖추게 되며 최소한의 코드화 작업으로 데이터 관리 응용 프로그램을 만들 수 있습니다. Data Adapter Configuration Wizard는 데이터베이스 내의 어떤 테이블에서나 데이터를 선택, 삽입, 업데이트 및 삭제하는데 필요한 모든 코드를 생성할 수 있습니다. 이 외에도 기존의 ADO와 달리 개별 SQL 명령을 사용자 지정할 수 있는 기능을 개발자에게 제공하며 저장 프로시저를 만들 수도 있습니다.

    기존 ADO는 XML 지원이 제한적이었습니다. 하지만 ADO.NET은 처음부터 가능한 거의 모든 방식으로 XML을 사용하도록 만들어졌습니다. 예를 들면, DataSet 클래스는 한 줄의 코드로 잘 구성된 XML 문서로 손쉽게 변환될 수 있으며 문서 구조를 설명하는 XML Schema도 포함됩니다. DataSet는 이 외에도 투명하게 한 파일로 연속된 후 데이터 또는 스키마 정보의 손실 없이 나중에 다시 DataSet로 복원 가능합니다. 그리고 DataSet는 웹 서비스 호출의 일부 형태로 인터넷을 통해 전송이 가능하므로 XML로 변환이 가능합니다.

    ADO.NET에는 SQL Server 7.0 이상과 같은 데이터베이스와 직접 대화하도록 특별히 만들어진 새 데이터 공급자가 포함되어 있습니다. 이 덕분에 Visual Basic .NET 코드가 다중 API 계층을 트래버스하지 않고도 실제 데이터베이스에 도달할 수 있으므로 성능이 향상됩니다. 따라서 데이터베이스 호출이 빨라지고 훨씬 더 효율적으로 이루어집니다. 이 외에도 OLEDB 지원 데이터베이스 용 데이터 공급자 및 Oracle과 같은 다른 데이터베이스에 직접 액세스를 제공하는 새 데이터 공급자도 있습니다.

    ADO.NET은 이전 버전의 데이터 액세스 모델을 기초로 만들어 졌습니다. 그리고 .NET Framework 및 그 Visual Studio .NET IDE에 완벽하게 통합되어 있으므로 개발자가 요구하는 파워와 생산성을 제공합니다.

    기존 투자 계승

    Visual Basic .NET으로 전환한다고 해서 Visual Basic 6.0 COM 구성 요소나 Visual Basic 언어에 대한 기존 투자를 포기하는 것은 아닙니다. Visual Basic .NET은 Type Library Importer라는 간단한 도구를 사용해서 COM 구성 요소를 마치Windows 및 웹 응용 프로그램의 .NET 어셈블리인 것처럼 사용할 수 있습니다. 따라서 시간과 예산이 허용하는 한 수 년간 개발해온 비즈니스 논리 구성 요소를 .NET 구성 요소로 다시 개발할 필요가 없습니다. 때가 되면 VB6 CodeAdvisor 및 Visual Basic .NET Upgrade Wizard와 같은 도구를 통해 개발자는 기존 Visual Basic 6.0 코드의 60~90%를 Visual Basic .NET으로 마이그레이션할 수 있을 것입니다.

    Visual Basic 6.0과 Visual Basic .NET 간의 상호 운용성에 보다 유연성을 주기 위해 .NET 어셈블리를 이용하여 보조 COM 구성 요소를 만드는 Type Library Exporter라는 도구를 이용할 수 있습니다. 따라서 Visual Basic .NET을 사용하는 개발자는 COM 기반 응용 프로그램을 자신 있게 확장할 수 있으므로 기존 투자는 그대로 유지하면서 새로운 개발이 가능합니다.

    마지막으로, Visual Basic 언어 부문의 투자도 그대로 보존됩니다. Visual Basic .NET은 Visual Basic 6.0의 구문 기능과 특색을 상당 부분 그대로 유지하면서도 진정한 현대식 프로그래밍 언어의 융통성과 우수성을 제공합니다.

    Visual Studio .NET 2003으로 생산성 향상

    Visual Studio .NET은 Visual Basic 개발자에게 이전에는 갖지 못한 강력한 기능을 제공하여 신속하게 생산성을 향상시킵니다. 이 프로젝트 유형에는 이제 콘솔 응용 프로그램, Windows GUI 응용 프로그램, 클래스 또는 컨트롤 라이브러리, 웹 응용 프로그램, Web Service 응용 프로그램, Windows Services, 그리고 심지어는 포켓 PC 및 스마트폰과 같은 모바일 장치에서 실행되는 응용 프로그램도 포함됩니다.

    Server Explorer 도구 창은 개발자가 메시지 대기열, 성능 카운터, SWL Server 데이터베이스, Windows Service, 이벤트 로그와 같은 실행 중인 컴퓨터 리소스를 신속히 확인할 수 있는 방법을 제공합니다. 이러한 서비스는 또 쉽고 빠르게 응용 프로그램에 통합됩니다. 단순히 항목을 Web Form 또는 Windows Form 디자인 표면으로 끌어다 놓기만 하면 프로그래밍 가능한 개체로 변하므로 엄청난 생산성을 제공합니다. 예를 들어, SQL Server 테이블을 디자인 표면으로 끌어다 놓으면 Visual Studio .NET IDE가 즉시 데이터베이스를 런타임에 연결하고 그 테이블에서 행을 선택, 추가, 업데이트 또는 삭제하는데 필요한 모든 코드를 추가합니다. 성능 카운터를 디자인 표면으로 끌어다 놓으면 언제든지 코드 단 한 줄로 카운터의 현재 값을 쿼리할 수 있습니다.

    Visual Studio .NET 디버거도 크게 향상되어 응용 프로그램의 현재 실행 상태에 대한 아주 자세한 스냅샷과 범위에 속하는 모든 변수 및 개체를 개발자에게 제공할 수 있습니다. Call Stack 창은 실행 응용 프로그램의 특정 위치에 구성된 모든 기능 호출 목록을 제공합니다. 그리고 Task List 창은 응용 프로그램을 만드는 작업을 구성 및 관리하는데 도움이 됩니다. 이 창을 사용하면 개발자는 코드를 편집 또는 컴파일하면서 자동으로 감지되는 문제점을 정렬, 필터링, 식별 및 찾아낼 수 있습니다. Command 창은 Visual Studio .NET 명령을 발행하고 표현식을 평가하며 구문을 실행하거나 변수 값을 인쇄 및 편집하는데 사용됩니다. 그리고 이 창은 IntelliSense를 완벽하게 지원합니다. Debug 창은 범위 내 변수 또는 개발자가 조사하고자 하는 변수와 같은 가장 적절한 정보만을 제공하도록 필터링하고 유연성 있게 사용자 정의할 수 있습니다. 결과적으로 개발자는 문제점을 신속 정확하게 찾아낼 수 있으므로 부적절한 데이터를 지나치게 로드하지 않고도 필요한 정보를 찾을 수 있습니다.

    Visual Studio .NET IDE 또한 구성 가능성 및 확장성이 높으므로 도구가 손쉽게 개발자가 선호하는 작업 방식을 따르도록 할 수 있습니다. 이 개발 환경은 글꼴 및 색상부터 도구 창 표시 유형, 배치, 동작에 이르기까지 완벽하게 사용자 정의 가능합니다. 그리고 고급 Visual Basic 기반 Macro 녹음기와 편집기를 사용하면 지루한 개발 작업을 간단하게 할 수 있습니다. 그리고 개발자는 IDE에 직접 플러그되는 자신만의 강력한 추가 도구를 만들 수 있습니다. Visual Studio .NET은 바로 이 기능만을 위한 프로젝트 기능을 제공하므로 프로세스가 더욱 쉬워집니다.

    마지막으로, 새 Visual Basic .NET 개발자가 가능한 한 빨리 생산성을 갖추기 위해 Visual Studio .NET에서는 세계적 수준의 IntelliSense, 완벽하게 통합된 상황에 맞는 도움말, 그리고 Microsoft Developer Network에서 이용할 수 있는 풍부한 지식을 제공합니다.

    결론

    Visual Basic .NET은 생산성 높고 배우기 쉬운 개발자 도구 중 단연 선두입니다. 사람이 읽을 수 있는 친숙한 구문, 드래그 앤 드롭 방식의 사용자 인터페이스 디자인, 기본이 되는 단순성의 유지 및 향상이 바탕이 되어 이 제품을 중심으로 세계에서 가장 강력한 개발자 커뮤니티가 운영되고 있습니다. 게다가 Visual Basic .NET에서는 성능 및 확장성이 이제 생산성 및 쉬운 사용법과 대등한 위치에 오르게 되었습니다. 본 자료에서 우리는 Nile 웹 응용 프로그램을 Visual Basic 6.0에서 Visual Basic .NET으로 마이그레이션할 경우 처리량이 어떻게 3배 이상 증가하는지에 대해 살펴 보았습니다. 결론적으로 Visual Basic .NET은 Visual Basic 6.0의 장점은 그대로 살리면서 .NET Framework의 성능을 통합한 것으로, 도저히 업그레이드하지 않을 수 없는 이유를 개발자에게 제공합니다.

    + Recent posts