140 likes | 251 Views
CS603 Microsoft .NET. April 8, 2002. What is .NET?. Language for distributed computation C#, VB.NET, JScript Protocols SOAP, HTTP Run-time environment Common Language Runtime (CLR) ActiveDirectory Web Servers (ASP.NET). DCOM IDL Name, Monikers Registry / ActiveDirectory
E N D
CS603Microsoft .NET April 8, 2002
What is .NET? • Language for distributed computation • C#, VB.NET, JScript • Protocols • SOAP, HTTP • Run-time environment • Common Language Runtime (CLR) • ActiveDirectory • Web Servers (ASP.NET)
DCOM IDL Name, Monikers Registry / ActiveDirectory C++, Visual Basic DCE RPC DCOM Network protocol (based on DCE standards) .NET Web Services Description Language (WSDL) DISCO (URI grammar) Universal Description Discovery and Integration (UDDI) C#, VB.NET SOAP HTTP (presumed ubiquitous), SMTP (!?) COM/DCOM .NET
How .NET works • Query UDDI directory to get service location • Query service to get WSDL (interface specification) • Build call (XML) based on WSDL spec. • Make call using SOAP • Parse XML results based on WSDL spec.
Programming framework: ASP.NET • Integrated environment • Web server: application deployment • Compiler: Just-in-time compilation • Development tools • Implements Common Language Runtime • Base class library • Looks like a web server • “Programs” stored/executed anywhere in hierarchy
Building .NET services • ASP.NET • Manages compilation, run-time system, registration, etc. • Hello.asmx <%@ WebService Language="C#" Class=“Hello" %> using System; using System.Web.Services; public class Hello : WebService { [WebMethod] public String SayHello(String from) { Return "Hello, “ + from; } } • Place in desired location of ASP.NET directory structure • Gives URL to execute
Alternative: Forms-based Development • File test.aspx <%@ Page Language="C#"%> <html> <body> <form action="intro2.aspx" method="post"> <p> Name: <input id="Name" type=text> Category: <select id="Category" size=1><option>psychology</option><option>business</option> </select> </p> <input type=submit value="Lookup"> <p> <% for (int i=0; i <8; i++) { %> <font size="<%=i%>"> Welcome to ASP.NET </font> <br> <% }%> </p> </form> </body> </html>
Configuration / Settings • Configuration parameters: • Security • Language • Compilation options • Session vs. sessionless • Caching • Etc. • Written as XML in file web.config • Applies recursively to programs in directory containing web.config
Type System • Primitive types • Enum, Arrays, Structs • Classes (public fields/properties) • DataSet • Tables • Schema • XmlNode (XML fragment)
DataSets <%@ WebService Language="C#" Class="DataService" %> using System; using System.Data; using System.Data.SqlClient; using System.Web.Services; public class DataService { [WebMethod] public DataSet GetTitleAuthors() { SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes"); SqlDataAdapter myCommand1 = new SqlDataAdapter ("select * from Authors", myConnection); SqlDataAdapter myCommand2 = new SqlDataAdapter("select * from Titles", myConnection); DataSet ds = new DataSet(); myCommand1.Fill(ds, "Authors"); myCommand2.Fill(ds, "Titles"); return ds; } }
Sessions • Session: language-level access to cookies [ WebMethod(EnableSession=true) ] public String UpdateHitCounter() { return “Your access number " + ++Session["HitCounter"]; } • Application: Stored state of server [ WebMethod ] public String UpdateHitCounter() { return “Total access number " + ++Application["HitCounter"]; }
Security • Authentication • Windows • Passport • Forms-based authentication (cookie-based, login page) • Access Control • Access Control List on file • Check against URL • Configured using application configuration file: <configuration> <system.web> <authentication mode="Forms"/> </system.web> </configuration> • Can run either as self or impersonate caller
Tools • “Visual” language environments: • VB.NET • C# • Tracing • Page-level: Debug statements written to special section of output web page • Application-level: http://.../HelloWorld/trace.axd • Debugging: Enable in configuration • <compilation debug=“true” /> • Breakpoint/stepping debugger run when service called
Announcements • Monday, April 8, 3:30, CS 101 • David Holmes • Threads, concurrency and synchronization in Java • Monday, April 15, 3:30, CS 101 • Philip McKinley • RAPIDware: Framework for adaptability in the face of error in distributed systems