Showing posts with label Interview Questions. Show all posts
Showing posts with label Interview Questions. Show all posts

Wednesday, February 3, 2010

ADO.NET Interview Questions - Part 1


Introduction

This is the Part 1 of ADO.NET. In this section we will touch base on one of important concepts in ADO.NET. You can download my .NET Interview Question PDF from http://www.questpond.com/SampleDotNetInterviewQuestionBook.zip.

I have also put all these design patterns in a video format and uploaded on http://www.questpond.com/FreeDesign1.htm . You can visit http://www.questpond.com/ and download the complete architecture interview questions PDF which covers SOA, UML, Design Patterns, Togaf, OOPs etc.
You can download the software architecture interview questions PDF
Download Software Architecture Interview Questions
Happy job hunting......

 

(B) What is the namespace in which .NET has the data functionality class?

Following are the namespaces provided by .NET for data management:-
System. Data

This contains the basic objects used for accessing and storing relational data, such as DataSet, DataTable, and Data Relation. Each of these is independent of the type of data source and the way we connect to it.

System.Data.OleDB


It contains the objects that we use to connect to a data source via an OLE-DB provider, such as OleDbConnection, OleDbCommand, etc. These objects inherit from the common base classes, and so have the same properties, methods, and events as the SqlClient equivalents.
System.Data.SqlClient:


This contains the objects that we use to connect to a data source via the Tabular Data Stream (TDS) interface of Microsoft SQL Server (only). This can generally provide better performance as it removes some of the intermediate layers required by an OLE-DB connection.
System.XML


This Contains the basic objects required to create, read, store, write, and manipulate XML documents according to W3C recommendations.

 

(B) Can you give an overview of ADO.NET architecture?


The most important section in ADO.NET architecture is "Data Provider". Data Provider provides access to data source (SQL SERVER, ACCESS, ORACLE).In short it provides object to achieve functionalities like opening and closing connection, retrieve data, and update data. In the below figure, you can see the four main sections of a data provider:-

. Connection
. Command object (This is the responsible object to use stored procedures)
. Data Adapter (This object acts as a bridge between data store and dataset)
. Data reader (This object reads data from data store in forward only mode).
. Dataset object represents disconnected and cached data. If you see the diagram, it is not in direct connection with the data store (SQL SERVER,

ORACLE etc) rather it talks with Data adapter, who is responsible for filling the dataset. Dataset can have one or more Data table and relations.

Figure: - 9.1 ADO.NET Architecture

. Data View" object is used to sort and filter data in Data table.


Note:- This is one of the favorite questions in .NET. Just paste the picture in your mind and during interview try to refer that image.

 

(B) What are the two fundamental objects in ADO.NET?


Data reader and Dataset are the two fundamental objects in ADO.NET.


 

(B) What is difference between dataset and data reader?


Following are some major differences between dataset and data reader:-
. Data Reader provides forward-only and read-only access to data, while the Dataset object can hold more than one table (in other words more than one row set) from the same data source as well as the relationships between them.
. Dataset is a disconnected architecture while data reader is connected architecture.
. Dataset can persist contents while data reader cannot persist contents, they are forward only.


 

(I) What are major difference between classic ADO and ADO.NET?


Following are some major differences between both :-
. In ADO we have recordset and in ADO.NET we have dataset.. In recordset we can only have one table. If we want to accommodate more than one tables we need to do inner join and fill the recordset. Dataset can have multiple tables.
. All data persist in XML as compared to classic ADO where data persisted in Binary format also.

 

(B) What is the use of connection object?


They are used to connect a data to a Command object.
. An OleDbConnection object is used with an OLE-DB provider
. A SqlConnection object uses Tabular Data Services (TDS) with MS SQL Server

 

(B) What is the use of command objects?


They are used to connect connection object to Data reader or dataset. Following are the methods provided by command object:-
. ExecuteNonQuery: -
Executes the command defined in the Command Text property against the connection defined in the Connection property for a query that does not return any row (an UPDATE, DELETE, or INSERT). Returns an Integer indicating the number of rows affected by the query.
. ExecuteReader: -
Executes the command defined in the Command Text property against the connection defined in the Connection property. Returns a "reader" object that is connected to the resulting row set within the database, allowing the rows to be retrieved.
. ExecuteScalar: -
Executes the command defined in the Command Text property against the connection defined in the Connection property. Returns only single value (effectively the first column of the first row of the resulting row set any other returned columns and rows are discarded. It is fast and efficient when only a "singleton" value is required

 

(B) What is the use of data adapter?


These objects connect one or more Command objects to a Dataset object. They provide logic that would get data from the data store and populates the tables in the Dataset, or pushes the changes in the Dataset back into the data store.
. An OleDbDataAdapter object is used with an OLE-DB provider
. A SqlDataAdapter object uses Tabular Data Services with MS SQL Server.

 

(B) What are basic methods of Data adapter?


There are three most commonly used methods of Data adapter:-
Fill: -
Executes the Select Command to fill the Dataset object with data from the data source. It an also be used to update (refresh) an existing table in a Dataset with changes made to the data in the original data source if there is a primary key in the table in the Dataset.
FillSchema :-
Uses the SelectCommand to extract just the schema for a table from the data source, and creates an empty table in the DataSet object with all the corresponding constraints.Update:- Calls the respective InsertCommand, UpdateCommand, or DeleteCommand for each inserted, updated,or deleted row in the DataSet so as to update the original data source with the changes made to the content of the DataSet. This is a little like the UpdateBatch method provided by the ADO Recordset object, but in the DataSet it can be used to update more than one table.

 

(B) What is Dataset object?


The Dataset provides the basis for disconnected storage and manipulation of relational data. We fill it from a data store, work with it while disconnected from that data store, then reconnect and flush changes back to the data store if required.

 

(B) What are the various objects in Dataset?


Dataset has a collection of Data Table object within the Tables collection. Each Data Table object contains a collection of Data Row objects and a collection of Data Column objects. There are also collections for the primary keys, constraints, and default values used in this table, which is called as constraint collection, and the parent and child relationships between the tables. Finally, there is a Default View object for each table. This is used to create a Data View object based on the table, so that the data can be searched, filtered, or otherwise manipulated while displaying the data.
Note: - Look back again to the main diagram for ADO.NET architecture for visualizing this answer in pictorial form.

 

(B) How can we connect to Microsoft Access, FoxPro, and Oracle etc?


Microsoft provides System.Data.OleDb namespace to communicate with databases like success , Oracle etc. In short, any OLE DB-Compliant database can be connected using System.Data.OldDb namespace.
Note :- Small sample of OLEDB is provided in "WindowsAppOleDb" which uses "Nwind.mdb" in bin directory to display data in Listbox.


Private Sub loadData()
Dim strPath As String
strPath = AppDomain.CurrentDomain.BaseDirectory
Dim objOLEDBCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & strPath & "Nwind.mdb")
Dim objOLEDBCommand As OleDbCommand
Dim objOLEDBReader As OleDbDataReader
Try

