ASP.NET Leave Request Management
Stephan Müller, Christian Tinnefeld
Trends and Concepts in the Software Industry II Exercise March 7th 2007
Motivation
2
■ 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, 2007
Architecture
3
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, 2007
Creating a new Leave Request
4
■ Input fields □ Type / Reason □ Start and end dates □ Start and end times □ Notes
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, 2007
Creating a new Leave Request
5
Reply.Text = facade.CreateLeaveRequest("1", empId, "3", Reason.SelectedValue, "PT0S", fromDate, toDate, Notes.Text);
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, 2007
Live Demonstration
6
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, 2007
Using Web Services in .NET
7
■ 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, 2007
Reflection Error (1/2)
8
• 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="http://sap.com/xi/EA-HR/SE/Global")]
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, 2007
Reflection Error (2/2)
9
• 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, 2007
dotNetWebServiceReviser
10
• 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, 2007
Deployment
11
■ 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, 2007
Conclusion
12
■ 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, 2007
13
Questions?!
ASP.NET Stephan Müller and Christian Tinnefeld | March 7, 2007