Christian Kochs
Jan Schaffner
Jan Schulz-Hofen
Gaurav Singh
HASSO-PLATTNER-INSTITUTE
for Software Systems EngineeringCRM .NET
Customer Relationship Management
System
A Project for Components Programming and Middleware, SS 2004
07/01/2004
Customer Management: Challenges
Manage distributed Customer Data
Serve multiple Users
Ensure Consistency
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 3
HASSO- PLATTNER - INSTITUTE
Structure of Presentation
Requirements and Scenario of Application
Architecture of System
Technologies used
Live Demonstration with Technology Workshop
Development Process and Experiences
Outlook: Conceivable Extensions
Use Case Diagram (UML 2.0)
CRM System
User Admin Manage Security Privileges Deploy Components * * Manage Customers * * * * Add Component «extends» Remove Component «extends»Add New Customer
Remove Existing Customer Modify Customer Information Read Customer Information «extends» «extends» «extends» «extends» Enter Name Edit Contact Information «extends» Change Picture «extends» Evaluate «extends» Import Outlook Contact Information «extends» Edit Memo «extends» «extends» <<includes>>
Import Pics from eRasm-Gallery «extends»
Authenticate <<includes>> <<includes>>
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 5
HASSO- PLATTNER - INSTITUTE
Architecture of System
Multi-User-System
Follows Model-View-Controller (MVC) Pattern
Own Implementation of Naming Service (Registry)
Distributed Architecture (.NET Remoting)
Flexible Creation of Components (offered Functionalities)
Dynamic management of heterogeneous and distributed components
Component Dynamics on both Client and Server
GUI is deployed together with specific component, not in the client
Each Component is responsible for its individual Data Storage
Compositional Structure (FMC)
View Image Model Evaluation Model Contact Model Controller Registry R R R RClients
Server
CRM Base
Registered Components R View R Memo Model R Customers R Dynamic Management of many heterogeneous and distributed Components which carry their own GUI and DataContact Data R R R R R Evaluation Data Memo Data Image Data
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 7
HASSO- PLATTNER - INSTITUTE
Class Diagram (UML 2.0)
+ReadProfile() +ModifyProfile() +AddProfile() +RemoveProfile() +Authenticate() +GetTitlesForGui() +GetGuiExtensionsAsCoffList() : SortedList -UpdateModelList() -ModelList : SortedList -AuthenticatedSessions : Hashtable Controller +GetRegisteredModels() +RegisterModel() +UnRegisterModel() +ModelsTable : DataTable Crm::Registry +UpdateGuiExtensions() +UpdateTitleList() -ReadCustomer() -ModifyCustomer() -RemoveCustomer() -AddCustomer() -GuiExtensions : SortedList -EntryList : SortedList -Ticket : int Crm::View * 1 +AddAspect() +RemoveAspect() +ModifyAspect() +ReadAspect() +GetGuiExtensionAsCoff() #ClassBytes : byte[] #GUI_DLL_FILENAME : string #GUI_DLL_SIZE : int AbstractModel +AddAspect() +RemoveAspect() +ModifyAspect() +ReadAspect() ContactModel +ReadAspect() +AddAspect() +RemoveAspect() +ModifyAspect() MemoModel +FetchBody() +PutBody() +GetContentType() +Clear() MemoGuiExtension +FetchBody() +PutBody() +GetContentType() +Clear() «interface» GuiExtensionInterface +FetchBody() +PutBody() +GetContentType() +Clear() ContactGuiExtension 1 1
CRM Base
Clients
Server
Featured Technologies
Distribution and Communication via .NET Remoting:
Server Activated Object (SAO)
Singleton Pattern
Binary Formatter (Performance)
Dynamic Assembly Loading (of Components’ UIs)
Data Storage: MS SQL Server, ADO .NET, J2EE-Entity-Beans
Components implemented in C# and J#
COM-Interop: Microsoft Office Integration
Webservices via SOAP / XML
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 9
HASSO- PLATTNER - INSTITUTE
System Startup Sequence (UML 2.0)
Admin :Controller :Registry :ContactModel Additional Model :WinAppView User start start start start start login dialog provide login/ password register model synchronize customers’ data synchronize customers’ data get UI component get UI component confirm authentification session id request UI components deliver UI component request customer list deliver UI component CRM Base register modelSystem Startup Sequence (UML 2.0)
Admin :Controller :Registry :ContactModel Additional Model :WinAppView User start start start start start login dialog provide login/ password register model synchronize customers’ data synchronize customers’ data get UI component get UI component confirm authentification session id request UI components deliver UI component request customer list deliver UI component CRM Base register modelHPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 11
HASSO- PLATTNER - INSTITUTE
Customer Profile Data Structure: E/R-Diagram (FMC)
CRM Base manages Customer Base
Data (Profile Set) and object specific
Security Privileges
Each Profile consists of one or more
Customer Aspects
Aspects are managed individually by
CRM .NET Components
ContentType is Linking Element
between Model, View and Controller
TextAspect Eval.Aspect ContactAspect ImageAspect Aspect - ContentType - Body Profile - Name - Security Privileges 1 n
Modular Architecture of CRM .NET requires modular Design of
Data Structure
System Startup Sequence (UML 2.0)
Admin :Controller :Registry :ContactModel Additional Model :WinAppView User start start start start start login dialog provide login/ password register model synchronize customers’ data synchronize customers’ data get UI component get UI component confirm authentification session id request UI components deliver UI component request customer list deliver UI component CRM Base register modelHPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 13
HASSO- PLATTNER - INSTITUTE
Dynamic Assembly-Loading in .NET
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 13
HASSO- PLATTNER - INSTITUTE
Framework Comparison
Extending the GUI dynamically in Java
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 15
HASSO- PLATTNER - INSTITUTE
Framework Comparison (contd.)
Extending the GUI dynamically in Java
Using the defined GuiExtensionLoader to load a Class
Multi-User Facility
Global Data Synchronization
Let‘s open up a second
View
!
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 17
HASSO- PLATTNER - INSTITUTE
COM Interop für Einbindung von MS Outlook (FMC)
.NET-Applikation
R R RRCW
COM-ObjektInterop Marshaler
(CLR)
new() .NET-AufrufInterop
Assembly
COM-AufrufManaged Code
Unmanaged Code
COM Interop
Create an Instance of the referenced COM-Component
Use of the Type Library Importer (tlbimp.exe) to create a .NET Interop
Assembly containing the Metadata of the COM Type Library
tlbimp <COM-Component> <.NET Interop Assembly> / <Options>
At Runtime, the .NET CLR will create an RCW for each COM Object
RCW serves as a Bridge to the Unmanaged Code
Translating calls – consumes COM Interfaces
Marshalling data
Managing lifetime of the wrapped object
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 19
HASSO- PLATTNER - INSTITUTE
Security Concept
User- and Group-based Authentication
Item-based Authorisation
Main Cycle Provide authentication
info and request connection
Read reference auth. info from storage
Auth Info correct
else
Generate and provide unique session ticket
Store session ticket in RAM
Request operation (provide ticket and involved customer CRM .NET Client Application
(View)
CRM .NET Base (Controller)
Store ticket and corresponding user identity in list in RAM
Authentication and Authorization (FMC Petri-Net)
Dynamics of Controller’s Session Management
Authentication and Authorization (FMC Petri-Net)
Dynamics of Controller’s Session Management
+ReadProfile(in ID : int, in Ticket : AuthTicket) : Profile
+ModifyProfile(in ID : int, in ProfileToModify : Profile, in Ticket : AuthTicket) : void +AddProfile(in ProfileToAdd : Profile, in TitleToAdd : string, in Ticket : AuthTicket) : void +RemoveProfile(in ID : int, in Ticket : AuthTicket)
+Authenticate(in username : string, in password : string) : AuthTicket +GetFilteredCustomerList(in Ticket : AuthTicket) : CustomerList
«interface» ControllerInterface
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 21
HASSO- PLATTNER - INSTITUTE
Webservices: Talking to the J2EE-eRasm-Gallery
Client Proxy is required to access
Webservice
Proxy Class is generated from
WSDL-File by a tool
Proxy is instantiated in Client
Development Process and Experiences
Process Model applied: Extreme Programming (XP)
Testing with NUnit
Experiences with Tools
Microsoft Visual Studio 2003 .NET
Subversion and Tortoise Client
Microsoft (R) Web Services Description Language Utility
Type Library Importer (tlbimp.exe) for COM-Interop
HPI, SS 2004: C.Kochs, J.Schaffner, J.Schulz-Hofen, G.Singh 23
HASSO- PLATTNER - INSTITUTE
Outlook: Conceivable Extensions
Functionality
Stronger diversification within component hierarchy
Additional administration frontend
Security
Extend our item-based authorization: Access Control Lists
Possible to implement encryption-algorithm in additional remoting-layer
Performance
Improve caching algorithms
Increase efficiency of in-memory data structures
Sources
Gosling, J., Yellin, F.: The Java Application Programming
Interface, Vol. 1, Addison-Wesley, 1996
MSDN Library: msdn.microsoft.com
The Code Project:
www.codeproject.com
Thai: .NET Framework Essentials, O’Reilly, 2001
The C# Corner:
www.c-sharpcorner.com