Tuesday, December 30, 2008

C# Interview Questions And Answers

Hi techies,Here are the few interview questions i collected on C# covers fundamental as well as expert level.Hope You will enjoy it.......

Class Questions:

1:What is the syntax to inherit from a class in C#?

Ans:Place a colon and then the name of the base class.Example: class MyNewClass : MyBaseClass

2:Can you prevent your class from being inherited by another class?

Ans:Yes. The keyword “sealed” will prevent the class from being inherited.

3:Can you allow a class to be inherited, but prevent the method from being over-ridden?Ans:Yes. Just leave the class public and make the method sealed.

4:What’s an abstract class?

Ans:A class that cannot be instantiated. An abstract class is a class that must be inherited and have the methods overridden. An abstract class is essentially a blueprint for a class without any implementation.

5:When do you absolutely have to declare a class as abstract?

Ans:1. When the class itself is inherited from an abstract class, but not all base abstract methods have been overridden. 2. When at least one of the methods in the class is abstract.

6:What is an interface class?

Ans:Interfaces, like classes, define a set of properties, methods, and events. But unlike classes, interfaces do not provide implementation. They are implemented by classes, and defined as separate entities from classes.

7:Why can’t you specify the accessibility modifier for methods inside the interface?

Ans:They all must be public, and are therefore public by default.

8:Can you inherit multiple interfaces?

Ans:Yes. .NET does support multiple interfaces.

9:What happens if you inherit multiple interfaces and they have conflicting method names?Ans:It’s up to you to implement the method inside your own class, so implementation is left entirely up to you. This might cause a problem on a higher-level scale if similarly named methods from different interfaces expect different data

10:What’s the difference between an interface and abstract class?

Ans:In an interface class, all methods are abstract - there is no implementation. In an abstract class some methods can be concrete. In an interface class, no accessibility modifiers are allowed. An abstract class may have accessibility modifiers.

11:What is the difference between a Struct and a Class?

Ans:Structs are value-type variables and are thus saved on the stack, additional overhead but faster retrieval. Another difference is that structs cannot inherit.

12:What’s the implicit name of the parameter that gets passed into the set method/property of a class?

Ans:Value. The data type of the value parameter is defined by whatever data type the property is declared as

13:What does the keyword “virtual” declare for a method or property?

Ans:The method or property can be overridden.

14:How is method overriding different from method overloading?

Ans:When overriding a method, you change the behavior of the method for the derived class. Overloading a method simply involves having another method with the same name within the class.

15:Can you declare an override method to be static if the original method is not static?

Ans:No. The signature of the virtual method must remain the same. (Note: Only the keyword virtual is changed to keyword override).

16:What are the different ways a method can be overloaded?

Ans:Different parameter data types, different number of parameters, different order of parameters.

17:If a base class has a number of overloaded constructors, and an inheriting class has a number of overloaded constructors; can you enforce a call from an inherited constructor to a specific base constructor?

Ans:Yes, just place a colon, and then keyword base (parameter list to invoke the appropriate constructor) in the overloaded constructor definition inside the inherited class.

Basic Questions:

1:Does C# support multiple-inheritance?

Ans:No.
2:Who is a protected class-level variable available to?

Ans:It is available to any sub-class (a class inheriting this class).
3:Are private class-level variables inherited?

Ans:Yes, but they are not accessible. Although they are not visible or accessible via the class interface, they are inherited.
4:Describe the accessibility modifier “protected internal”.

Ans:It is available to classes that are within the same assembly and derived from the specified base class.

5:What’s the top .NET class that everything is derived from?

Ans:System.Object.

6:What does the term immutable mean?

Ans:The data value may not be changed. Note: The variable value may be changed, but the original immutable data value was discarded and a new data value was created in memory. 7:What’s the difference between System.String and System.Text.StringBuilder classes?

Ans:System.String is immutable. System.StringBuilder was designed with the purpose of having a mutable string where a variety of operations can be performed.

8:What’s the advantage of using System.Text.StringBuilder over System.String?Ans:StringBuilder is more efficient in cases where there is a large amount of string manipulation. Strings are immutable, so each time a string is changed, a new instance in memory is created.

9:Can you store multiple data types in System.Array?

Ans:No.

10:What’s the difference between the System.Array.CopyTo() and System.Array.Clone()?

