Benchmark Test Harness for .NET

Total Page:16

File Type:pdf, Size:1020Kb

Benchmark Test Harness for .NET APPENDIX Benchmark Test Harness for .NET WHEN MIGRATING TO A new platform like .NET, many questions regarding perfor­ manee arise. Presented with a ehoiee between multiple ways of aeeomplishing the same task, performanee ean often be the deciding faetor when figuring out whieh teehnique to use. Determining whieh teehnique is the quiekest may seem simple, but ean rapidly deteriorate into eomplexity. This appendix presents a performanee test harness that allows for eonsistent and robust exeeution of per­ formanee test eases; the results of benehmark test harness were used to eonduet the tests that are presented in this book. Chapter 2 presents a diseussion of teeh­ niques and praetiees that assist in developing an aeeurate benehmark, whereas the foeus of this appendix is a deseription of the implementation of the harness. Comparing Performance Analyzing the eomparative performanee of two or more software teehnologies involves two eritieal steps. The first step is deseribing a representative test ease for eaeh teehnology, and the seeond step is aeeurately timing the test eases. Deseribing a representative test ease is the domain of software engineering judg­ ment and experienee, but there are a number of guidelines that ean help: • Eaeh test ease should aeeomplish the same or similar end result. If the performanee of the stream-based XML parsing in the Framewerk Library is being eompared to the traditional DOM-based XML parsing, the XML test doeument and result proeessing for eaeh test should be as similar as possible. • The supporting infrastrueture for the test ease should be the same as it is in produetion eases. For example, eonsider a pieee of eode that needs to pull data from SQL Server and eaehe the data in eustom business objeets. The System.Data.DataReader type should be the quiekest option, but System. Data. DataSet has some added funetionality that may be useful if the performanee delta is small. When testing the relative performanee, it is important that the eonfiguration of SQL Server and the load that the 249 Appendix server is experiencing is the same as the production case. lt may turn out that running the stored procedure to collect that data and transporting it over the network takes 95 percent of the time, and the choice between DataReader and DataSet is insignificant in performance terms. • The test case should be profiled to ensure that supporting code is not taking up a significant amount of the time. If a test is aimed at determining the performance cost of a virtual function compared to a nonvirtual function, ensure that the code inside the functions is not overly expensive. • The test case should be conducted enough times to make the cost of setting up the test harness and calling the test method insignificant. A profiler can assist in making this determination. • The test case should not be so insignificant that the ßT compiler can discard it. Inspection of the x86 assembly code generated by the ßT compiler for a release build of an assembly will allow a determination of the inlining and discarding that has occurred. Once representative test cases have been chosen, conducting the tests seems like a simple step. The code that follows shows the simplest implementa­ tion possible: DateTime startTechniqueA = DateTime.Now; TestNamespace.TechniqueATest(); //run test DateTime endTechniqueA = DateTime.Now; DateTime startTechniqueB = DateTime.Now; TestNamespace.TechniqueBTest(); //run test DateTime endTechniqueB = DateTime.Now; TimeSpan timeTakenA = endTechniqueA - startTechniqueA; TimeSpan timeTakenB = endTechniqueB - startTechniqueB; 11 Console.Writeline( Test A: II + timeTakenA. ToString()); 11 Console.Writeline( Test B: II + timeTakenB. ToString()); There are a few problems with this code: • If the test case executes a method that has not been called previously, ßT compilation of the method will occur. This will distort the results in favor of the method without the ßT compiler hit. 250 Benchmark Test Harness for .NEI' • The ordering of the tests may distort the results in some cases. For example, if data is being retrieved from SQL Server, the second test can run quicker due to caching by SQL Server. • Same code is required to process the results of the tests into a form easily comprehensible. The code for result processing is not test specific, and should be factared out. • Same tests will require setup and teardown functions to execute either side of the test, and the time taken for these functions should not be included in the test results. Mixing setup code with the timing functionality code obscures the intent of a function, and increases the chance of error. • The results of some tests should be thrown out. Criteria for throwing a test result out are test specific, but will typically involve the occurrence of a significant event that takes processor time away from the executing test. • Same tests should be executed on a priority thread to minimize the interference from other threads executing on the same processor. The code to set up a secondary test thread should be factared out into a reusable test harness. • Same tests take a lang time to execute, and visual feedback of the test progress is desirable. • The DateTime dass is not an accurate timer of operations that complete in under a second, and a timer with higher accuracy is preferable. • It is possible for one test to run for a different number ofloops than other tests ifthe loop-termination literal is embedded in the test method. In the process oftesting, it is common to change the loop-termination literal a number of times until the tests run for a reasonable time period. Failing to have a formal method for using the same loop-termination literal in all tests can lead to incorrect results. • A future version of the CLR may include a progressively optimizing JIT compiler, which implies the tests should be run a number of times to simulate the execution of critical path code in a real program. This list highlights the need for a test harness that can alleviate these issues, which is presented in the following sections. 251 Appendix Implementing the Benchmark Test Harness A number of issues need to be considered in the design of a hamess for generat­ ing timing data on benchmark runs. Setting up and running test cases should not be overly onerous or difficult, and different categories of test runs need to be supported. Producing accurate results is the most important design goal, how­ ever, and failure to achieve this goalwill render the test hamess useless. Choosing the correct technologies to use is as important as bug-free hamess code, and this section covers the motivation for the current implementation of thehamess. Function Invocation The first step in the hamess design is deciding how the test case will be created and executed, where a test case is defined as a method that contains the code necessary to exercise a technology or technique in a representative manner. Creating test cases should be simple, and the overhead of calling these functions should be minimal so as not to distort the test results. The common language runtime (Cl..R) exposes a number of techniques for implementlog the function invocation section of the hamess. These include • Interfaces: Each test could be contained in a class that implements a test interface. The interface would expose a RunTest method, and the hamess could iterate over a number of objects, calling the RunTest method on each. • Reflection: Aseries of object references could be passed to the hamess, and a standard method, say Test, could be bound to and invoked on each object. • Delegates: A test method delegate could be defined, and methods that contain test cases could be added to the delegate invocation list. When using reflection, it is not possible to ensure that an object registering for performance testing exposes a Test method at compile time. Following the widely accepted programming principle that it is better to use compile-time enforcement over runtime error detection and the performance impact of late­ bound method invocation, the use of reflection was rejected. The use of interfaces would require a separate type for each test method, which could become cumbersome. In contrast, delegates support the chaining tagether of a number of methods in a single invocation list, and allow for the use of numerous methods for the same type, as shown in the following snippet. 252 Benchmark Test Harness for .NEI' Given these qualities, delegates where chosen as the function invocation mechanism. public delegate void DoSomething(); I/returns two delegate methods using the same return value public DoSemething ReturnDelegatelist(){ DoSemething ds = null; ds += new DoSomething(FirstDelegateMethod); ds += new DoSomething(SecondDelegateMethod); return ds; } //another method in the same type that returns a single delegate public DoSemething ReturnSingleDelegate(){ return new DoSomething(FirstDelegateMethod); } public void FirstDelegateMethod(){ return; } public void SecondDelegateMethod(){ return; } The cost of making the delegate call will be included in the overall timing for a test method call, and must be very small. The cost of maldng a function call is generallyproportional to the amount of indirection that the runtime must go through to locate the pointer to the underlying function. The level of indirection for "direct" calling technologies like static, instance, and virtual functions can be determined by the number of x86 MOV instructions needed to execute the call. An inspection of the x86 instructions that the ßT compiler produces to call a delegate indicates that only three MOV instructions are needed to locate the function pointer for the delegate method, which is less than the four MOV instructions required to call a virtual method through an interface. Having only three MOV instructions indicates very little indirection is required to call a delegate method. Function Ordering The order in which the test cases are called and the practices of only executing test functions for a single run were identified as problern areas earlier.
Recommended publications
  • Dot Net Programming CLASS: TYBBA(CA) V SEM (2013 PATTERN)
    DNYANSAGAR ARTS AND COMMERCE COLLEGE, BALEWADI, PUNE – 45 Subject: 503 : Dot Net Programming CLASS: TYBBA(CA) V SEM (2013 PATTERN) Unit 1 :Introduction to .Net Framework Introduction to .NET Framework .NET is a software framework which is designed and developed by Microsoft. The first version of the .Net framework was 1.0 which came in the year 2002. In easy words, it is a virtual machine for compiling and executing programs written in different languages like C#, VB.Net etc. It is used to develop Form-based applications, Web-based applications, and Web services. There is a variety of programming languages available on the .Net platform, VB.Net and C# being the most common ones. It is used to build applications for Windows, phone, web, etc. It provides a lot of functionalities and also supports industry standards. .NET Framework supports more than 60 programming languages in which 11 programming languages are designed and developed by Microsoft. The remaining Non-Microsoft Languages which are supported by .NET Framework but not designed and developed by Microsoft. Common Language Runtime(CLR): CLR is the basic and Virtual Machine component of the .NET Framework. It is the run-time environment in the .NET Framework that runs the codes and helps in making the development process easier by providing the various services such as remoting, thread management, type-safety, memory management, robustness, etc.. Basically, it is responsible for managing the execution of .NET programs regardless of any .NET programming language. It also helps in the management of code, as code that targets the runtime is known as the Managed Code and code doesn’t target to runtime is known as Unmanaged code.
    [Show full text]
  • Programming with Windows Forms
    A P P E N D I X A ■ ■ ■ Programming with Windows Forms Since the release of the .NET platform (circa 2001), the base class libraries have included a particular API named Windows Forms, represented primarily by the System.Windows.Forms.dll assembly. The Windows Forms toolkit provides the types necessary to build desktop graphical user interfaces (GUIs), create custom controls, manage resources (e.g., string tables and icons), and perform other desktop- centric programming tasks. In addition, a separate API named GDI+ (represented by the System.Drawing.dll assembly) provides additional types that allow programmers to generate 2D graphics, interact with networked printers, and manipulate image data. The Windows Forms (and GDI+) APIs remain alive and well within the .NET 4.0 platform, and they will exist within the base class library for quite some time (arguably forever). However, Microsoft has shipped a brand new GUI toolkit called Windows Presentation Foundation (WPF) since the release of .NET 3.0. As you saw in Chapters 27-31, WPF provides a massive amount of horsepower that you can use to build bleeding-edge user interfaces, and it has become the preferred desktop API for today’s .NET graphical user interfaces. The point of this appendix, however, is to provide a tour of the traditional Windows Forms API. One reason it is helpful to understand the original programming model: you can find many existing Windows Forms applications out there that will need to be maintained for some time to come. Also, many desktop GUIs simply might not require the horsepower offered by WPF.
    [Show full text]
  • Appendixes APPENDIX A
    PART 8 Appendixes APPENDIX A COM and .NET Interoperability The goal of this book was to provide you with a solid foundation in the C# language and the core services provided by the .NET platform. I suspect that when you contrast the object model provided by .NET to that of Microsoft’s previous component architecture (COM), you’ll no doubt be con- vinced that these are two entirely unique systems. Regardless of the fact that COM is now considered to be a legacy framework, you may have existing COM-based systems that you would like to inte- grate into your new .NET applications. Thankfully, the .NET platform provides various types, tools, and namespaces that make the process of COM and .NET interoperability quite straightforward. This appendix begins by examin- ing the process of .NET to COM interoperability and the related Runtime Callable Wrapper (RCW). The latter part of this appendix examines the opposite situation: a COM type communicating with a .NET type using a COM Callable Wrapper (CCW). ■Note A full examination of the .NET interoperability layer would require a book unto itself. If you require more details than presented in this appendix, check out my book COM and .NET Interoperability (Apress, 2002). The Scope of .NET Interoperability Recall that when you build assemblies using a .NET-aware compiler, you are creating managed code that can be hosted by the common language runtime (CLR). Managed code offers a number of ben- efits such as automatic memory management, a unified type system (the CTS), self-describing assemblies, and so forth. As you have also seen, .NET assemblies have a particular internal compo- sition.
    [Show full text]
  • Special Characters Numbers
    Index ■Special Characters AddServiceEndpoint( ) member, ServiceHost type, #define, preprocessor directive, 317–319 1032 #elif, preprocessor directive, 317–318 ADO.NET #else, preprocessor directive, 317–318 additional namespaces, 763–764 #endif, preprocessor directive, 317–318 vs. ADO classic, 759–760 #endregion, preprocessor directive, 317 application configuration files, 769–770 #if, preprocessor directive, 317–318 asynchronous data access, 792–793 #region, preprocessor directive, 317 autogenerated data components, 824–825 #undef, preprocessor directive, 317–319 autogenerating SQL commands, 816–817 % modulo operator, C#, 1097 autoincrementing, 797 & operator, pointer types, 312–313 binding DataTables to user interfaces, 804, 806 * operator, pointer types, 312–313 Command object, 781–782 ?? operator, 133 connected layer, 778 += operator, 610 connected vs. disconnected layer, 760 <%@Page%> directive attribute, ASP.NET, 846 connecting to database, Visual Studio 2005, 776 <%Import%> directive, ASP.NET, 846–847 connection objects, 779–780 => token, 1098 ConnectionStringBuilder object, 780–781 ? suffix, nullable types, 131 connectionStrings element, application configuration, 774–775 ■Numbers data access libraries, 1130 data adapter objects, 811–812 3D graphics graphical service, WPF, 1012 data providers, 760, 762 3D rendered animation, 970 data wizards, 822–825 100% code approach, 1048 DataColumn objects, 796, 798 ■ DataRelation objects, 817–820 A DataRow objects, 798–799, 801 A# programming language, 8 DataRow.RowState property, 799–800 Abort(
    [Show full text]
  • Introducing LINQ 2
    Please post comments or corrections to the Author Online forum at http://www.manning-sandbox.com/forum.jspa?forumID=302 MEAP Edition Manning Early Access Program Copyright 2007 Manning Publications For more information on this and other Manning titles go to www.manning.com Please post comments or corrections to the Author Online forum at http://www.manning-sandbox.com/forum.jspa?forumID=302 Contents Part I - Getting started 1. Introducing LINQ 2. C# and VB.NET language enhancements 3. LINQ building blocks - Part II - Querying objects in memory 4. Getting familiar with LINQ to Objects 5. Working with LINQ and DataSets 6. Beyond basic in-memory queries Part III - Manipulating XML 7. Introducing LINQ to XML 8. Querying and transforming XML 9. Common LINQ to XML scenarios Part IV - Mapping objects to relational databases 10. Getting started with LINQ to SQL 11. Retrieving objects efficiently 12. Advanced LINQ to SQL features Part V - LINQing it all together 13. Extending LINQ 14. LINQ in every layer Appendices Appendix A. The standard query operators Appendix B. Quick references for VB 8.0 and C# 2.0 features Features Appendix C. References Appendix D. Resources Please post comments or corrections to the Author Online forum at http://www.manning-sandbox.com/forum.jspa?forumID=302 1 Introducing LINQ Software is simple. It boils down to two things: code and data. Writing software is not so simple, and one of the major activities it involves is programming code to deal with data. To write code, we can choose from a variety of programming languages.
    [Show full text]
  • Reiter István
    Reiter István C# 2009, 0.91 verzió 2 Tartalomjegyzék 1. Bevezet ő…………………………………………………………………………….......8 1.1. A jegyzet jelölései…………………………………………………………………8 1.2. Jogi feltételek………………………………………………………………………8 2. Microsoft .NET Framework…………………………………………………………...9 2.1. A .NET platform…………………………………………………………………….9 2.1.1. MSIL/CIL……………………………………………………………………...9 2.1.2. Fordítás/futtatás…………………………………………………………….9 2.1.3. BCL. …………………………………………………………………………10 2.2. A C# programozási nyelv……………………………………………………….10 2.3. Alternatív megoldások…………………………………………………………10 2.3.1. SSCLI………………………………………………………………………10 2.3.2. Mono…………………………………………………………………………10 2.3.3. DotGNU……………………………………………………………………..10 3. Fejleszt ői környezetek………………………………………………………………..12 3.1. Microsoft Visual Studio…………………………………………………………12 3.2. SharpDevelop…………………………………………………………………….13 3.3. MonoDevelop……………………………………………………………………..14 4. “Hello C#!”……………………………………………………………………………..16 4.1. A C# szintaktikája………………………………………………………………..17 4.1.1. Kulcsszavak……………………………………………………………….17 4.1.2. Megjegyzések……………………………………………………………..18 4.2. Névterek…………………………………………………………………………...18 5. Változók………………………………………………………………………………...20 5.1. Típusok…………………………………………………………………………….20 5.2. Lokális változók………………………………………………………………….21 5.3. Referencia- és értéktípusok……………………………………………………21 5.4. Boxing és Unboxing…………………………………………………………….22 5.5. Konstansok……………………………………………………………………….23 5.6. A felsorolt típus…………………………………………………………………..23 5.7. Null típusok………………………………………………………………………..24 6. Operátorok……………………………………………………………………………..25 6.1.
    [Show full text]
  • Visual C# .NET Developer's Handbook
    Visual C# .NET Developer's Handbook John Paul Mueller Associate Publisher: Richard Mills Acquisitions and Developmental Editor: Denise Santoro Lincoln Editor: Colleen Wheeler Strand Production Editor: Kylie Johnston Technical Editor: Ross Russell Mullen Graphic Illustrator: Tony Jonick Electronic Publishing Specialist: Nila Nichols Proofreaders: Amey Garber, Dave Nash, Laurie O'Connell, Yariv Rabinovitch, Nancy Riddiough Indexer: Ron Strauss CD Coordinator: Dan Mummert CD Technician: Kevin Ly Cover Designer: Carol Gorska/Gorska Design Cover Photographer: Glen Allison/PhotoDisc Copyright © 2002 SYBEX Inc., 1151 Marina Village Parkway, Alameda, CA 94501. World rights reserved. The author created reusable code in this publication expressly for reuse by readers. Sybex grants readers limited permission to reuse the code found in this publication or its accompanying CD-ROM so long as the author is attributed in any application containing the reusable code and the code itself is never distributed, posted online by electronic transmission, sold, or commercially exploited as a stand-alone product. Aside from this specific exception concerning reusable code, no part of this publication may be stored in a retrieval system, transmitted, or reproduced in any way, including but not limited to photocopy, photograph, magnetic, or other record, without the prior agreement and written permission of the publisher. Library of Congress Card Number: 2002103166 ISBN: 0-7821-4047-5 SYBEX and the SYBEX logo are either registered trademarks or trademarks of SYBEX Inc. in the United States and/or other countries.Screen reproductions produced with FullShot 99. FullShot 99 © 1991-1999 Inbit Incorporated. All rights reserved.FullShot is a trademark of Inbit Incorporated. The CD interface was created using Macromedia Director, COPYRIGHT 1994, 1997-1999 Macromedia Inc.
    [Show full text]
  • Dot Net Interview Questions
    Dear Friends, Hi I am satish marwat, this documents contains all the important questions that usually asked during the .NET interview, I had downloaded all the material from the Internet from various websites and collected to form a single film, u will find few repeated questions also, all the material are from the various websites, so I had just bind it into a single file. So for any mistake I am not responsible, this is just for the view purpose. My view was only to collect a material to a single file. Please, if u find any mistake in this file, please contact me to my email address [email protected], so that I can able to correct it. ALL THE BEST Thanks Satish J Satish Marwat Dot Net Web Resources [email protected] 1 Page .NET FRAME WORK Introduction 1.1 What is .NET? .NET is a general-purpose software development platform, similar to Java. At its core is a virtual machine that turns intermediate language (IL) into machine code. High-level language compilers for C#, VB.NET and C++ are provided to turn source code into IL. C# is a new programming language, very similar to Java. An extensive class library is included, featuring all the functionality one might expect from a contempory development platform - windows GUI development (Windows Form s), database access (ADO.NET), web development (ASP.NET), web services, XML etc. 1.2 When was .NET announced? Bill Gates delivered a keynote at Forum 2000, held June 22, 2000, outlining the .NET 'vision'. The July 2000 PDC had a number of sessions on .NET technology, and delegates were given CDs containing a pre-release version of the .NET framework/SDK and Visual Studio.NET.
    [Show full text]
  • Visual C++.NET Developers Guide
    Visual C++ .NET Developer’s Guide John Paul Mueller McGraw-Hill/Osborne 2600 Tenth Street Berkeley, California 94710 U.S.A. To arrange bulk purchase discounts for sales promotions, premiums, or fund-raisers, please contact McGraw-Hill/Osborne at the above address. For information on translations or book distributors outside the U.S.A., please see the International Contact Information page immediately following the index of this book. Copyright © 2002 by The McGraw-Hill Companies. All rights reserved. Printed in the United States of America. Except as permitted under the Copyright Act of 1976, no part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the publisher, with the exception that the program listings may be entered, stored, and executed in a computer system, but they may not be reproduced for publication. 1234567890 CUS CUS 01987654321 Book p/n 0-07-213262-0 and CD p/n 0-07-213282-5 parts of ISBN 0-07-213281-7 Publisher Brandon A. Nordin Vice President & Associate Publisher Scott Rogers Acquisitions Editor Ann Sellers Project Editor Katie Conley Acquisitions Coordinator Tim Madrid Technical Editor Bill Burris Copy Editor Carl Wikander Proofreader Carol Burbo Indexer Irv Hershman Computer Designers Tara A. Davis, Lauren McCarthy Illustrators Michael Mueller, Greg Scott, Lyssa Wald Cover Illustration Eliot Bergman Cover Series Design Greg Scott This book was composed with Corel VENTURA™ Publisher. Information has been obtained by McGraw-Hill/Osborne from sources believed to be reliable. However, because of the possibility of human or mechanical error by our sources, McGraw-Hill/Osborne, or others, McGraw-Hill/Osborne does not guarantee the accuracy, adequacy, or completeness of any information and is not responsible for any errors or omissions or the results obtained from use of such information.
    [Show full text]
  • The Following Documentation Is an Electronically‐ Submitted Vendor
    The following documentation is an electronically‐ submitted vendor response to an advertised solicitation from the West Virginia Purchasing Bulletin within the Vendor Self‐Service portal at wvOASIS.gov. As part of the State of West Virginia’s procurement process, and to maintain the transparency of the bid‐opening process, this documentation submitted online is publicly posted by the West Virginia Purchasing Division at WVPurchasing.gov with any other vendor responses to this solicitation submitted to the Purchasing Division in hard copy format. Purchasing Division State of West Virginia 2019 Washington Street East Solicitation Response Post Office Box 50130 Charleston, WV 25305-0130 Proc Folder : 702868 Solicitation Description : Addendum No 2 Supplemental Staffing for Microsoft Applicatio Proc Type : Central Contract - Fixed Amt Date issued Solicitation Closes Solicitation Response Version 2020-06-10 SR 1300 ESR06072000000007293 1 13:30:00 VENDOR VS0000022041 Genius Business Solutions, Inc. Genius Business Solutions, Inc. Solicitation Number: CRFQ 1300 STO2000000002 Total Bid : $342,000.00 Response Date: 2020-06-07 Response Time: 13:15:59 Comments: Please see RFP response word document Section 4 for Details regarding volume discount FOR INFORMATION CONTACT THE BUYER Melissa Pettrey (304) 558-0094 [email protected] Signature on File FEIN # DATE All offers subject to all terms and conditions contained in this solicitation Page : 1 FORM ID : WV-PRC-SR-001 Line Comm Ln Desc Qty Unit Issue Unit Price Ln Total Or Contract Amount 1
    [Show full text]
  • Sample Chapter
    Writing High-Performance .Net Code Ben Watson Writing High-Performance .NET Code Version 2.1 PDF Edition ISBN{13: 978{0{990{58346{2 ISBN{10: 0{990{58346{5 Copyright © 2018 Ben Watson All Rights Reserved. These rights include reproduction, transmission, translation, and electronic storage. For the purposes of Fair Use, brief excerpts of the text are permit- ted for non-commercial purposes. Code samples may be reproduced on a computer for the purpose of compilation and execution and not for republication. This eBook is licensed for your personal and professional use only. You may not resell or give this book away to other people. If you wish to give this book to another per- son, please buy an additional copy for each recipient. If you are reading this book and did not purchase it, or it was not purchased for your use only, then please purchase your own copy. If you wish to purchase this book for your organization, please contact me for licensing information. Thank you for respecting the hard work of this author. Trademarks Any trademarked names, logos, or images used in this book are assumed valid trade- marks of their respective owners. There is no intention to infringe on the trademark. Disclaimer While care has been taking to ensure the information contained in this book is accu- rate, the author takes no responsibility for your use of the information presented. Contact For more information about this book, please visit http://www.writinghighperf.net or email [email protected]. Cover Design Cover design by Claire Watson, http://www.bluekittycreations.co.uk.
    [Show full text]
  • Preview ASP.NET Tutorial
    ASP.NET ASP.NET About the Tutorial ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites. It allows you to use a full-featured programming language such as C# or VB.NET to build web applications easily. This tutorial covers all the basic elements of ASP.NET that a beginner would require to get started. Audience This tutorial is prepared for the beginners to help them understand basic ASP.NET programming. After completing this tutorial, you will find yourself at a moderate level of expertise in ASP.NET programming from where you can take yourself to next levels. Prerequisites Before proceeding with this tutorial, you should have a basic understanding of .NET programming language. As we are going to develop web-based applications using ASP.NET web application framework, it will be good if you have an understanding of other web technologies such as HTML, CSS, AJAX, etc. Disclaimer & Copyright Copyright 2014 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial.
    [Show full text]