objOLEDBCommand = New OleDbCommand("Select FirstName from Employees")
objOLEDBCon.Open()
objOLEDBCommand.Connection = objOLEDBCon

objOLEDBReader = objOLEDBCommand.ExecuteReader()
Do While objOLEDBReader.Read()
lstNorthwinds.Items.Add(objOLEDBReader.GetString(0))
Loop
Catch ex As Exception
Throw ex
Finally
objOLEDBCon.Close()
End Try

End Sub



The main heart is the "Load data ()" method which actually loads the data in list box.
Note:- This source code has the connectionstring hard coded in the program itself which is not a good programming practice. For windows application the best place to store connectionstring is "App.config". Also note that "AppDomain.CurrentDomain.BaseDirectory" function gives the current path of the running exe which is "BIN" and the MDB file is in that directory. Also note that the final block which executes irrespective that there is error or not. Thus ensuring that all the connection to the datastore is freed. Its best practice to put all clean up statements in finally block thus ensuring that the resources are deallocated properly.

 

(B) How do we connect to SQL SERVER, which namespace do we use?


Below is the code, after the code we will try to understand the same in a more detailed manner. For this sample, we will also need a SQL Table setup, which I have imported, using the DTS wizard.
Private Sub LoadData()
' note :- with and end with makes your code more readable
Dim strConnectionString As String
Dim objConnection As New SqlConnection
Dim objCommand As New SqlCommand
Dim objReader As SqlDataReader
Try
' this gets the connectionstring from the app.config file.
' note if this gives error see where the MDB file is stored in your pc and point to thastrConnectionString = AppSettings.Item("ConnectionString")
' take the connectiostring and initialize the connection object
With objConnection
.ConnectionString = strConnectionString
.Open()
End With
objCommand = New SqlCommand("Select FirstName from Employees")
With objCommand
.Connection = objConnection
objReader = .ExecuteReader()
End With
' looping through the reader to fill the list box
Do While objReader.Read()
lstData.Items.Add(objReader.Item("FirstName"))
Loop
Catch ex As Exception
Throw ex
Finally
objConnection.Close()
End Try





Note:- The above code is provided in CD in folder WindowsAppSqlClient". Comments in the code do explain a lot but we will again iterate through the whole code later. "LoadData" is the main method which loads the data from SQL SERVER. Before running this code you have to install SQL SERVER in your machine. As we are dealing with SQLCLIENT we need to setup database in SQL SERVER. For this sample I have imported access "Nwind.mdb" in "SampleAccessDatabase" folder in CD in toSQlSERVER. Depending on computer you will also have to change the connectionstring in Web.config file.

For setting up the sample SQL table, we can use the DTS import wizard to import the table. See the below figure which is using data source as Microsoft Access. While importing the database author had, give the database name as "Employees".
Figure: - 9.2 Loading "Nwind.mdb" in SQL SERVER for the sample

Figure :- 9.3 Load only the Employee table.

To make it simple we will only import the employee table as that is the only thing needed in our sample code.

Figure: - 9.4 View of loaded Employee table


Now from interview point of view definitely you are not going to say the whole source code, which is given in the book. Interviewer expects only the broader answer of what are the steps needed to connect to SQL SERVER. For fundamental sake author has explained the whole source code. In short, you have to explain the "Load Data" method in broader way. Following are the steps to connect to SQL SERVER:-
. First imports the namespace "System.Data.SqlClient".
. Create a connection object as shown in "Load Data" method.
With objConnection
.Connection String = strConnectionString
.Open ()
End With


. Create the command object with the SQL. Also, assign the created connection object to command object and execute the reader.
ObjCommand = New SqlCommand ("Select First Name from Employees")
With objCommand
.Connection = objConnection
Breeder = .Execute Reader ()
End With

. Finally loop through the reader and fill the list box. If old VB programmers are expecting the move next command it is replaced by Read () which returns true if there is any data to be read. If the .Read () return is false that means that it's end of data reader and there is no more data to be read.


Do while objReader.Read ()
lstData.Items.Add (objReader.Item ("First Name"))
Loop
. Do not forget to close the connection object.
Note:- In "LoadData" you will see that connectionstring is stored in Web.config file and is loaded using "AppSettings.Item("ConnectionString")". While running this sample live on your database do not forget to change this connectionstring accordingly to your machine name and SQL SERVER or else the source code will not run.

 

ado.net questions and answers

Question:-How ADO.NET come into existence ?
Answer: DAO (data access model) is the first Data Access Model that is created for local databases which contains built-in Jet engine which overcome with some problem like performance and functionality issues. After this RDO (Remote Data Object) and ADO (Active Data Object) comes in market which basically designed for Client Server applications but soon ADO is more comfort then RDO. ADO a good architecture. ADO contained all the data in a recordset object which creates problems when implemented on the network where firewalls exist. Because ADO was a connected data access, which make connection open until the application is closed. This creates issue like database security and network traffic. Because open database connections use system resources to a maximum extent making the system performance less effective. This helps in developing of ADO.NET.

Question: What is Asynchronous Database Commands ? Answer:- When we execute any database. Thread that executing the command waits before the command get fully executing before executing any additional code. Thread is blocked for another process. But Asynchronous Database Commands solve this problem when database command is executing the current thread can continue on other process.Thread can execute a no of database command. There are two benefits of using Asynchronous Database Commands.1) Executing Multiple Databse Commands simultaneously improve performance.2) Because ASP.Net framework uses a limited pool service for request. Whenany request for a page is comes its assign a thread to handle the request. If framework is out of thread then job is in gueses we get error 503. But if we are using asynchronous database command then current thread is release back to current thread pool.Question:-What is Concurrency and its types?Answer: When two or more people try to update same type of data then Concurrency helps how to handle this situation there are two types of concurrencyPessimistic:-When one user try to change the data with pessimistic concurrency a lock is placed on the data so that another user cannot change that one after one another can change.
Optimistic:-In this if two user works on the same data and one change that data first then second user cannot change that same data becasue the which he have using is allready changed so he cannot do the change becasue change apply to another data that is changed by first user.