Ans:The Clone() method returns a new array (a shallow copy) object containing all the elements in the original array. The CopyTo() method copies the elements into another existing array. Both perform a shallow copy. A shallow copy means the contents (each array element) contains references to the same object as the elements in the original array. A deep copy (which neither of these methods performs) would create a new instance of each element's object, resulting in a different, yet identacle object.

11:How can you sort the elements of the array in descending order?

Ans:By calling Sort() and then Reverse() methods.

12:What’s the .NET collection class that allows an element to be accessed using a unique key?

Ans:HashTable.

13:What class is underneath the SortedList class?

Ans:A sorted HashTable.
14:Will the finally block get executed if an exception has not occurred?

­Ans:Yes.

15:What’s the C# syntax to catch any possible exception?

Ans:A catch block that catches the exception of type System.Exception. You can also omit the parameter data type in this case and just write catch {}.

16:Can multiple catch blocks be executed for a single try statement?

Ans:No. Once the proper catch block processed, control is transferred to the finally block (if there are any).
17:Explain the three services model commonly know as a three-tier application

.Ans:Presentation (UI), Business (logic and underlying code) and Data (from storage or other sources).
18:What’s a delegate?

Ans:A delegate object encapsulates a reference to a method.

19:What’s a multicast delegate?

Ans:A delegate that has multiple handlers assigned to it. Each assigned handler (method) is called.
20:What debugging tools come with the .NET SDK?

Ans:1. CorDBG – command-line debugger. To use CorDbg, you must compile the original C# file using the /debug switch. 2. DbgCLR – graphic debugger. Visual Studio .NET uses the DbgCLR.
21:What does assert() method do?

Ans:In debug compilation, assert takes in a Boolean condition as a parameter, and shows the error dialog if the condition is false. The program proceeds without any interruption if the condition is true.
22:What’s the difference between the Debug class and Trace class?

Ans:Documentation looks the same. Use Debug class for debug builds, use Trace class for both debug and release builds.
23:Why are there five tracing levels in System.Diagnostics.TraceSwitcher?

Ans:The tracing dumps can be quite verbose. For applications that are constantly running you run the risk of overloading the machine and the hard drive. Five levels range from None to Verbose, allowing you to fine-tune the tracing activities.
24:Where is the output of TextWriterTraceListener redirected?

Ans:To the Console or a text file depending on the parameter passed to the constructor.
25:How do you debug an ASP.NET Web application?

Ans:Attach the aspnet_wp.exe process to the DbgClr debugger.
26:What are three test cases you should go through in unit testing?

Ans:1. Positive test cases (correct data, correct output).2. Negative test cases (broken or missing data, proper handling).3. Exception test cases (exceptions are thrown and caught properly).
27:Can you change the value of a variable while debugging a C# application?

Ans:Yes. If you are debugging via Visual Studio.NET, just go to Immediate window.
Database Questions :
28:What is the role of the DataReader class in ADO.NET connections?

Ans:It returns a read-only, forward-only rowset from the data source. A DataReader provides fast access when a forward-only sequential read is needed.
29:What are advantages and disadvantages of Microsoft-provided data provider classes in ADO.NET?

Ans:SQLServer.NET data provider is high-speed and robust, but requires SQL Server license purchased from Microsoft. OLE-DB.NET is universal for accessing other sources, like Oracle, DB2, Microsoft Access and Informix. OLE-DB.NET is a .NET layer on top of the OLE layer, so it’s not as fastest and efficient as SqlServer.NET.
30:What is the wildcard character in SQL?

Ans:Let’s say you want to query database with LIKE for all employees whose name starts with La. The wildcard character is %, the proper query with LIKE would involve ‘La%’.
31:Explain ACID rule of thumb for transactions.

Ans:A transaction must be:1. Atomic - it is one unit of work and does not dependent on previous and following transactions.2. Consistent - data is either committed or roll back, no “in-between” case where something has been updated and something hasn’t.3. Isolated - no transaction sees the intermediate results of the current transaction).4. Durable - the values persist if the data had been committed even if the system crashes right after.
32:What connections does Microsoft SQL Server support?

Ans:Windows Authentication (via Active Directory) and SQL Server authentication (via Microsoft SQL Server username and password).
33:Between Windows Authentication and SQL Server Authentication, which one is trusted and which one is untrusted?

