Tuesday, July 20, 2010

What is a LOB application?


LOB (Line of Business) applications are enterprise level business application software which are critical to running complex processes.
A LOB application has generally simple UI but has big and complex OLTP processing going on.

According to Techtarget.com:

- An LOB (line-of-business) application is one of the set of critical computer applications that are vital to running an enterprise, such as accounting, supply chain management, and resource planning applications. LOB applications are usually large programs that contain a number of integrated capabilities and tie into databases and database management systems.

according to MSDN blog:

LOB applications are:

  • Interactive--self explanatory
  • Have multiple screens--the interaction happens on screens, and typically several of them are involved
  • Domain specific--examples include finance, insurance, health care, telecom, and e-commerce applications
  • OLTP--transaction processing rather than analytical processing
  • Have relatively simple user interface/presentation--text fields, checkboxes, buttons
  • Integrate with other systems that manage the data and execute the transactions--databases, systems of record, etc.

Monday, July 19, 2010

Loading Assembly dynamically (on demand) in Silverlight 4


It’s an important architectural pattern to keep the size of your initial ZAP file minimal to provide a fast initial loading experience to the user.
To make this happen Silverlight provides facilities so that you can load assemblies as and when required.

This should be the Architectural Design of your app:

  1. Make your application modular and divide it in smaller assemblies.
  2. Load required assemblies when required

Tip: You can also load built in assemblies at run time on demand. For example toy can load Dot Net assembly

I have written a walkthrough tutorial.
You need Visual Studio 2010 express (or higher) and Silverlight 4.0 installed.

The example app loads an assembly called SilverlightLibrary.dll when the user clicks a text block. This example uses a relative URI to load the assembly from the same location as the application XAP file. It can be loaded from other locations as well.

This example uses the WebClient class to initiate an asynchronous download of the assembly in response to a user mouse click. When the download is complete, the AssemblyPart class is used to load the assembly.

1. Setup the project

Create a New Silverlight application and Name it : LoadingAssemblyOnDemand


2. Click ok when the following prompt pops up:


3. Now you have two projects in your solution, one is Silverlight App and another is a webApp
    to host this Silverlight App as seen in the Solution explorer below


4. Add the following elements into your MainPage.xaml.
This will build up our basic GUI. Clicking on the Text block will initiate the process of dynamic loading on demand.

<TextBlock>Page from Host 
Click Here to Display a UI from the Library 

As seen in the screen shot below:


5. This will create a simple UI which you can see in the design view.


6. Now open the code window (MainPage.xaml.cs) and add the following code to the class.

private void TextBlock_MouseLeftButtonUp(
            object sender, MouseButtonEventArgs e)
            // Download an "on-demand" assembly.
            WebClient wc = new WebClient();
            wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
            wc.OpenReadAsync( new Uri("SilverlightLibrary.dll", UriKind.Relative));
        private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            if ((e.Error == null) && (e.Cancelled == false))
                // Convert the downloaded stream into an assembly that is
                // loaded into current AppDomain.
                AssemblyPart assemblyPart = new AssemblyPart();
        private void DisplayPageFromLibraryAssembly()
            // Create an instance of the Page class in the library assembly
            SilverlightLibrary.SilverlightPage page = new SilverlightLibrary.SilverlightPage();

7. Add a new project of type Silverlight Class Library to the Solution. Name this Project as SilverlightLibrary
    Now the solution has three projects as shown below:


8. Add a class to this newly added class library project. name this Class as SilverlightPage.cs, as shown above.

9. Add a simple method to this class named – ShowMessage and the code as shown below-

public void ShowMessage(string messsage)

So when the user will click on the text block in the Silverlight app, this assembly and this class (SilverlightPage) will be dynamically loaded and this method can be called on the class object.

10. Now build this Class Lib project as shown below:
      (Right Click on the Project Node and Click on Build)


11. Now you have to add reference of this class lib into your Silverlight app.
(For this expand the Silverlight App Project Node, right Click on References Node and Click Add Reference…)


12. Add reference dialog box opens. Click on the Project Tab and
      select the SilverlightLibrary (Class lib), click Ok) as shown below-


13. You will see a Reference of the Class lib added to the References Node Of the project as shown below-


14. Right Click on the SilverlightLibrary Node of the references as shown below and Click on Properties


15. Properties dialog box opens. Set the Copy Local property to False, as shown below and then save the project and solution.


16. Now build the Silverlight App.

17. We also need to copy the compiled DLL file of the class lib to the Client Bin Folder
      of the web project (On-Demand-Assembly-Loading.Web).
      So navigate the Solution Folder and then web Project folder and the Bin folder>
      For me the path was like this:
      C:\Users\SUMIT\Documents\Visual Studio 2010\Projects\On-Demand-Assembly-Loading\SilverlightLibrary\Bin\Debug

      Copy two files from here (SilverlightLibrary.dll and SilverlightLibrary.pdb) and paste it to the Client Bin Folder of the Web Project.
      My Web project looks something like this after doing this-


18. Now we are done, So run the Silverlight Application. this will open the Default test page in the browser.
      We need to test whether the SilverlightLibrary assembly is being loaded dynamically at runtime.
      Firebug in Firefox can help us in this.
      Open FF and Open the Firebug pane. Enable Net tab in firebug to see the network traffic.
      Load the test page in Firefox and examine the traffic.