Question: How to start Outlook,NotePad file in AsP.NET with code ?
Answer: Here is the syntax to open outlook or notepad file in ASP.NET VB.NET Process.Start("Notepad.exe") Process.Start("msimn.exe"); C#.NET System.Diagnostics.Process.Start("msimn.exe"); System.Diagnostics.Process.Start("Notepad.exe");
Question: How to get result from two table in SqlDataReader ?
Answer: string str="Select * from table1;Select * from table2"; cmd.commandtext=str; dr=cmd.executereader();
Question: What is Ref Cursor in .NET and how it is link with ExecuteReader ?
Answer: Ref cursor play its role when doing with the oracle database these comes in ODP.NET. Ref Cursors are objects that link to Oracle server-side cursors.These Ref Cursor can be converted in oracle datareader with this Ref cursor we can get result with query written to pl/sql and the result can be get in .net.Now the question arise why we use Ref Cursor when we have an option of ExceuteReader reson is simple when we need more query in pl/sql means our work is done in pl/sql then we need this ref cursor for getting result set because doennot have direct connection to that table.Becasue advantage of pl/sql we can take two opertion in one query.
Question: Define tool Manage Statistics in SQL Serevr 2000 query ?
Answer: SQL Server creates internal statistics on the rows in all of our tables that is used by the Query Optimizer to select the optimal execution plan for our query. And Query Optimizer helps in doing this.Soome time when statistics isnot maintains then this is done by tool Manage Statistics.We can add,edit or delete for statistics that is maintained by SQL Server.We can experiment with different sets of statistics and see how it affects the query otimizer execution plans.
Question: Some important instruction regarding ADO.NET connection string ?
Answer: When we are making connection string always use Server's IP address not the DNS name if we use IP address it will reduce the time taken for connection to establish.Becasue server IP address is used to get a default or named instance of Sql Server that ls running. if we are running the cluster we have to use the Virtual SQL Server IP address.
Question: How to get database schema information when connection object is establish in ADO.NET ?
Answer: There is a method that helps in getting schema information that is GetSchema() and this method is called in three different ways first way when we call this method without any parameter its return the metadata(table, view, stored procedure.indexes etc).When method is called by passing metadata collection name and filter criteria returns the items from the collection after applying the filter criteria and last way is when we called by passing a metadata collection name returns information about items found in the specified collection.
Question: Which one is better WebService and Remoting ?
Answer: Both of these have little difference WebService helpfull where the user who is using WebService doesnot have the .NET plateform. On the otherside for remoting we need .Net plateform on the both side so from both of this remoting is faster then webservice.So keep in mind which of these are you using if you have .net plateform or other.

Question:-What is DataGrid wheater its a Server Control or something else ?
Answer:DataGrid is Web server control a powerful tool for displaying information from a data source. we can display editable data in a professional-looking grid by setting only a few properties. The grid has a sophisticated object model that provides you with great flexibility in how you display the data.

Question:-Define different execute methods of ADO.NET command object ?
Answer: ExecuteScalar:- This method returns a single value from the first row and first column of the result get from the execution of SQL query.
ExecuteNonQuery:- This method executes the DML SQL query just like insert, delete or update and then returns the number of rows affected by the action.
ExecuteReader:- This method returns DataReader object which is a forward-only resultset.
ExecuteXMLReader:- This method is available for SQL Server 2000 or later. Upon execution it builds XMLReader object from standard SQL query.


Question:-What DataReader class do in ADO.NET ?
Answer:To get read-only and forward only access to data we use DataReader .the DataReader object reduces the system overhead because one row at a time is taken into memory so it is quite lightweight. To get second object connection is reconnected. We can create a DataReader object by execute Execute readre() method. There are two Data Reader class one is SqlDataReader and other is OleDbDataReader.

Question:-Why is ADO.NET serialization slower than ADO ?
Answer: ADO uses binary serialization while ADO.NET uses text based serialization. Since the text takes more space, it takes longer to write it out.


Question:-Is XML is a component of ADO.NET ?
Answer: The answer of this question is always Yes because XML is an important component of ADO.NET architecture .ADO.NET use XML to store and transfer data.We not have to convert data to XML format.Datasets helps XML to integrate with ADO.NET. XML schema plays a role to get table definition,column,datatypes and constraints helps DataSet.

Question:- How to check if the Dataset has records ?
Answer:
if ds.Tables(0).Rows.Count= 0 then
'No record
else
'record found

Question:- What is the significance of CommandBehavior.CloseConnection ?
Answer: To avoid having to explicitly close the connection associated with the command used to create either a SqlDataReader or and OleDbDataReader, pass the CommandBehavior.CloseConnection argument to the ExecuteReader method of the Connection.

dr= cmd.ExecuteReader(CommandBehavior.CloseConnection);

The associated connection will be closed automatically when the Close method of the Datareader is called. This makes it all the more important to always remember to call Close on your datareaders.

Question:-Which method do you invoke on the DataAdapter control to load your generated dataset with data?
Answer: The Fill() method.

Question:-What is Dataset and Diffgram?
Answer: When sending and retrieving a DataSet from an XML Web service, the DiffGram format is implicitly used. Additionally, when loading the contents of a DataSet from XML using the ReadXml method, or when writing the contents of a DataSet in XML using the WriteXml method, you can select that the contents be read or written as a DiffGram. For more information, see Loading a DataSet from XML and Writing a DataSet as XML Data. While the DiffGram format is primarily used by the .NET Framework as a serialization format for the contents of a DataSet, you can also use DiffGrams to modify data in tables in a Microsoft SQL Server™ 2000 database.

Question:-What is typed dataset ?
Answer: A typed dataset is very much similar to a normal dataset. But the only difference is that the sehema is already present for the same. Hence any mismatch in the column will generate compile time errors rather than runtime error as in the case of normal dataset. Also accessing the column value is much easier than the normal dataset as the column definition will be available in the schema.