Ans:Windows Authentication is trusted because the username and password are checked with the Active Directory, the SQL Server authentication is untrusted, since SQL Server is the only verifier participating in the transaction.
34:What does the Initial Catalog parameter define in the connection string?

Ans:The database name to connect to.
36:What does the Dispose method do with the connection object?

Ans:Deletes it from the memory.To Do: answer better. The current answer is not entirely correct.
37:What is a pre-requisite for connection pooling?

Ans:Multiple processes must agree that they will share the same connection, where every parameter is the same, including the security settings. The connection string must be identical.
Assembly Questions
38:How is the DLL Hell problem solved in .NET?

Ans:Assembly versioning allows the application to specify not only the library it needs to run (which was available under Win32), but also the version of the assembly.
39:What are the ways to deploy an assembly?

Ans:An MSI installer, a CAB archive, and XCOPY command.
40:What is a satellite assembly?

Ans:When you write a multilingual or multi-cultural application in .NET, and want to distribute the core application separately from the localized modules, the localized assemblies that modify the core application are called satellite assemblies.
41:What namespaces are necessary to create a localized application?

Ans:System.Globalization and System.Resources.
42:When should you call the garbage collector in .NET?

Ans:As a good rule, you should not call the garbage collector. However, you could call the garbage collector when you are done using a large object (or set of objects) to force the garbage collector to dispose of those very large objects from memory. However, this is usually not a good practice.
43:How do you convert a value-type to a reference-type?

Ans:Use Boxing.
44:What happens in memory when you Box and Unbox a value-type?

Ans:Boxing converts a value-type to a reference-type, thus storing the object on the heap. Unboxing converts a reference-type to a value-type, thus storing the value on the stack.

.Net Free E-Books

Hi all,Here are the some good Free E-books for .Net ,sql server,XML
http://www.free-ebooks-download.org

Monday, December 29, 2008

OOPS-(C# OOPS,Concepts,Scenarios,Tips and Tricks)

Hi Friends ,We all know that OOP's is the buzz word in the programming environment and we use these concepts in our everyday developments to get flexibility,robustness,scalability.Now a days when we go for any interview that may be C++,.Net,C#,java or SAP,the first questions they ask is OOP's because of its frequent use and importance in real time.So I am bringing you this article that demonstrates the conceptual knowledge and use case scenarios on oops.Whatever the concepts i am covering here is beyond the basic level by thinking that you are familiar with basics .Here I am explaining all the concepts based on C#,same thing applies to other languages with little bit syntax difference .Fun concepts starts from here.........................

What is OOP's:

  • OOP is the common abbreviation for Object-Oriented Programming.
  • It is the new concept of programming ,parallel to Procedure oriented programming.It were intorduced in late 80's.It consider the programming simulated to real world objects.It help in programming approach in order to built robust,user friendly and efficient softwares and provide the efficient way to maintain real world softwares

Why OOP's:

  • OOP become a popular since it provide a better programming style, you don't need to write code which you really need to run anytime you need (such as in structured programming and assembler), you just make a class of object and you may call/instantiate the class and use it from any part of your application, it is reusable.
  • compiler provide a library of those class, and you just use it, no need to write the codes. Your application mostly concern on managing the interaction among object, not write a command for any specific jobs.
  • OOP provide Inheritances model, so your application can inherit another class which is having similarity on behavior such as the variables and its methods, but you just write the distinct behaviour for your own implementation
  • OOP provide encapsulation model, once you instantiate an object, it's behavior to do their own job will not interupt another object, you dont bother if your code will affect another object.
  • OOP provide polymorphism, here you may call any methods in run time which is depend on particular command you provide, but still using the same method implementations.
  • OOP provide modularity mobel once you change part of code which is in separate module, it will not impact any module developed in application

Class and Objects:

  • Everything in our world is considered to be an object. For example, people are objects, animals are objects too, minerals are objects; everything in the world is an object. Easy, But what about classes?
  • In our world we have to differentiate between objects that we are living with. So we must understand that there are classifications (this is how they get the name and the concepts of the Class) for all of those objects. For example, I'm an object, sunil is object too, lakshmi is another object. So we are from a people class (or type).
  • I have a dog called Puppy so it's an object. My friend's dog, Snoopy, is also an object so they are from a Dogs class (or type).
  • A third example: I have a Pentium 3; this is an object. My friend has a Pentium 4, so this is another object and they are from a Computers class (or type). Makes sense right...
  • Class features can be used only after creating object called instance Types.

Classes and Objects Behaviour:

1)Static Behaviour :Static classes can be used when there is no data or behavior in the class that depends on object identity.

  • Example:Consider you have a company .Assume that there are 10 employees in that company.Here we could declare company class as static ,because company it self as an independent entity and it is common for all 10 employees.So you dont require to assign different company names for each employee.
  • When you consider employee class its not good to declare static as values will keep changing for each employee like name, sal,age etc..
  • Static classes will always have a common memory where as normal classes are not
  • Its not possible to inherit static classes .If you try it will throw compilation error
  • Only static members are allowed in static classes
  • Its not possible to create objects to static classes.Can be accessed via class name
  • when you declare static variables in normal class ,those cant be accessed from object but can be inherited.
  • Its not possible to declare interface as static

