Ieg3080 Tutorial 11 Prepared By Ryan Outline  Enterprise

  • Uploaded by: lamkakaka
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Ieg3080 Tutorial 11 Prepared By Ryan Outline  Enterprise as PDF for free.

More details

  • Words: 926
  • Pages: 21
IEG3080 Tutorial 11 Prepared by Ryan

Outline  Enterprise  

Application Architecture

Layering Structure Domain Logic

 C#

Attribute

 Aspect

Oriented Programming (AOP)

Enterprise Application Architecture  Complex

systems always break down into

layers  

e.g. Networking – OSI 7 layers Model Pros 





Working on a single layer without knowing much about other layers Minimizing dependencies between layers

Con 

Transforming from layers harming performance

Enterprise Application Architecture  Enterprise 

Presentation Layer  



Display of information e.g. GUI windows, webpage Handling user commands

Domain Logic Layer 



Application Architecture – 3-layer

Business logic (Core)

Data Source Layer 

Communication with database, messaging systems

Enterprise Application Architecture  Domain 

Logic Patterns

Domain Model 

An object model of the domain that incorporates both behavior and data 

 

Solving the problem in object-oriented way

Pro – Handling complex logic in a well-organized way Con – “Impedance mismatch” between OO model and relational database

Enterprise Application Architecture  O/R 





Mapping Problems – Identity Problem

OO – Different objects referenced by different pointers Database – Different rows identified by primary key Solutions 

Identity Field Team ID

Key Identity Field

Team Name

public class Team { int TeamID; string TeamName; }

Enterprise Application Architecture  O/R 

Mapping Problems – Identity Problem

Solutions (Cont’d) 

Foreign Key Mapping Team

Player

1

Team ID

Player ID

*

Team Name

Team ID

Team Name

Player ID

Team ID

Player Name

Player Name

Foreign Key Mapping

Enterprise Application Architecture  O/R

Mapping Problems – Inheritance Student Name

How to do mapping?

School

Secondary Student

University Student

Class

Department

CUHK Student College

Enterprise Application Architecture  O/R 

Mapping Problems – Inheritance

Single Table Inheritance Name





School

Class

Department

College

Wasting space – many null columns

Concrete Table Inheritance



Name

School

Class

Name

School

Department

Name

School

Department

College

Changing the superclass  altering all the subclasses’ tables

Enterprise Application Architecture  O/R 

Mapping Problems – Inheritance

Class Table Inheritance Name

School

Class Department College



Requiring multiple joins to rebuild an object

Enterprise Application Architecture  Solutions 

OO databases 





Not common (relational databases are widely adopted) Tight coupling with the domain model

Automated O/R mapping tools  

Not prefect (may solve 80% of the problems) Expensive

Enterprise Application Architecture  Other 

Transaction Scripts 

Organizes business logic by procedures where each procedure handles a single request from the presentation 



Domain Logic Patterns

Server page (php, jsp), CGI scripts

Table Module 

A single instance that handles the business logic for all rows in a database table or view 

Commonly use in .NET development platform

C# Attribute  C#  

Attribute

Embedding information in C# code Placed in square brackets [ ], above an Attribute Target (e.g. class, field or method) [serializable] public class Test { … }

 Reflection  

Querying information at run-time Dynamically invoking methods

C# Attribute  Intrinsic 



Attribute

Built-in attributes in .NET Common Library Runtime (CLR) Examples 

In your assignment 1 

 

[assembly: AssemblyVersion(“1.0.0.0”)]

[serializable] [STAThread]

C# Attribute  Custom

Attribute

Create your custom attribute

Use your custom attribute

// Set what kinds of elements can use this custom attribute [AttributeUsage(AttributeTargets.All)] public class MyAttribute : Attribute { // Define your own attribute string myName;

[MyAttribute("MyClass")] public class Test { [MyAttribute("MyMethod")] public void Print { Console.WriteLine("Test Program"); } }

public MyAttribute(string name) { myName = name; } public string Name { get { return myName; } } }

C# Attribute  Reflection

– Querying information

public class MyProgram { public static void Main() { Type type = Type.GetType("Test"); foreach (Attribute attr in type.GetCustomAttributes(false)) { // Retrieve attributes for the class MyAttribute myattr = attr as MyAttribute; if (myattr != null) Console.WriteLine(attr.Name); } foreach(MethodInfo method in type.GetMethods()) { foreach (Attribute attr in method.GetCustomAttributes(false)) { // Retrieve attributes for the method MyAttribute myattr = attr as MyAttribute; if (myattr != null) Console.WriteLine(“Method: {0} with Attribute: {1}”, method, attr.Name); } } } }

Output MyClass Method: Void Print() with Attribute: MyMethod

C# Attribute  Reflection

– Invoking methods

public class MyProgram2 { public static void Main() { Type type = Type.GetType("Test"); Object o = Activator.CreateInstance(type); // Create a “type” object MethodInfo mi = type.GetMethod("Print"); mi.Invoke(o, null); // Invoke method - “mi” } }

Output Test Program

Aspect Oriented Programming  OOP  



Breaking down a complex system into modules Encapsulating responsibilities into different objects Problems 

Some tasks cut across multiple modules (crosscutting concern)  



Logging Authentication

Solution: Aspect Oriented Programming (AOP)

Aspect Oriented Programming  AOP

in C#

Non-AOP Implementation

AOP Implementation

public class Test { public void TestMethod() { Log log = new Log(); log.Print("Enter"); // Log when entering this method Console.WriteLine("Test Method"); log.Print("Leave"); // Log with leaving this method } }

[AttributeUsage(AttributeTargets.Class)] public class LogAttribute : ContextAttribute { // Code Here } public class LogProperty : IContextProperty, IContributeObjectSink { // Code Here } public class LogAspect : IMessageSink { // Code Here } [Log] public class Test : ContextBoundObject { public void TestMethod() { Console.WriteLine("Test Method"); } }

Aspect Oriented Programming  How  

does it work in C#

“ContextAttribute” and “ContextBoundObject” Intercepting the calls(Interception) Client

YourObject Without Interception Intercepted by .NET

Client

Transparent Proxy

Message Sink

With Interception

YourObject

References  Enterprise 

M. Fowler, “Patterns of Enterprise Application Architecture”, Addison Wesley

 C# 

Attribute

http://www.oreilly.com/catalog/progcsharp/chapter/ch1

 Aspect  

Application Architecture

Oriented Programming (AOP)

http://www.codeproject.com/gen/design/aop.asp http://msdn.microsoft.com/msdnmag/issues/02/03/AOP

Related Documents

Prepared By:
June 2020 18
Written By Ryan Tong
May 2020 13
This Prepared By:
June 2020 7
This Prepared By:
June 2020 12

More Documents from ""