Posts

Showing posts from July, 2011

IIS & ASP.NET Concepts

Image
Concepts and interaction between IIS and ASP.NET components can be confusing at times. Relationships amongst IIS application, virtual directory, application pool, application domain are confusing at best. Having researched a bit, I attempted to model the various concepts and their inter-relationships using the following UML class diagram. Concepts in Pink applies strictly to ASP.NET domain. Concepts in Blue are applicable to IIS domain. A point to note is that a VirtualDirectory (VD) can contain other VDs. If a composed/ sub VD is not configured as an Application, the VD is treated as a sub-directory of the composing/ parent Application. As such, all the resources may be shared (e.g. application, session information). If the composed/ sub VD is configured as a separate Application, the resources are not shared (even if the same ApplicationPool is in use!). The reason is that the resources are isolated based on the ApplicationDomain . To deal with request/ session/ DB timeout, the

Cloud Computing

Differences amongst IaaS, PaaS, SaaS   IaaS PaaS SaaS Application     provided Runtime   provided provided Database   provided provided Operating System   provided provided Virtualisation provided provided provided Server provided provided provided Storage provided provided provided Network provided provided provided

ITABOK

Image
“Architecture expresses the intent, what we want to do; Implementation expresses the technologies used.” IT Architecture Body of Knowledge is summarised as follows: The Software Architecture determines flexibility The Infrastructure Architecture determines adaptability The Information Architecture forms awareness The Business Architecture helps productivity

Complex Events Processing

Image
The main concepts for designing CEP systems are captured in the following UML class diagram:

Enterprise Architecture

Image
Meta-model for a Organisation Vision – a statement by company officials about the broad purpose of the company Strategy – grouping of plans that supports achieving company goals Goal – a specific objective that is measurable and achievable within the planning horizon Programme – provides the rules that govern initiatives and projects Project – a work effort that has defined start and end points. It consumes resources and generate values (e.g. cost reductions, revenue growth, benefits, etc.) Business Function – a set of procedures or activities that delivers products, services or support control of the company Capability – due to the business functions, the company is able to perform tasks, deliver services and develop products that sets itself apart from competitors Business Process – a procedure or activity that uses resources input to generate a measurable output. A group of these creates a function Application – a computerised system supporting automation for business proc

Useful Design Patterns for Brownfield Projects

Brownfield projects are ubiquitous these days. Greenfield on the other-hand are hard to come by. The ways to deal with both are different. In particular, design patterns that are applicable to brownfield are: Adapter Pattern – adapt a component to another component using a different interface. Proxy Pattern – useful for controlling access to some resource, especially remote ones. Allows decoupling of the client from knowledge of connecting to the service. (Remote) Façade Pattern – to remove the complexity of some service by providing a simplified interface Data Transfer Object – useful in decoupling the views from the data access codes as well as reducing the number of remote invocations to the database layer. Data Access Layer – used to isolate the data access from the users’ interface.

Non Functional Requirements – Performance

Requirements, especially non-functional ones, need to be SMART: S pecific M easurable A ttainable (Achievable, Actionable, Appropriate) R ealisable (Realistic) T ime-bound (Timely, Traceable) For performance requirements (should these be more correctly called performance goals ?), the following aspects are most relevant: Response time – how fast the system responses to requests Throughput handling – how many requests the system can handle Concurrency – how many threads/ users can operate simultaneously To specify performance requirements, consider the following: Expected daily load: number of invocations/ day. E.g. System is expected to receive (on average) 500 requests everyday Expected peak load: max invocations / day. E.g. System is expected to hit a peak load of 1000 requests on certain days (Maximum) Response Time: invocations need to respond within certain timeframe. E.g. System needs to respond to requests within 5 seconds The last point (response time) deserves fu

Setting Up a Reverse Proxy (HTTP Gateway) using Apache

Problem/ Issue I recently had the opportunity to look into the following issue: the organisation, like most others, have segregated the network into at least 2 zones (DMZ and internal) the DMZ hosts the web servers while the internal zone hosts the application and database servers a requirement is that an application in the internal zone needs to access a web service in the public internet allowing direct HTTP traffic from the internal zone to the public network is not an option With the above constraints, a forward proxy could have been an option. However, the internal-zoned application may not be able to support a forward proxy. As such, a reverse proxy would be the solution. Existing Solution The existing in-place solution follows: host a custom-written web service (acting as a proxy) in the DMZ to connect to the public network. The application in the internal zone will connect to the DMZ-hosted web service This custom-written web service will then connect to the pub

SharePoint - create an issue tracking list

I am trying to create an issue tracking list which takes a number of input criteria to determine the criticality of the reported issue. Sites to refer to: http://www.nothingbutsharepoint.com/ and http://blog.pathtosharepoint.com/ The general criteria are: Time Tolerance - how long can user tolerate the issue/ downtime Functional Impact - which aspect of the business is impacted No. of Affected Users - how many users are affected Availability of Alternatives/ Workarounds User Type/ Category - who/ which group of users are affected Based on the above input, some scoring is assigned and criticality is finally determined. I created the following Choice columns in the list with the fields preceded with a (x) to number the choices. Tolerance:  (x2) half day (5), 1 day (3), more than 1 day (1) Impact:  (x5) Others (0), Sales (5), Financial (5), Reputation (8), SSO/ Email/ Network (8) Affects:  (x5) Individual (1), Business Unit (3), Department (5), Site (8), Enterprise (

HTML-scraping

Ever had a need to process pages from a website that does not support any form of structural system integration like Web Service, RSS, REST, etc. The only information available is ill-formed HTML; not even XHTML!?I have always been using HTML Agility for the .NET platform to perform such HTML screen-scraping. Recently, found a number of Java equivalent toolkit to do the same: TagSoup JSoup HTML Parser HTML Cleaner NekoHTML Found this site that collects various toolkits for this purpose here .

Software Architecture Quality Attributes

The quality attributes (*-ities) can be categoried according to the following (from SEI): Design-time Modifiability Maintainability Reusability Portability Testability Run-time Performance-predictability Security Reliability Availability Scalability Interoperability Through-put Capacity Operational Usability Supportability Configurability Sustainability Buildability