Question:-How can you provide an alternating color scheme in a Repeater control?
Answer: AlternatingItemTemplate Like the ItemTemplate element, but rendered for every other row (alternating items) in the Repeater control. You can specify a different appearance for the AlternatingItemTemplate element by setting its style properties.

Question:-What are good ADO.NET object(s) to replace the ADO Recordset object?
Answer: There are alot...but the base once are SqlConnection, OleDbConnection, etc...

Question:-Can you explain the difference between an ADO.NET Dataset and an ADO Recordset?
Answer:Valid answers are:
· A DataSet can represent an entire relational database in memory, complete with tables, relations, and views.
· A DataSet is designed to work without any continuing connection to the original data source.
· Data in a DataSet is bulk-loaded, rather than being loaded on demand.
· There's no concept of cursor types in a DataSet.
· DataSets have no current record pointer You can use For Each loops to move through the data.
· You can store many edits in a DataSet, and write them to the original data source in a single operation.
· Though the DataSet is universal, other objects in ADO.NET come in different versions for different data sources.
Question:-What are the differences between Datalist DataGrid and datarepeater ?
Answer:DataList
· Has table appearence by default
· Has no autoformat option
· has no default paging & sorting options
· can define separators between elements using template
DataGrid
· Has a grid appearence by default
· has a autoformat option
· has default paging and sorting
· has no separator between elements
DataRepeater
· simple,read-only output, has no built in support for selecting or editing items, has no DEFAULT APPEARENCE, has no default paging. 













1. Explain the .NET architecture.


2. How many languages .NET is supporting now?

When .Net was introduced it came with some 16 languages. VB.NET, C#, COBOL and PERL etc
3. How .NET is able to support multiple languages?

A language should comply the Common Language Runtime standard to become a .NET language.
In .NET, code is compiled to Microsoft Intermediate Language (MSIL for short)
This is called as Managed Code.
This Managed code is run in .NET environment. So after compilation to this IL the language is not a barrier.
A code can call / use a function written in another language.

4. How ASP .NET different from ASP?

Scripting is separated from the HTML
Code is compiled as a DLL
So advantages of compiled
These DLLs can be ached in the server.

5. Resource Files: How to use the resource files, how to know which language to use?


6. What is smart navigation?

The cursor position is maintained when the page gets refreshed due to the server side validation and the page gets refreshed.

7. What is view state?

The web is stateless. But in ASP.NET, the state of a page is maintained in the in the page itself automatically.
How? The values are encrypted and saved in hidden controls. this is done automatically by the ASP.NET
This can be switched off / on for a single control

8. Explain the life cycle of an ASP .NET page.


9. How do you validate the controls in an ASP .NET page?

Using special validation controls that are meant for this. We have Range Validator, Email Validator,

10. Can the validation be done in the server side? Or this can be done only in the Client side?

Client side is done by default. Server side validation is also possible. We can switch off the client side and server side can be done.

11. How to manage pagination in a page?

Using pagination option in DataGrid control.
We have to set the number of records for a page, then it takes care of pagination by itself.

12. What is ADO .NET and what is difference between ADO and ADO.NET?

ADO.NET is stateless mechanism. I can treat the ADO.Net as a separate in-memory database where in I can use relationships between the tables and select insert and updates to the database. I can update the actual database as a batch.

WCF INTERVIEW QUESTION


What is Proxy and how to generate proxy for WCF Services?
 
The proxy is a CLR class that exposes a single CLR interface representing the service contract. The proxy provides the same operations as service's contract, but also has additional methods for managing the proxy life cycle and the connection to the service. The proxy completely encapsulates every aspect of the service: its location, its implementation technology and runtime platform, and the communication transport.
 
The proxy can be generated using Visual Studio by right clicking Reference and clicking on Add Service Reference. This brings up the Add Service Reference dialog box, where you need to supply the base address of the service (or a base address and a MEX URI) and the namespace to contain the proxy.
 
Proxy can also be generated by using SvcUtil.exe command-line utility. We need to provide SvcUtil with the HTTP-GET address or the metadata exchange endpoint address and, optionally, with a proxy filename. The default proxy filename is output.cs but you can also use the /out switch to indicate a different name.
 
SvcUtil http://localhost/MyService/MyService.svc /out:Proxy.cs
 
When we are hosting in IIS and selecting a port other than port 80 (such as port 88), we must provide that port number as part of the base address:
 
SvcUtil http://localhost:88/MyService/MyService.svc /out:Proxy.cs
 
What are contracts in WCF?
 
In WCF, all services expose contracts. The contract is a platform-neutral and standard way of describing what the service does.
 
WCF defines four types of contracts.
 
 
Service contracts
 
Describe which operations the client can perform on the service.
There are two types of Service Contracts.
ServiceContract - This attribute is used to define the Interface.
OperationContract - This attribute is used to define the method inside Interface.
 
[ServiceContract]
interface IMyContract
{
   [OperationContract]
   string MyMethod( );
}
class MyService : IMyContract
{
   public string MyMethod( )
   {
      return "Hello World";
   }
}
 
 
Data contracts
 
Define which data types are passed to and from the service. WCF defines implicit contracts for built-in types such as int and string, but we can easily define explicit opt-in data contracts for custom types.
 
There are two types of Data Contracts.
DataContract - attribute used to define the class
DataMember - attribute used to define the properties.
 
[DataContract]
class Contact
{
   [DataMember]
   public string FirstName;
 
   [DataMember]
   public string LastName;
}
 
If DataMember attributes are not specified for a properties in the class, that property can't be passed to-from web service.
 
Fault contracts
 
Define which errors are raised by the service, and how the service handles and propagates errors to its clients.
 
 
Message contracts
 
Allow the service to interact directly with messages. Message contracts can be typed or untyped, and are useful in interoperability cases and when there is an existing message format we have to comply with.
 
What is the address formats of the WCF transport schemas?
 
Address format of WCF transport schema always follow
 
[transport]://[machine or domain][:optional port] format.
 
for example:
 
HTTP Address Format
 
http://localhost:8888
the way to read the above url is
 
"Using HTTP, go to the machine called localhost, where on port 8888 someone is waiting"
When the port number is not specified, the default port is 80.
 
TCP Address Format
 
net.tcp://localhost:8888/MyService
 
When a port number is not specified, the default port is 808:
 
net.tcp://localhost/MyService
 
NOTE: Two HTTP and TCP addresses from the same host can share a port, even on the same machine.
 
