ASP.NET Leave Request Management Stephan Müller, Christian Tinnefeld Trends and Concepts in the Software Industry II - Exercise March 7th 2007
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Motivation ■ What □ Create, edit and cancel leave requests □ Approve and reject leave requests ■ How □ Back-end: SAP Web Services □ Front-end: Microsoft ASP.Net Web application ■ Why □ Lower burden for SAP service utilization □ Proof Interoperability □ Reusability of services
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Architecture
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Creating a new Leave Request ■ Input fields □ Type / Reason □ Start and end dates □ Start and end times □ Notes
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Creating a new Leave Request Reply.Text = facade.CreateLeaveRequest("1", empId, "3", Reason.SelectedValue, "PT0S", fromDate, toDate, Notes.Text);
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Live Demonstration
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Using Web Services in.NET ■ The Good: □ Including web services as web references □ Automatic proxy class generation □ Automatic generation of helper classes □ Seamless integration of remote methods ■ The Bad: □ No parameterization of proxy generation □ Individual changes of proxy classes will be discarded ■ The Ugly: □ Proxy classes are completely hidden in ASP.NET □ Absolutely no influence on web service usage methodology
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Reflection Error (1/2) Occurs if… ■ Using a non Microsoft Application Server (e.g. IBM Websphere) ■ Parameters containing arrays or vectors ■ WSDL file in Document-Style (not verified) [return: System.Xml.Serialization.XmlElementAttribute ("EmployeeTimeAccount",Form=System.Xml.Schema.XmlSchemaForm.Unqual ified, Namespace="
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Reflection Error (2/2) Solution Approaches ■ IBM: “Avoid using Vector parameters in WebSphere Application Server Web service methods to interoperate with.NET client as well as any Java Collection type.“ ■ RPC was not available ■ Usage of open source generation tools (Mono Rotor) Our Solution ■ Separate proxy generation from Visual Studio ■ Revising the namespace declaration of.NET proxy class ■ Compile proxy classes as library for referencing (optional)
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, dotNetWebServiceReviser Reading WSDL file Identify XML Namespace Generate Proxy Class Revise Namespace Declaration Build Dynamic Link Library
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Deployment ■ MS Visual Studio generates MSI Installer File ■ IIS v.6.0 as deployment server ■ Wizard-guided installation
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Conclusion ■ Unexpected SOA interoperability issues ■ Much effort needed for building workaround tool ■ Weak standards ■ BUT: In the end everything works great
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, Questions?!