ISECON 2006 Lim

Uploaded from authorPOINTLite
Views:
 
Category: Entertainment
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

On Integrating Service-Oriented Paradigm Into Introductory IS Courses : 

On Integrating Service-Oriented Paradigm Into Introductory IS Courses Billy B. L. Lim Chu Jong School of Information Technology Illinois State University Normal, IL 61790-5150, USA

Evolution of Approaches: 

Evolution of Approaches Delivery mode Programming Mainframe-based PCs Text-based Graphical user interfaces (GUIs) Web Java Applet, JavaScript Analysis and Design Structured OO Next wave SOA (service-oriented architecture) / WS (Web services)? Procedural Object-Oriented

Service, Service Paradigm, and SOA: 

Service, Service Paradigm, and SOA Service “Services are self-describing, platform-agnostic computational elements that support rapid low-cost composition of distributed applications.” (Papazoglou, 2003) “[A service] is an application function packaged as a reusable component for use in a business process. It either provides information or facilitates a change to business data from one valid and consistent state to another.” (Bennett, 2002) Service-oriented paradigm / SOA utilizes services as fundamental building blocks for developing applications

Web services: The 4 W’s: 

Web services: The 4 W’s What “A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.” [W3C] Web services Components WSDL (Web Service Description Language) SOAP (Simple Object Access Protocol) UDDI (Universal Description, Discovery, and Integration)

Web services: The 4 W’s (cont’d): 

Web services: The 4 W’s (cont’d) Why 4 papers at ISECON 2006 “Creating Web Services for Legacy COBOL” “Web Services: Introduction and Travel Project Tutorials Using Visual Studio and ASP.NET” “Service-Oriented Architecture: Concepts and Implementation” “Integrating a Service-Oriented Paradigm into Introductory IS Courses” This seems to be one of the most promising advances in software design & development in recent years Interoperable, Easy to use, Reusable, Ubiquitous, Firewall-friendly, Platform/language independent, etc.

Web services: The 4 W’s (cont’d): 

Web services: The 4 W’s (cont’d) Who Major solution providers Microsoft, IBM, Sun, Oracle, HP, BEA, etc. Consumers/Producers State Farm, Caterpillar, Amazon, Google, Nordstrom, General Motors, Nasdaq, etc. List of public Web Services http://www.xmethods.net/ Who should pay attention to this? All of us! When 2006 to 2008 (fully dynamic search and use) [IDC] Casual / ad-hoc use of services New business models possible Commoditization of software Pervasive use in nontraditional devices

Service Paradigm in Introductory IS Courses: Why?: 

Service Paradigm in Introductory IS Courses: Why? Why not! Prepares students for upper division courses => prepares students for the IT industry Allows for “concrete” showcase of concepts Makes the courses fun!

Integration Scenarios: 

Integration Scenarios Method Invocation Sequential, Iterative, and Decision Structures Sorting and/or Searching Miscellaneous Data structures Use of Different OS File vs. DBMS System Concepts EDI / System Integration

Sequential, Iterative, and Decision Structures: 

Sequential, Iterative, and Decision Structures An example Traditional approach Same old stuff Web services approach A plausible scenario here is to discuss a problem where one wishes to find out the coldest temperature in an area by zip codes at a particular moment in time. Further, the coldest area needs to be plotted on a map.

Sequential, Iterative, and Decision Structures (cont’d): 

Sequential, Iterative, and Decision Structures (cont’d) Web services available (for the task) http://www.xmethods.net/sd/2001/TemperatureService.wsdl Returns current temperature for a given U.S. zipcode http://teachatechie.com/GJTTWebServices/ZipCode.asmx GetNearbyZipCodes Returns a DataSet containing maximum of 250 zip codes and radius mileage within a given radius of a zip code http://staging.mappoint.net/standard-30/mappoint.wsdl Finding Addresses, Finding Nearby Places, Routing, Map Rendering, etc.

WS-based Solution: 

WS-based Solution

WS-based Solution: 

WS-based Solution