IPC Address Format
net.pipe://localhost/MyPipe
 
We can only open a named pipe once per machine, and therefore it is not possible for two named pipe addresses to share a pipe name on the same machine.
 
MSMQ Address Format
net.msmq://localhost/private/MyService
net.msmq://localhost/MyService
 
How to define a service as REST based service in WCF?
 
WCF 3.5 provides explicit support for RESTful communication using a new binding named WebHttpBinding.
The below code shows how to expose a RESTful service
 
[ServiceContract]
interface IStock
{
[OperationContract]
[WebGet]
int GetStock(string StockId);
}
 
By adding the WebGetAttribute, we can define a service as REST based service that can be accessible using HTTP GET operation.
 
What is endpoint in WCF?
Posted by: Poster | Show/Hide Answer
Every service must have Address that defines where the service resides, Contract that defines what the service does and a Binding that defines how to communicate with the service. In WCF the relationship between Address, Contract and Binding is called Endpoint.
 
The Endpoint is the fusion of Address, Contract and Binding.
 
What is binding and how many types of bindings are there in WCF?
 
A binding defines how an endpoint communicates to the world. A binding defines the transport (such as HTTP or TCP) and the encoding being used (such as text or binary). A binding can contain binding elements that specify details like the security mechanisms used to secure messages, or the message pattern used by an endpoint.
 
WCF supports nine types of bindings.
 
Basic binding
 
Offered by the BasicHttpBinding class, this is designed to expose a WCF service as a legacy ASMX web service, so that old clients can work with new services. When used by the client, this binding enables new WCF clients to work with old ASMX services.
 
TCP binding
 
Offered by the NetTcpBinding class, this uses TCP for cross-machine communication on the intranet. It supports a variety of features, including reliability, transactions, and security, and is optimized for WCF-to-WCF communication. As a result, it requires both the client and the service to use WCF.
 
 
Peer network binding
 
Offered by the NetPeerTcpBinding class, this uses peer networking as a transport. The peer network-enabled client and services all subscribe to the same grid and broadcast messages to it.
 
 
IPC binding
 
Offered by the NetNamedPipeBinding class, this uses named pipes as a transport for same-machine communication. It is the most secure binding since it cannot accept calls from outside the machine and it supports a variety of features similar to the TCP binding.
 
 
Web Service (WS) binding
 
Offered by the WSHttpBinding class, this uses HTTP or HTTPS for transport, and is designed to offer a variety of features such as reliability, transactions, and security over the Internet.
 
 
Federated WS binding
 
Offered by the WSFederationHttpBinding class, this is a specialization of the WS binding, offering support for federated security.
 
 
Duplex WS binding
 
Offered by the WSDualHttpBinding class, this is similar to the WS binding except it also supports bidirectional communication from the service to the client.
 
 
MSMQ binding
 
Offered by the NetMsmqBinding class, this uses MSMQ for transport and is designed to offer support for disconnected queued calls.
 
 
MSMQ integration binding
 
Offered by the MsmqIntegrationBinding class, this converts WCF messages to and from MSMQ messages, and is designed to interoperate with legacy MSMQ clients.
 
For WCF binding comparison, see http://www.pluralsight.com/community/blogs/aaron/archive/2007/03/22/46560.aspx
 
Where we can host WCF services?
Posted by: Poster | Show/Hide Answer
Every WCF services must be hosted somewhere. There are three ways of hosting WCF services.
 
They are
 
1. IIS
2. Self Hosting
3. WAS (Windows Activation Service)
 
For more details see http://msdn.microsoft.com/en-us/library/bb332338.aspx
 
What is address in WCF and how many types of transport schemas are there in WCF?
 
Address is a way of letting client know that where a service is located. In WCF, every service is associated with a unique address. This contains the location of the service and transport schemas.
 
WCF supports following transport schemas
 
HTTP
TCP
Peer network
IPC (Inter-Process Communication over named pipes)
MSMQ
 
The sample address for above transport schema may look like
 
http://localhost:81
http://localhost:81/MyService
net.tcp://localhost:82/MyService
net.pipe://localhost/MyPipeService
net.msmq://localhost/private/MyMsMqService
net.msmq://localhost/MyMsMqService
 
What is service and client in perspective of data communication?
 
A service is a unit of functionality exposed to the world.
 
The client of a service is merely the party consuming the service.
 
What is WCF?
 
Windows Communication Foundation (WCF) is an SDK for developing and deploying services on Windows. WCF provides a runtime environment for services, enabling you to expose CLR types as services, and to consume other services as CLR types.
 
 
Difference between WCF and Web services?
Web Services
 
1.It Can be accessed only over HTTP
2.It works in stateless environment
 
WCF
 
WCF is flexible because its services can be hosted in different types of applications. The following lists several common scenarios for hosting WCF services:
IIS
WAS
Self-hosting
Managed Windows Service
 
What are the various ways of hosting a WCF service?
Self hosting the service in his own application domain. This we have already covered in the first section. The service comes in to existence when you create the object of ServiceHost class and the service closes when you call the Close of the ServiceHost class.
Host in application domain or process provided by IIS Server.
Host in Application domain and process provided by WAS (Windows Activation Service) Server.
 
What is three major points in WCF?
We Should remember ABC.
 
Address --- Specifies the location of the service which will be like http://Myserver/MyService.Clients will use this location to communicate with our service.
 
Binding --- Specifies how the two paries will communicate in term of transport and encoding and protocols
 
Contract --- Specifies the interface between client and the server.It's a simple interface with some attribute.
 
What is the difference WCF and Web services?
Web services can only be invoked by HTTP (traditional webservice with .asmx). While WCF Service or a WCF component can be invoked by any protocol (like http, tcp etc.) and any transport type.
 
Second web services are not flexible. However, WCF Services are flexible. If you make a new version of the service then you need to just expose a new end. Therefore, services are agile and which is a very practical approach looking at the current business trends.
 
We develop WCF as contracts, interface, operations, and data contracts. As the developer we are more focused on the business logic services and need not worry about channel stack. WCF is a unified programming API for any kind of services so we create the service and use configuration information to set up the communication mechanism like HTTP/TCP/MSMQ etc
 
 
What are various ways of hosting WCF Services?
There are three major ways of hosting a WCF services
 
• Self-hosting the service in his own application domain. This we have already covered in the first section. The service comes in to existence when you create the object of Service Host class and the service closes when you call the Close of the Service Host class.
 