2)Constructor :

  • It is also a method with out return type
  • It gets invoked while creating object
  • Private Constructor:
  • A private constructor is a special instance constructor.
  • It is commonly used in classes that contain static members only. If a class has one or more private constructors and no public constructors, then other classes (except nested classes) are not allowed to create instances of this class
  • Private constructors are used to prevent the creation of instances of a class when there are no instance fields or methods, such as the Math class, or when a method is called to obtain an instance of a class. If all the methods in the class are static, consider making the entire class static.

Example : public class Counter

{

private Counter() { }

public static int currentCount;

public static int IncrementCount() { return ++currentCount; }

}

  • Static Constructor:
  • A static constructor is used to initialize any static data, or to perform a particular action that needs performed once only. It is called automatically before the first instance is created or any static members are referenced.
  • A static constructor does not take access modifiers or have parameters.
  • A static constructor is called automatically to initialize the class before the first instance is created or any static members are referenced.
  • A static constructor cannot be called directly.
  • The user has no control on when the static constructor is executed in the program.
  • A typical use of static constructors is when the class is using a log file and the constructor is used to write entries to this file.
  • Static constructors are also useful when creating wrapper classes for unmanaged code, when the constructor can call the LoadLibrary method.

Abstract Behaviour:

Scenario's:

  • abstract class:In most cases, using an abstract class is the "right" thing to do if you're trying to create a common class from which others will derive and which isn't fully specified.
  • Use abstract class when you want to provide some functionality to the user and at the same time would like to enforce some skeleton (structure) for the users of your class
  • Interfaces: are nice if you don't want to force classes to have a single root class in their hierarchy, as a single class can implement multiple interfaces.
  • Interfaces are used to define a skeleton. Classes who want to confirm to that skeleton implementsts the interface
  • Concrete classes should be used if it's fully specified--i.e. subclasses don't have any hooks into which they must provide functionality.
  • Concrete class - Use a concrete class to represent an object (data & methods) which can be extended or reused.



Sunday, December 28, 2008

RFID-Radio-frequency identification(RFID Technology Description,RFID and .Net Integration )

Radio-frequency identification (RFID) :is an automatic identification method, relying on storing and remotely retrieving data using devices called RFID tags or transponders.

  • Main Components: RFID reader, RFID tag
  • RFID tag:
  • is an object that can be applied to or incorporated into a product, animal, or person for the purpose of identification and tracking using radio waves. Some tags can be read from several meters away and beyond the line of sight of the reader.
  • Most RFID tags contain at least two parts. One is an integrated circuit for storing and processing information, modulating and demodulating a radio-frequency (RF) signal, and other specialized functions. The second is an antenna for receiving and transmitting the signal.
  • Types of RFID tags: active RFID tags, which contain a battery, passive RFID tags, which have no battery.
  • RFID Reader:
  • A device used to communicate with RFID tags.
  • It has one or more antennas, which emit radio waves and receive signals back from the tag.
  • It is also sometimes called an interrogator because it "interrogates" the tag.
  • It is An electronic device used for communication between RFID tags and a host computer system.
  • A reader generally consists of an RF transmitter and receiver and an antenna for communicating with tags. A digital interface enables the reader to communicate with the host computer system.
  • Reading distance :
    The distance between the antenna of a reader and a tag over which the read function can be effectively performed. This distance is influenced by the orientation and angle of the tag with respect to the antenna, and possibly by environmental conditions.