WS-based Solution (C#): 

WS-based Solution (C#) // Get the two input values string homeZip = textBox1.Text; string radius = textBox2.Text; ZipCode zipService = new ZipCode(); // get all the nearBy zips DataSet ds = zipService.GetNearbyZipCodes(homeZip,Convert.ToDecimal(radius)); string[] zipArr = processZip(ds); // get the coldest one and display string coldestZip = findColdestZip(zipArr); textBox3.Text = coldestZip; // plot the map with the coldest zip getMap(coldestZip); 1st Web service

WS-based Solution (C#): 

WS-based Solution (C#) // Process the zipcodes (in XML format) and return them as an array of strings string[] processZip (DataSet ds) { string xmlText = ds.GetXml(); XmlDocument doc = new XmlDocument( ); doc.LoadXml( xmlText); XmlNodeList zip = doc.GetElementsByTagName( "ZIP_CODE" ); XmlNodeList distance = doc.GetElementsByTagName( "RADIUS_MILES" ); string[] zipArr = new string[zip.Count]; for ( int i = 0; i < zip.Count; ++i ) { Console.WriteLine( "{0}, {1}", zip[i].InnerText, distance[i].InnerText); zipArr[i] = zip[i].InnerText; } return zipArr; }

WS-based Solution (C#): 

WS-based Solution (C#) // Iterate over all the zipcodes and find the temperature each time through. // Record the coldest one along the way. string findColdestZip(string [] zipArr) { TemperatureService tempService = new TemperatureService(); // Get the first zipcode string currentZip = zipArr[0]; float coldestTemp = tempService.getTemp(currentZip); int coldestZip = 0; // Go thru all the other zipcodes and find the coldest temperature for (int i = 1; i < zipArr.Length; i++) { currentZip = zipArr[i]; float temp = tempService.getTemp(currentZip); if (temp < coldestTemp) { coldestTemp = temp; coldestZip = i; } } return zipArr[coldestZip]; } 2nd Web service

WS-based Solution (C#): 

WS-based Solution (C#) void getMap(string coldestZip) { string myUserId = “12345"; string mySecurePassword = “secret"; RenderServiceSoap renderService = new RenderServiceSoap(); renderService.Credentials = new System.Net.NetworkCredential(myUserId, mySecurePassword); FindServiceSoap findService = new FindServiceSoap(); findService.Credentials = new System.Net.NetworkCredential(myUserId, mySecurePassword); FindSpecification findSpec = new FindSpecification(); findSpec.DataSourceName = "MapPoint.NA"; findSpec.InputPlace = coldestZip; FindResults foundResults = findService.Find(findSpec); ViewByHeightWidth[] myview = new ViewByHeightWidth[1]; myview[0] = foundResults.Results[0].FoundLocation.BestMapView.ByHeightWidth; MapSpecification mapSpec = new MapSpecification(); mapSpec.DataSourceName = "MapPoint.NA"; mapSpec.Views = myview; mapSpec.Options = new MapOptions(); mapSpec.Options.Format = new ImageFormat(); mapSpec.Options.Format.Height = this.pictureBox1.Size.Height; mapSpec.Options.Format.Width = this.pictureBox1.Size.Width; MapImage[] mapImages = renderService.GetMap(mapSpec); this.pictureBox1.Image = Bitmap.FromStream(new System.IO.MemoryStream(mapImages[0].MimeData.Bits)); } more Web services

What to Put in / Take Out?: 

What to Put in / Take Out? This will always be institution-dependent (and controversial!) For me: Put In: JUnit Testing, SOA/Web services Take Out: Some GUI, some Ethics (let me explain ) Perhaps in the near future, it would be easier to manage this In terms of approaches and topics (e.g., how OOP replaces structured programming)

Concluding Remarks: 

Concluding Remarks Summary service integration makes sense and doable! But a lot of work lie ahead (i.e., course materials, textbook, etc.) Future Work Google Maps More in-depth integration at my own School Advanced Web Development (SOA + Mobile Computing recently approved) NSF grant application Stay tuned!