• Host in application domain or process provided by IIS Server.
 
• Host in Application domain and process provided by WAS (Windows Activation Service) Server.
 
 
What was the code name for WCF?
The code name of WCF was Indigo .
 
WCF is a unification of .NET framework communication technologies which unites the following technologies:-
 
NET remoting
MSMQ
Web services
COM+
 
What are the main components of WCF?
Posted by: Raja | Show/Hide Answer
The main components of WCF are
 
1. Service class
2. Hosting environment
3. End point
 
For more details read http://www.dotnetfunda.com/articles/article221.aspx#WhatarethemaincomponentsofWCF
 
How to set the timeout property for the WCF Service client call?
Posted by: Poster | Show/Hide Answer
The timeout property can be set for the WCF Service client call using binding tag.
 
  
      ...
      binding = "wsHttpBinding"
      bindingConfiguration = "LongTimeout"
      ...
   />
  
     
  
 
If no timeout has been specified, the default is considered as 1 minute.
 
How to deal with operation overloading while exposing the WCF services?
Posted by: Poster | Show/Hide Answer
By default overload operations (methods) are not supported in WSDL based operation. However by using Name property of OperationContract attribute, we can deal with operation overloading scenario.
 
[ServiceContract]
interface ICalculator
{
   [OperationContract(Name = "AddInt")]
   int Add(int arg1,int arg2);
 
   [OperationContract(Name = "AddDouble")]
   double Add(double arg1,double arg2);
}
 
 
Notice that both method name in the above interface is same (Add), however the Name property of the OperationContract is different. In this case client proxy will have two methods with different name AddInt and AddDouble.
 
How to configure Reliability while communicating with WCF Services?
Posted by: Poster | Show/Hide Answer
Reliability can be configured in the client config file by adding reliableSession under binding tag.
 
  
     
        
            address = "net.tcp://localhost:8888/MyService"
            binding = "netTcpBinding"
            bindingConfiguration = "ReliableCommunication"
            contract = "IMyContract"
         />
     
  
  
     
         
           
        
     
  
 
Reliability is supported by following bindings only
 
NetTcpBinding
WSHttpBinding
WSFederationHttpBinding
WSDualHttpBinding
 
What is Transport and Message Reliability?
Transport reliability (such as the one offered by TCP) offers point-to-point guaranteed delivery at the network packet level, as well as guarantees the order of the packets. Transport reliability is not resilient to dropping network connections and a variety of other communication problems.
 
Message reliability deals with reliability at the message level independent of how many packets are required to deliver the message. Message reliability provides for end-to-end guaranteed delivery and order of messages, regardless of how many intermediaries are involved, and how many network hops are required to deliver the message from the client to the service.
 
What are different elements of WCF Srevices Client configuration file?
WCF Services client configuration file contains endpoint, address, binding and contract. A sample client config file looks like
 
  
     
         address = "http://localhost:8000/MyService/"
         binding = "wsHttpBinding"
         contract = "IMyContract"
      />
  
 

Sharepoint Question & Answer


 What is SharePoint?
Portal Collaboration Software.

• What is the difference between SharePoint Portal Server and Windows SharePoint Services?
SharePoint Portal Server is the global portal offering features like global navigation and searching. Windows SharePoint Services is more content management based with document libraries and lists. You apply information to certain areas within your portal from Windows SharePoint Services or directly to portal areas.

• What is a web part zone?
Web part zones are what your web parts reside in and help categorize your web parts when designing a page.

• How is security managed in SharePoint?
Security can be handled at the machine, domain, or sharepoint level.

• How are web parts developed?
Web parts are developed in Visual Studio .Net. VS.Net offers many web part and page templates and can also be downloaded from the Microsoft site.
• What is a SharePoint farm?
Multiple machines running services for SharePoint. Otherwise known as Topology.
• What is a site definition?
It’s a methods for providing prepackaged site and list content.

• What is a template?
A template is a pre-defined set of functions or settings that can be used over time. There are many templates within SharePoint, Site Templates, Document Templates, Document Library and List Templates.

• How do you install web parts?
Web Parts should be distributed as a .CAB (cabinet) file using the MSI Installer.

• What is the difference between a site and a web?
The pages in a Web site generally cover one or more topics and are interconnected through hyperlinks. Most Web sites have a home page as their starting point. While a Web is simply a blank site with SharePoint functionality built in; meaning you have to create the site from the ground up.

• What are the differences between web part page gallery, site gallery, virtual server gallery and online gallery?
Web Part Page Gallery is the default gallery that comes installed with SharePoint. Site Gallery is specific to one site. Virtual Server gallery is specific to that virtual server and online gallery are downloadable web parts from Microsoft.

• What is the GAC?
Global Assembly Cache folder on the server hosting SharePoint. You place your assemblies there for web parts and services.

• What is a DWP?
The file extension of a web part.

• What is CAML?
Stands for Collaborative Application Markup Language and is an XML-based language that is used in Microsoft Windows SharePoint Services to define sites and lists, including, for example, fields, views, or forms, but CAML is also used to define tables in the Windows SharePoint Services database during site provisioning.

• What is a document library?
A document library is where you upload your core documents. They consist of a row and column view with links to the documents. When the document is updated so is the link on your site. You can also track metadata on your documents. Metadata would consist of document properties.

• What is a meeting workspace?
A meeting workspace is a place to store information, attendees, and tasks related to a specific meeting.

• What is a document workspace?
Document workspaces consist of information surrounding a single or multiple documents.

• What is a web part?
Web parts consist of xml queries to full SharePoint lists or document libraries. You can also develop your own web parts and web part pages.

• What is the difference between a document library and a form library?
Document libraries consist of your core documents. An example would be a word document, excel, powerpoint, visio, pdf, etc… Form libraries consist of XML forms.

• What are themes?
Themes provide a quick a easy way to change the appearance of your SharePoint site
.
• What is presence?
Allows users to see if other users are online and can send them instant messages.

• Can web parts be connected? if so, how?
Web Parts can be connected by Modifying the Shared Part and providing the connection with the correct fields to share.

• What is a personal view and what is a shared view?
Personal views are specific to a user while Shared View is common across all users.

• What is an STP file?
The file extension that applies to site templates.

• What is an FWP file?
The file extension that applies to SharePoint sites that have been backed up.

