180 likes | 265 Views
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. Delivery mode Programming Mainframe-based PCs Text-based
E N D
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 • 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 • “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 • 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) • 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) • 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? • 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 • 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 • 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) • 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 (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#) // 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#) // 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#) 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? • 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 • 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!