Saturday, November 23, 2013

In general, there are two ways to scale a web application: scale up and scale out.

Scale up means using a larger server (or a larger VM) with more RAM, CPUs, etc.

Scale out means adding more servers to handle the load.

The problem with scaling up is that you quickly hit a limit on the size of the machine. Beyond that, you need to scale out. However, when you scale out, clients can get routed to different servers. A client that is connected to one server will not receive messages sent from another server.

One solution is to forward messages between servers, using a component called a backplane. With a backplane enabled, each application instance sends messages to the backplane, and the backplane forwards them to the other application instances. (In electronics, a backplane is a group of parallel connectors. By analogy, a SignalR backplane connects multiple servers.)

SignalR currently provides three backplanes:

Windows Azure Service Bus. Service Bus is a messaging infrastructure that allows components to send messages in a loosely coupled way.

SQL Server. The SQL Server backplane writes messages to SQL tables. The backplane uses Service Broker for efficient messaging. However, it also works if Service Broker is not enabled.

Implementation

In SignalR, every message is sent through a message bus. A message bus implements the IMessageBus interface, which provides a publish/subscribe abstraction. The backplanes work by replacing the default IMessageBus with a bus designed for that backplane. For example, the message bus for Redis is RedisMessageBus, and it uses the Redis pub/sub mechanism to send and receive messages.

Each server instance connects to the backplane through the bus. When a message is sent, it goes to the backplane, and the backplane sends it to every server. When a server gets a message from the backplane, it puts the message in its local cache. The server then delivers messages to clients from its local cache.

For each client connection, the client’s progress in reading the message stream is tracked using a cursor. (A cursor represents a position in the message stream.) If a client disconnects and then reconnects, it asks the bus for any messages that arrived after the client’s cursor value. The same thing happens when a connection uses long polling. After a long poll request completes, the client opens a new connection and asks for messages that arrived after the cursor.

The cursor mechanism works even if a client is routed to a different server on reconnect. The backplane is aware of all the servers, and it doesn’t matter which server a client connects to.

Limitations

Using a backplane, the maximum message throughput is lower than it is when clients talk directly to a single server node. That's because the backplane forwards every message to every node, so the backplane can become a bottleneck. Whether this limitation is a problem depends on the application. For example, here are some typical SignalR scenarios:

Server broadcast (e.g., stock ticker): Backplanes work well for this scenario, because the server controls the rate at which messages are sent.

Client-to-client (e.g., chat): In this scenario, the backplane might be a bottleneck if the number of messages scales with the number of clients; that is, if the rate of messages grows proportionally as more clients join.

Friday, September 27, 2013

Using themes is
cool and easy way to create a consistent look and feel across a page or an
entire web site. Using themes you can easily customize your server controls
with predefined looks that come with the .NET Framework or you can create your
own themes for your own look.

Themes

Themes are a way
to counter the problems faced when creating a layout for server controls and
giving them the same look and feel throughout the entire application, with as
little effort as possible. Default or Global themes are contained in a special
folder inside the framework and can be declared in the source as well as class
files. Custom made themes are saved inside the predefined
"App_Themes" folder inside ASP.NET applications, making them easier to
manage and use according to your needs. The essential part of themes are skin
files with the .skin extension. Besides skin files, a theme can be
composed of styles sheets .css files as well as images for added support
for the layout of the website.

Skins

A skin file has
the file name extension .skin and contains property settings for individual
controls such as Button, Label, TextBox, or Calendar controls. Control skin
settings are like the control markup itself, but contain only the properties
you want to set as part of the theme.

Code
Example

<asp:button runat="server"
BackColor="lightblue" ForeColor="black" />

You create .skin
files in the Theme folder. A .skin file can contain one or more control skins
for one or more control types. You can define skins in a separate file for each
control or define all the skins for a theme in a single file.

There are two
types of control skins, default skins and named skins:

A default skin automatically applies
to all controls of the same type when a theme is applied to a page. A
control skin is a default skin if it does not have a SkinID
attribute. For example, if you create a default skin for a Calendar
control, the control skin applies to all Calendar controls on pages that
use the theme. (Default skins are matched exactly by control type, so that
a Button control skin applies to all Button controls, but not to LinkButton
controls or to controls that derive from the Button object.)

A named skin is a
control skin with a SkinID property set. Named skins do not automatically apply
to controls by type. Instead, you explicitly apply a named skin to a control by
setting the control's SkinID property. Creating named skins allows you to set
different skins for different instances of the same control in an application.

Global Themes

Built-in default themes are stored
under the installation path of the .NET Framework:

The actual name of the
subdirectory labeled vX.X.XXXX changes according to the build of ASP.NET.
Themes defined in this path are visible to all applications running on the
machine. You can also use your create a global theme by saving it in a
subfolder of the \Themes\ folder in the above directory.

Creating Page Themes

1.In the Solution Explorer right-click on web
site name and point to Add ASP.NET and
click Themes

2.Visual Studio will create a App_Themes folder automatically

3.Create a subfolder of the App_Themes folder and name it
accordingly

4.Add Skins,
Cascading Style Sheets, and Images as
needed

Adding a Skin file to a Page Theme

In the Solution Explorer right-click the name of
the theme and click Add New Item

In the Add
New Item dialog box click Skin
File

Type the name of the .skin in the name
box

In the .skin file add control
definition using declarative syntax, only include properties you want to
set for the theme. The definition must include the runat=”server”
attribute and must not include
the ID=”” attribute.

Code Example

<asp:Button
runat="server"

BackColor="black"

ForeColor="green"

Font-Name="Arial"

Font-Size="10pt" />

You can create as
many or as few .skin files in the
theme folder but typically you would only create one per control. You can
define only one default Skin per
control. If you want more use the SkinID
attribute in the skin’s control declaration to create named Skins for the same control.

Monday, April 22, 2013

Just Simply copy paste below code in your function.
To Create function follow the steps given below:
i) go to Field Explorer
ii) right click on Formula Fields click on New give specific name
iii) Formula Editor window will open just paste the Code given below
iv) Save & Close...
v) Just drag the Field to your specific required Location that done...

Changes to be made from your side is
i) vwCostTypes.UnitCost : This is a Database Field. Change as per your requirement.
Please note if you have Currency as Datatype in SQL DB than Do use ToNumber() function to convert it to number otherwise it will throw error of Number Required.
Please have the below code://#####################

Thursday, April 18, 2013

Adding a Check Box to a Report.To Display a checkbox on a report.i) Create a formula to show checked and unchecked box.ii) Please note the formula below...if {MyField}=true then CHR(254) else CHR(168);iii) Now Place your Field to Report at your required Location and change the font to Wingdingsiv) That's all....Great Job...;) Please have below symbol to change as per your choice and requirements. you can also have other symbols please check in Word to have the other symbols of the Font Wingdings.

Error:
"Invalid group condition."
or
"This group section cannot be printed because its condition field is nonexistent or invalid. Format the section to choose another condition field."

This Bug arise only if you have bad group sectors like
i) Please do Database-> Verify Database
ii) Please check your Dataset provided to the Report for the actual field exists or not.
iii) Remove unused Group from your report