• How does SharePoint support MS Outlook integration?
Via Web Parts available at the Microsoft Web Component Directory. Oh yeah and Active X Controls.

• How can you extend lists in SharePoint?
If you mean extend by adding columns of data and have specific data types for each column the answer is yes. You can also use Data Views in FrontPage 2003 to pull in XML data from other sites, lists or document libraries to make the information more presentable for users.

• Explain the document versioning in SharePoint document libraries
When versioning is enabled everytime the document is edited from the SharePoint site it creates a new version. You can restore or delete old versions of documents. Version numbers are incremented by the system itself.

• Where are web part resources contained?
The SharePoint file system, SQL, and the GAC folder. They are also referenced in the web.config folder.

• What are the different installation methods for deploying web parts? and what are the pros/cons?
The best way is via a CAB file using the MSI Installer.

• What is a ghosted/unghosted page?
Page that is created from a template oppsed to being created from scratch.

• How is site data stored?
Site data is stored in your content database that either resides in SQL Server 2000 or MSDE.

 • Where is metadata for a web stored?
In the content databases stored in SQL.

• What is an audience and describe the use?
Audiences are a pre-defined set of users that you can apply information to. You can apply information to their personal sites as well for dailey information or job tasks.

• What are the trust levels and what is the default trust associated with SharePoint?
SSL and the basic IIS security. SharePoint comes with Integrated Windows Authentication turned on.

• What are the two logging mechanisms for usage statistics?
By default creates log files in the \%windir%\system32\LogFiles\STS directory on the front-end Web server, although an alternate location can be specified. The STS directory contains a folder for each virtual server on the Web server, each named with a GUID that identifies the respective virtual server. Each virtual server folder contains subfolders for each day, which in turn contain the daily usage log for each virtual server. In addition to containing information per virtual server, the Windows SharePoint Services logs are also useful because they associate users with page hits and with time stamps. what functionality does owssup.dll provide for client side activities?

• What is STSAdm and what can it be used for?
STSADMIN is a tool that can do many things from a command prompt like manage users, create new sites and add files to the file system.
• Can WSS search subsites?
Not without the new CorasWorks Search Web Part.
• Can you register alerts for users?
Not unless you are logged in as that user.

• Are PDFs searchable?
Out of the box only the metadata collected in the upload form is search able. Unless you download and install the Adobe iFilter.
• Describe a large deployment
Many front-end webserver with a SQL cluster with the possibility of multiple international locations.
 
• How can you synchronize custom Active Directory attributes to SharePoint?
Via the Profile Importer.

• If it is anticipated that our organization would need to store 1 terrabyte of documents, what is the recommended configuration and storage requirement?
Multiple front-end web servers with content databases across the server farm. The amount of web-servers can depend on how many users you have and what the typical size of a document is.

• Explain how you would deploy SharePoint on an extranet
Usually servers that are accessible from external sources are housed in DMZ’s. Depending on the requirements and the workflow for publishing content you could go with Multiple Servers hosting the same information. One server would reside inside with the SQL Cluster while the external server resides in the DMZ simply calling data. Security would be handled by the same or different active directory domain clusters as well increasing security.
• What is the BKM for maximum number of virtual servers configured for SharePoint on a single box?
I believe its 15.
• what are the migration strategies for moving sites around?
You could use the SharePoint Portal Server backup and restore tool as well as the STSADMIN and GUI STSAMIN tools. We have migrated databased from the SQL Level and have simply reconnected the front end.

SharePoint General Questions


What does partial trust mean the Web Part developer?

If you install assemblies into the BIN directory, you must ensure your code provides error handling in the event that required permissions are not available. Otherwise, unhandled security exceptions may cause your Web Part to fail and may affect page rendering on the page where the Web Part appears.

The following is a typical example of a security exception:

Request for the permission of type
  Microsoft.SharePoint.Security.SharePointPermission,
  Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral,
  PublicKeyToken=71e9bce111e9429c failed
As stated previously, the WSS_Minimal trust level does not grant permission to the SharePointPermission.ObjectModel to assemblies in the BIN directory for an application. Therefore, if your code attempts to use the Microsoft SharePoint object model, the common language runtime (CLR) throws an exception.

Since the minimal permission set provides the smallest set of permissions required for code to execute, the likelihood of additional security exceptions is increased.

Recommendation   Try-catch critical areas to address situations where you may not have the necessary permissions to accomplish a specified objective.

What if my assemblies are installed in the GAC?

By default, assemblies installed in the global assembly cache (GAC) run with Full trust. Although, installing your Web Part assembly in the GAC is a viable option, it is recommended that you install Web Part assemblies in the BIN directory for a more secure deployment.

How can I raise the trust level for assemblies installed in the BIN directory?

Windows SharePoint Services can use any of the following three options from ASP.NET and the CLR to provide assemblies installed in the BIN directory with sufficient permissions. The following table outlines the implications and requirements for each option.

Option Pros Cons
Increase the trust level for the entire virtual server. For more information, see "Setting the trust level for a virtual server" Easy to implement.
In a development environment, increasing the trust level allows you to test an assembly with increased permissions while allowing you to recompile assemblies directly into the BIN directory without resetting IIS.
 This option is least secure.
This option affects all assemblies used by the virtual server.

There is no guarantee the destination server has the required trust level. Therefore, Web Parts may not work once installed on the destination server.

Create a custom policy file for your assemblies. For more information, see "How do I create a custom policy file?" Recommended approach.
This option is most secure.

An assembly can operate with a unique policy that meets the minimum permission requirements for the assembly.

By creating a custom security policy, you can ensure the destination server can run your Web Parts.
 Requires the most configuration of all three options.
Install your assemblies in the GAC Easy to implement.
This grants Full trust to your assembly without affecting the trust level of assemblies installed in the BIN directory.
 This option is less secure.
Assemblies installed in the GAC are available to all virtual servers and applications on a server running Windows SharePoint Services. This could represent a potential security risk as it potentially grants a higher level of permission to your assembly across a larger scope than necessary

In a development environment, you must reset IIS every time you recompile assemblies.

Licensing issues may arise due to the global availability of your assembly.



I changed the trust level in the web.config file—now my entire site fails to render. What should I do?

If you change the trust level in the web.config file, Windows SharePoint Services may fail to render on subsequent requests. The following is an example of a typical error:

Assembly security permission grant set is incompatible
  between appdomains.