RFID-Real Time Applications:

  • Supply chain automation - the key early driver for developments and implementation of the technology
  • Asset tracking - tracking of assets in offices, labs, warehouses, pallets and containers in the supply chain, books in libraries Medical applications - linking a patient with key drugs, personnel giving the drugs, biometric measurements
  • People tracking - security tracking for entrance management or security, contact management at events, baby tags in hospitals to manage access to post-natal wards
  • Manufacturing - tracking of parts during manufacture, tracking of assembled items Retail - tracking store trolleys in supermarkets, active shelves
  • Warehouses - Real-time inventory by automated registration of items in a warehouse or store-room
  • Livestock - implanted RFID tags in animals for tracking and linking the animal to food, location. Applicable to farming as well as exotic breeds in zoos
  • Timing - sports event timing to track athletes as they start a race and pass the finish line

How does an RFID system work:

  • An RFID system consists of a tag made up of a microchip with an antenna, and an interrogator or reader with an antenna.
  • The reader sends out electromagnetic waves. The tag antenna is tuned to receive these waves.
  • A passive RFID tag draws power from the field created by the reader and uses it to power the microchip's circuits.
  • The chip then modulates the waves that the tag sends back to the reader, which converts the new waves into digital data.


Which frequency is right for your application?

  • Different frequencies have different characteristics that make them more useful for different applications.
  • For instance, low-frequency tags use less power and are better able to penetrate non-metallic substances. They are ideal for scanning objects with high-water content, such as fruit, but their read range is limited to less than a foot (0.33 meter).
  • High-frequency tags work better on objects made of metal and can work around goods with high water content. They have a maximum read range of about three feet (1 meter).
  • UHF frequencies typically offer better range and can transfer data faster than low- and high-frequencies. But they use more power and are less likely to pass through materials. And because they tend to be more "directed," they require a clear path between the tag and reader.
  • UHF tags might be better for scanning boxes of goods as they pass through a dock door into a warehouse. It is best to work with a knowledgeable consultant, integrator or vendor that can help you choose the right frequency for your application.

Standardized Frequency Bands:

  • low frequency (LF) : 125 to 134 kHz;
  • high frequency (HF) : 13.56 MHz;
  • ultrahigh frequency (UHF) : 860 to 960 MHz

RFID and .Net Integration:there are few API's which helps us to interact with RFID readers ,so that you can control the RFID devices functionality via .Net applications through these API's.Here i am using Phidgets application programming interface (API).

  • Phidgets :Phidgets are a set of "plug and play" building blocks for low cost USB sensing and control from your PC. All the USB complexity is taken care of by these API's. Applications can be developed quickly in .NET, Visual Basic, VBA (Microsoft Access and Excel), LabView, Java, Delphi, C, C++ and Python.Via (http://www.phidgets.com/)
  • Implementation :create new windows application.Install the Phidget API Dll in your system.Reference the dll in C# application.
  • NameSpaces:using Phidgets;using Phidgets.Events;
  • RFID : This object will be assigned to the RFID reader so that we can pull information from it.
  • To use the RFID reader, you will need to create an RFID object and then open the reader. You also will want to create a few event handlers to control actions that occur from the reader
  • The first thing that happens is that an RFID object is created called rfid1. This will be used to attach to the RFID hardware. Before opening the hardware for use, event handlers are created for attaching to the RFID reader (myRFID_Attach), detaching from the reader (myRFID_Detach), having a tag put near the reader (myRFID_Tag), and having a tag move out of the reader's range (myRFID_TagLost). After adding these handlers to the rfid1 object, the open method is called to begin using the RFID object
  • To use the RFID reader, in addition to being connected to your machine, it also has to be turned on
  • Turning on the reader is simply setting the Antenna property of your RFID object to true
  • myRFID.Antenna =true
  • The next important thing is to read a tag. This is done in the myRFID_Tag event handler that was added to the rfid1 object in the Form_Load event

Sample Code:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing; using System.Text;

using System.Windows.Forms; using Phidgets; // Import Name Spaces

using Phidgets.Events;

namespace RFIDTest

