Archive for the 'Webservices' Category
Building Windows Azure Services
Introduction
Microsoft introduced cloud platform officially known as Azure Services Platform.It makes easy for .NET Developers to move their applications to the cloud using same tools and API’s they’re already familiar with. It provides highly-scalable execution environment for running .NET Applications and storing data in Microsoft data centers throughout the world.
Related Posts:
No commentsThe .NET Service Bus With Example
You need to open an account with the .NET Service Bus, and need to use the .NET Service Bus administration Web site to create a new solution. You can open an account by visiting the following link http://portal.ex.azure.microsoft.com/. More about The .NET Service Bus can be found here.
Related Posts:
2 commentsThe .NET Service Bus
Introduction
The .NET Service bus is a powerful and useful feature from Windows Azure Cloud Computing. The .NET Service bus is designed to address the connectivity issues in advanced communication scenarios. The main issue it addresses is Internet connectivity. This post explains how it addresses these issues in real world.
Internet Connectivity Challenge
Related Posts:
1 commentValidating XML Document Using XSD in C#.NET
Introduction
This post explains how to apply XML Schema Definition Language(XSD) to Extensible Markup Language (XML) document. Basics of XSD.
Create an XML Document
- Start Visual Studio .NET
- Create a new XML File.
- Add the following data to the XML Document
<Employee EmployeeID="123"> <EmployeeName>James Bond</EmployeeName> </Employee>
4. Save the file as Employee.xml file
Create the XSD Schema, and Link to XML Document
1. Start Visual Studio .NET
2. Create a new empty text file
3. Add the following XSD Schema definitions to describe the XML document.
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Employee">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="EmployeeName" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="EmployeeID" use="required" type="xsd:int"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
4. Save the file as Employee.xsd
5. Open the original Employee.xml file, and link it to the XSD schema as follows
<?xml version="1.0"?>
<Employee EmployeeID="123"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Employee.xsd">
<EmployeeName>Rugby jersey</EmployeeName>
</Employee>
6. Save the modified xml as EmployeeWithXSD.xml.
Validate XML Document
1. Load the EmployeeWithXSD.xml using XmlTextReader as follows:
XmlTextReader r = new XmlTextReader("C:\\EmployeeWithXSD.xml");XmlValidatingReader v = new XmlValidatingReader(r);v.ValidationType = ValidationType.Schema;v.ValidationEventHandler += new ValidationEventHandler(MyValidationEventHandler);
while (v.Read())
{
// Can add code here to process the content.
}
v.Close();
// Check whether the document is valid or invalid.
if (isValid)
Console.WriteLine("Document is valid");
else
Console.WriteLine("Document is invalid");
public static void MyValidationEventHandler(object sender,
ValidationEventArgs args)
{
isValid = false;
Console.WriteLine("Validation event\n" + args.Message);
}
2. Build and run the application to use the XSD schema to validate the XML
document.
Related Posts:
4 commentsXML Schema Basics(XSD)
Introduction
This post gives a basic overview of XML Schema and how to use in development. XML schema describes what XML document contains and content of the XML document what fields and sub elements it can contain.
Standards for Describing XML Document
- DTD : was the First formulized standard.
- XDR: Much comprehensive standard than DTD.
- XSD: Currently de facto standard for describing the XML documents. There are two versions in use 1.0 and 1.1. An XSD schema it self is a XML document.
XSD Elements
Elements are building blocks for any XML document, element defines the structure of the XML document. The following is the syntax to define the element in XSD Schema.
Example:
<xs: element name=”abc” type=”xyz” />
- An Element must have the name property, the same will appear in the XML document.
- Type property describes about what can be contained in the element when it appears in XML document. eg: xs:string, xs:integer, xs:boolean or xs:date
Example:
Sample XSD
<xs:element name="Employee_dob"
type="xs:date"/>
Sample XML
<Employee_dob>
2000-01-12T12:13:14Z
</Employee_dob>
Fixed and Default Properties
The XSD element can contain the Fixed or Default properties.
Default means that if no value specified in the XML document then application uses the default value specified in the XSD document.
Example:
<xs:element name="Employee_name" type="xs:string" default="unknown"/>
Fixed means the value in the XML document can only have the value specified in the XSD.
Example:
<xs:element name="Customer_location" type="xs:string" fixed="UK"/>
Cardinality
Specifies how many times an element can appear can be called Cardinality. it is specified using the attributes minOccurs and maxOccurs. Both attributes can assigned a non-negative value.
The default value for minOccurs and maxOccurs is 1.
Example:
<xs:element name="Employee_hobbies"
type="xs:string"
minOccurs="2"
maxOccurs="10"/>
Employee_hobbies element must appear at least twice and not more than 10 times in the XML document.
Simple Types
We can define our own types by modifying the existing types.
example: Define a code, that may be an integer with a max limit.
<xs:element name="Employee" type="xs:string"/>
Complex Types: is a container for other elements which specifies child
elements an element can contain.
Example:
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="Dob" type="xs:date" />
<xs:element name="Address" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
- Created a definition for element Employee
- <xs:complexType> is a container for other <xs:elements>
- Complex type do not have the type attribute and contains the <xs:sequence> element.
- The sequence element specifies that XML document must appear in the same order they are declared in the XSD Schema.
<Employee>
<Dob> 2000-01-12T12:13:14Z </Dob>
<Address> 39 spring field road London </Address>
</Employee>
Related Posts:
2 commentsWSE Settings 3.0 Tool
The WSE features can be enabled by using WSE 3.0 tool which is a graphical user interface in visual studio 2005. You have to download the WSE 3.0 for .NET to configure the WSE 3.0 tool.
To open the WSE Settings 3.0 tool from Visual Studio 2005.
- Open the Solution or project that you want to use the WSE with.
- Right click the project point to WSE Settings 3.0 and click
To use the WSE settings 3.0 Tool from the start menu
1. Click Start, point to Microsoft WSE 3.0, and then click Configuration Tool.
Related Posts:
2 commentsOverview of WSE 3.0
Introduction
Web Services Enhancements is a .NET class library to develop web services using latest protocols.
Features
- Securing the Web Services: It is difficult to secure a web service that cross the security domains. We can secure a web service by sending over secure transport, such as Secure Socket Layer(SSL) but that holds good when the communication is point-to-point. Some times SOAP message has to be routed to so many intermediaries before reaching the receiver. We can address this problem by Adding Security Credentials to SOAP Message.Alternatively we can digitalsign a SOAP Message using WSE.
- Sending Large Amounts of Data Using WSE: WSE 3.0 supports the MTOM Message Transmission Optimization Mechanism for sending large amount of data in a soap message. Enabling a Web service to Send and Receive Large amounts of data.
- SOAP Messages Routing: SOAP messages can be routed through intermediaries before it reaching to the destination. Routing SOAP Messages using WSE.
- Hosting the Web services outside IIS: WSE enables ASP.NET web services to be hosted in console applications, windows services and COM+ components. Hosting Web service outside IIS.
Related Posts:
2 commentsHOST ASP.NET Web service in a Windows service
The following is the procedure to host a web service in windows service.
- Open Visual Studio 2005.
- Create an ASP.NET Web service.
a. File menu, choose New Web Site
b. In the New Web Site dialogue box, select the ASP.NET Web Service.
c. Enter the address of web server and click Ok.
3. Add code to implement the Web Service.
4. Create a Windows service.
a. File menu, choose New Project
b. In the New Project dialogue box, select windows service.
c. Specify the name and click Ok.
5. Add references to the Microsoft.Web.Services3, System.Web.Services, and System.Web assemblies.
6. Add source file and configuration file to the Windows service project.
a. Right click the windows service project, point to Add choose Existing Item.
b. Navigate to the configuration file in the web service folder select
Web.config, and click Add.
c. Right click the windows service project, point to Add choose Existing Item.
d. Navigate to App_code folder web service project select the source file
Service1.cs, and click Add.
e. Rename the Web.config file to app.config.
7. Open the source file in windows service project
write the following code in OnStart Method
protected override void OnStart(string[] args) { Uri address = new Uri("soap.tcp://localhost/TestService"); SoapReceivers.Add(new EndpointReference(address), typeof(Service )); }
8. Write the following code in OnStop Method.
protected override void OnStop(){ SoapReceivers.Clear(); }
9.Write the following code in Main Method
static void Main() { System.ServiceProcess.ServiceBase[] ServicesToRun; // Change the following line to match. ServicesToRun = new System.ServiceProcess.ServiceBase[]{ new WindowsServiceToHostASMXWebService() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun); }
10. Install the Windows Service.
Related Posts:
2 commentsSOAP Message Routing with WSE
A application using WSE can be designed by setting up a intermediary computer that is configured to run on WSE router. Clients send messages to WSE router instead of to the web service.
WSE Router
Benefits of using WSE router is computer that hosting a web service can be taken offline for maintenance with out modifying the client code or its configuration.
Administrator prepares a web.config file that containing the referral cache containing the URL for Backup computer. Back computer is prepared by administrator to redirect the Requests when Primary computer containing the web service is offline.
In the above diagram client sends the SOAP messages to a WSE Router, Which delegates the message to another web server based on the content in referral cache. In this scenario Referral cache is configured to send the SOAP Message to Web server B, but it can be modified to send it to the Web server C.
Related Posts:
1 commentMTOM Support to Web Service
Overview of MTOM
Using MTOM an application can send or receive a large amount of data. MTOM allows message-level security to be applied to the message including binary data. MTOM encodes the SOAP message and transmits the message as XML.
Following is the procedure to send large amount of data using MTOM
- Open the web service project in Visual studio 2005
2. Enable the project to use WSE by
a. In solution explorer right click the project and then click WSE Settings
b. Select the general tab
c. Select Enable this project for Web Services Enhancements and
Enable Microsoft Web Services Enhancements SOAP Protocol
Factory.
3. Specify that web service can accept SOAP messages encoded using MTOM.
a. In solution explorer right click the project and then click WSE Settings.
b. Select the Messaging tab.
c. Choose optional or always for the Server Mode.
always MTOM mode specifies that all incoming and outgoing SOAP
messages must be MTOM encoded.
optional MTOM mode specifies that whether or not all incoming and
outgoing messages can be encoded.
Define a Web service method that returns a byte array.
[WebMethod]
public byte[] GetFile(string fileName){
byte[] response; String filePath = AppDomain.CurrentDomain.BaseDirectory+ @"App_Data\" + fileName; response = File.ReadAllBytes(filePath); return response;}
4. Configure the Web server to handle the larger amount of data.
<configuration>
<system.web>
<httpRuntime maxMessageLength="409600"
executionTimeoutInSeconds="300"/>
</system.web>
</configuration>