To resolve the conflicting trust setting, reset Internet Information Services (IIS) such as by using iisreset.

Note   This is a known issue related to the architecture of ASP.NET and the .NET Framework.

How do I create a custom policy file?

To customize one of the built-in policy files, it is recommended that you make a copy of it and make changes to the copy to ensure that you can reuse the original file if necessary.

The following procedure describes how to give access to the Microsoft SharePoint object model to a specific assembly.

To give access to an assembly

Copy the wss_minimaltrust.config file.
Rename the file new_file_name.config.
Using a text editor such as NotePad, open new_file_name.config
Under the element, add a reference to the SharePointPermission class as follows:
  
  
  Description="Microsoft.SharePoint.Security.SharePointPermission,
  Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral,
  PublicKeyToken=71e9bce111e9429c" />
Search for the tag where the name attribute equals ASP.Net.
Copy this entire tag and all of its children, and paste a copy of it immediately below the one you copied.
Change the name of the new PermissionSet element from ASP.Net to New_File_Name:
Example (Before)

  
Example (After)

  Name="New_File_Name">
  
Add the following node to the element where the name attribute equals New_File_Name:
             version="1"
             ObjectModel="True" />
Therefore, the resulting customized will look as follows:

  New_File_Name">
  
    Level="Minimal" />
  
    />
  
    />
  
    ObjectModel="True" />
Once you define the customized element, you must create a code group to specify when the CLR should apply the permission set.
Important   By default, the AllCode code group is a FirstMatchCodeGroup in ASP.NET policy files. Therefore, the CLR stops assigning permissions to an assembly after the first match to a specific code group. To apply the custom permissions, you must declare the specific code group assigning the custom permissions to your assembly as the first code group within the AllCode group. This ensures that the CLR assigns the MyCustomPermissions permission set and stops without proceeding to the default $AppDirUrl$/* code group that is used to assign permissions based on whether the assembly is located in BIN directory.
In the following example, the membership condition for the new code group is based on strong name membership:

           version="1"
           PermissionSetName="MyCustomPermissions">
  
                        version="1"
                        PublicKeyBlob="... see note below ..."
                        Name="MyAssemblyName" />
Note   To retrieve the public key blob for an assembly, use the secutil.exe tool as follows:
secutil.exe -hex -s MyAssemblyName.dll
For more information about secutil.exe, see Secutil Tool.

Save and close the file. The policy file is ready to use.
Open the web.config file for the virtual server extended with Windows SharePoint Services and add the following tag to the SecurityPolicy element:
  
              policyFile="new_file_name.config" />
In the web.config file, change the tag so that it refers to the newly defined trust level.

Save and close the web.config file.
Reset IIS, such as by using iisreset, to apply the custom policy to the specified virtual server.


What if my assembly is not strongly named? How does my code group change?

You can specify membership conditions for a code group in several ways. You can use the UrlMembershipCondition to specify conditions as follows:

           version="1"
           PermissionSetName="MyCustomPermissions">
  
                        version="1"
                        Url="$AppDirUrl$/bin/MyAssemblyName.dll" />


My assembly refers to a library assembly. Everything works when the assembly is installed in the GAC, but fails once the assembly is placed in the BIN directory. What is going on?

Assuming you granted the required permissions to an assembly, the reason your assembly cannot run may be related to how the library assembly was built. By default, strongly named assemblies allow only callers who are granted Full Trust. Therefore, the CLR blocks a partially trusted assembly from calling into a Full Trust-only assembly.

You have several possible solutions, both of which have security implications that you must consider:

When compiling the assembly, you can add the AllowPartiallyTrustedCallersAttribute attribute to the specified library assembly.
Important   You can only add this attribute to the source code. If you are using a third-party assembly and do not have access to the source, you cannot choose this option. If you choose this option, you are allowing partially trusted callers to execute code from within the library. This could represent a potential security risk as it opens the specified library assembly for use by other callers with partial trust.
You can give your assembly Full trust by installing it to the GAC.
Important   Assemblies installed in the GAC are available to all virtual servers and applications on the server running Windows SharePoint Services. This could represent a potential security risk as it potentially grants a higher level of permission to your assembly across a larger scope than necessary.
You can give your assembly Full trust by creating a custom policy file as outlined in the previous section.
Important   It is recommended that you choose this option as it allows you to explicitly grant the required minimum level of permission to your assembly without increasing the scope of access to a larger number of callers.











I am trying to access a Web service by using a Web Part. When I do so, I get a Security Exception as follows:

Request for the permission of type System.Net.WebPermission, System,
  Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  failed.


By default, assemblies in the BIN directory do not have the required permission, System.Net.WebPermission, to access Web services. To grant this permission, add the following to the corresponding IPermission element in the appropriate policy file:

  
    
  

I want to access a Web service from my Web Part. When I do so, I get an InvalidOperationException as follows:

One or more assemblies referenced by the XmlSerializer cannot be called
  from partially trusted code.


When you create a reference to a Web service, Microsoft Visual Studio®.NET creates and places one or more objects in your assembly to store the argument data passed to the method(s) in the Web service. These objects are serialized using the XmlSerializer class when you invoke one or more of the methods in the Web service. By default, if your assembly is strongly named and resides in the BIN directory, callers with partial trust cannot access objects within that assembly. When you make the call to the Web service method, the XmlSerializer detects that there are partially trusted callers on the callstack (i.e. your assembly) and prevents the serialization from taking place even though the object resides in the same assembly.

You have several possible solutions, both of which have security implications that you must consider:

You can add the AllowPartiallyTrustedCallersAttribute attribute to the specified library assembly.
Important   You can only add this attribute to the source code. If you are using a third-party assembly and do not have access to the source, you cannot choose this option. If you choose this option, you are allowing partially trusted callers to execute code from within the library. This could represent a potential security risk as it opens the specified library assembly for use by other callers with partial trusts.
You can give your assembly Full trust by installing it to the GAC.
Important   Assemblies installed in the GAC are available to all virtual servers and applications on the server running Windows SharePoint Services. This could represent a potential security risk as it potentially grants a higher level of permission to your assembly across a larger scope than necessary.
You can give your assembly Full trust by creating a custom policy file as outlined in the previous section.
Important   It is recommended that you choose this option as it allows you to explicitly grant the required minimum level of permission to your assembly without increasing the scope of access to a larger number of callers.

blog hints