{

public partial class MyRFIDReader : Form

{

RFID myRFID; // Declare RFID Object

string lastTag; // Tag that just read

public RFIDReader()

{

InitializeComponent();

lastTag = "";

}

private void Form1_Load(object sender, EventArgs e)

{

myRFID= new RFID();

myRFID.Attach += new AttachEventHandler(myRFID_Attach);

myRFID.Detach += new DetachEventHandler(myRFID_Detach);

myRFID.RFIDTag += new TagEventHandler(myRFID_Tag);

myRFID.RFIDTagLost += new TagEventHandler(myRFID_TagLost);

myRFID.open();

}
// Reading Tag

private void myRFID_Tag(object sender, TagEventArgs e)

{

lastTag= e.Tag;

myRFID.LED = true; // on light

}
// When tags over

void myRFID_TagLost(object sender, TagEventArgs e)

{

txtTag.Text =

myRFID.LED = false;

}
// Detaching Reader

private void myRFID_Detach(object sender, DetachEventArgs e)

{

lblAttach.Text = "Detached";

}
// Attaching Reader to application

Private void myRFID_Attach(object sender, AttachEventArgs e)

{

Phidgets.RFID phidTag = (Phidgets.RFID)sender;

lblAttach.Text = phidTag.Name;

lblSeriaNumberl.Text = phidTag.SerialNumber;

lblVersionNumber.Text = phidTag.Version;

}
// Turn On The Reader

private void antennaButton_Click ( object sender, EventArgs e)

{

myRFID.Antenna = True;

}

}

}

Is RFID better than using bar codes:The two are different technologies and have different applications, which sometimes overlap. The big difference between the two is bar codes are line-of-sight technology. That is, a scanner has to "see" the bar code to read it, which means people usually have to orient the bar code toward a scanner for it to be read. Radio frequency identification, by contrast, doesn't require line of sight. RFID tags can be read as long as they are within range of a reader. Bar codes have other shortcomings as well. If a label is ripped or soiled or has fallen off, there is no way to scan the item, and standard bar codes identify only the manufacturer and product, not the unique item. The bar code on one milk carton is the same as every other, making it impossible to identify which one might pass its expiration date first.

Well-timed acquisitions

In a fast deteriorating economic environment India’s IT majors appear to be looking beyond the immediate crisis plaguing the global economy.
While others are holding on to whatever cash they have, the likes of TCS, Wipro and HCL are using their stockpile to make strategic acquisitions to strengthen their business.
Wipro has acquired Citi Technology Services, Citigroup’s IT arm in India, in an all cash $127 million deal. Last week, HCL Tech had closed the acquisition of UK-based Axon Group for $658 million. And earlier TCS had bought out Citi’s captive BPO arm Citigroup Global Services for about $505 million.

These acquisitions have come at a time when the consensus is that the Indian IT industry is entering a difficult phase. IT budgets are usually the first to be slashed when companies need to cut costs. This is likely to be particularly severe in the case of the crisis hit banking sector, with serious implications for the Indian IT sector.
A significant chunk of the Indian IT industry’s revenues comes from the Banking and Financial Services (BFS) vertical. One can argue that the cost cutting could conceivably lead to outsourcing of more work to the cheaper offshore centres such as India. That possibility is, however, clouded somewhat by the virtual nationalisation of many financial institutions.

Source: The Economic Times

Wednesday, December 24, 2008

SAP .NET Connector

Purpose:
The SAP .NET Connector is a development environment that enables communication between the Microsoft. NET platform and SAP systems.

This connector supports RFCs and Web services, and allows you to write different applications such as Web form, Windows form, or console applications in the Microsoft Visual Studio.Net. With the SAP .NET Connector, you can use all common programming languages, such as Visual Basic. NET, C#, or Managed C++.

Features:
Using the SAP .NET Connector and SAP .NET Proxy Wizard, you can:
· Write .NET Windows and Web form applications that have access to SAP business objects (BAPIs).
· Develop client applications for the SAP Server. Here you can use either RFCs or HTTP/SOAP/XML (outside-in).
· Write RFC server applications that run in a .NET environment and can be installed starting from the SAP system (inside-out).

With Microsoft Visual Studio .NET you can:
· Use the integrated Proxy Wizard to generate proxy objects.
· Use any common programming language that has complete access to Microsoft Visual Studio .NET.
· Link SAP tables and structure with Windows and Web form controls (Data Binding).
· Use secure authorization methods such as Single Sign-On, Kerberos, and Microsoft Passport (http://www.passport.net/).


Via : http://help.sap.com/