See after the first loading of the page, the XAP file loads that takes 4.3 KB of traffic.
The SilverlightLibrary assembly has not been loaded till now.
There are total 5 http requests making a total of 15.3KB. See below-


19. Now Click on the TextBlock to fire up the dynamic loading process.

     A welcome message box pops up this means the dynamic code is executed.
     See, there are now six http request and Total is now 19.3KB.

20. When you expand the last (sixth request) you will see the name of the SilverlightLibrary.dll assembly.
This was loaded dynamically when user clicked on the text block.


So this walkthrough helps us to understand the complete process of making our Silverlight Application
modular and help us load the assemblies dynamically at runtime from the server.

Pls. put your comments or any questions. i shall love to answer you.

Few useful references:

MSDN Tutorial: How to: Load Assemblies On Demand
MSDN Sample: How to: Load Assemblies On Demand

Silverlight.net Video: Loading Dynamic XAPs and Assemblies

Install Silverlight

Devidpoll.com On-demand loading of assemblies with Silverlight Navigation
http://www.mindfiresolutions.com - SilverLight : Load Assembly on Demand

Sunday, July 18, 2010

Charles Leadbeater on innovation – TED talk


When ideas have sex – TED talk


Friday, July 9, 2010

No Major Application implement DEP and ASLR for preventing unauthorized programs for taking over your PC


Big-name Windows applications neglect security

Two important security technologies, Data Execution Prevention (DEP) and Address Space Layout Randomization (ASLR), go a long way toward preventing unauthorized programs from taking over a PC. And Secunia Research just published a white paper with a disturbing analysis of popular Windows programs that don't use either. Windows XP Service Pack 2 introduced DEP back in 2004. It's is a technique that uses both hardware and software to keep a PC from executing programs that sit in areas that should be holding data. Historically, one of the easiest and most fruitful ways to take over a PC involves a buffer overflow - where an attack routine sticks a malicious program inside a data area and then tricks Windows into "running" the data. When a program asks Windows for DEP protection, and the hardware supports DEP, buffer overflow attacks are considerably more difficult. Not impossible, mind you, but DEP does pretty well blocking the most common and straightforward attacks.

ASLR arrived with the release of Windows Vista in 2007. When a program tells Windows that it wants to use ASLR, Windows sticks pieces of the program in randomly assigned parts of memory. If an attacker tries to access a specific location in the program, the attacker has to guess the location of the pertinent piece of the program, which can be quite difficult. Together DEP and ASLR aren't invincible, but they're formidable. In Windows 7 (and to a lesser extent Vista), turning on both DEP and ASLR is reasonably easy if the program is written properly and doesn't use certain undesirable coding techniques that fell out of favor years ago. That's why it's so shocking that many of the programs you and your users run every day don't support either or both.

Secunia tested sixteen applications - the most commonly used Windows apps as reported by Secunia's PSI scanning program. Each of the tested programs has been used as the vector in a real attack in the past two years. As of last month, none of these programs use DEP: Sun's Java JRE, Apple's QuickTime, Apple's iTunes (running on Win XP), OpenOffice, Google's Picasa, Foxit Reader, VLC Media Player, AOL's Winamp, and RealPlayer. Secunia determined that if a program doesn't use DEP, there's no reason to check for ASLR - kind of a security crawl-before-you-can-walk situation.

Read full story here : http://www.codeguru.com/daily_news/article.php/405208

Wednesday, July 7, 2010

WireShark- one of the best network protocol analyzer


Today I came to know one of the best network protocl analyzer called : wireshark.

According to it’s site :

Wireshark is the world's foremost network protocol analyzer, and is the de facto (and often de jure) standard across many industries and educational institutions.


Wireshark has a rich feature set which includes the following:

  • Deep inspection of hundreds of protocols, with more being added all the time
  • Live capture and offline analysis
  • Standard three-pane packet browser
  • Multi-platform: Runs on Windows, Linux, OS X, Solaris, FreeBSD, NetBSD, and many others
  • Captured network data can be browsed via a GUI, or via the TTY-mode TShark utility
  • The most powerful display filters in the industry
  • Rich VoIP analysis
  • Read/write many different capture file formats: tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer® (compressed and uncompressed), Sniffer® Pro, and NetXray®, Network Instruments Observer, NetScreen snoop, Novell LANalyzer, RADCOM WAN/LAN Analyzer, Shomiti/Finisar Surveyor, Tektronix K12xx, Visual Networks Visual UpTime, WildPackets EtherPeek/TokenPeek/AiroPeek, and many others
  • Capture files compressed with gzip can be decompressed on the fly
  • Live data can be read from Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring, Frame Relay, FDDI, and others (depending on your platform)
  • Decryption support for many protocols, including IPsec, ISAKMP, Kerberos, SNMPv3, SSL/TLS, WEP, and WPA/WPA2
  • Coloring rules can be applied to the packet list for quick, intuitive analysis
  • Output can be exported to XML, PostScript®, CSV, or plain text


Get the Software from this site: http://www.wireshark.org