The WebService Attribute The WebMethod Attribute

331

7.1.1 The WebService Attribute

The WebService attribute that is, the WebServiceAttribute class, defined in the System.Web.Services namespace provides a way to attach a name, namespace, and description to a web service. The properties that can be set for the WebService attribute are: Description A description of the web service. The default is an empty string. Name The name of the web service. The default is the name of the class implementing the web service. Namespace The namespace of the web service. To avoid name clashes between web services, they are given namespaces in URI format. A simple way to build a unique namespace for your companys web services is to base it on your companys URL because URLs are valid URIs. For example: http:yourcompany.comwebservices Although this looks like a URL, it isnt. It doesnt need to correspond to a site that can be reached on the Internet. It just needs to be a unique name that is under your companys control and has no chance of clashing with anyone elses namespace. The default for this property is http:tempuri.org . The default is OK for testing web services, but should not be used for production web services. Heres how the WebService attribute might look when you specify all three properties: WebService _ Description:=My first web service., _ Name:=FirstWebService, _ Namespace:=http:yourcompany.com _ Public Class HelloWebService Inherits WebService ... End Class Note that the WebService attribute is not required for a class to implement a web service. It only provides a way to specify the given properties of the web service.

7.1.2 The WebMethod Attribute

The WebMethod attribute that is, the WebMethodAttribute class, defined in the System.Web.Services namespace identifies a method as being a web method. When the ASP.NET framework finds this method in a class being used as a web service, it wires up the plumbing necessary to expose the method as part of the web service. The properties that can be set for the WebMethod attribute are: BufferResponse Specifies whether to buffer the response to the client while it is being built. The type is Boolean. The default is True . 332 CacheDuration Specifies whether responses are cached and, if so, how long they are cached in seconds. The type is Integer. A value of the default specifies that responses arent cached. Description Specifies a description of the web method. Tools can retrieve this description and display it to potential users. The type is String. The default is an empty string. EnableSession Specifies whether session state is enabled for the web service. The type is Boolean. The default is False . MessageName Specifies the name of the web-service method. The type is String. The default is the name of the method as it appears in the implementation class. Web services dont support method overloading. If youre writing a class that will be used as the implementation of a web service, dont overload method names. If youre using an existing class that already has overloaded method names, use the WebMethod attributes MessageName attribute to control the names presented to clients of the web service. TransactionOption Specifies how the web method participates in transactions. The type is TransactionOption defined in the System.EnterpriseServices namespace. The default is Disabled . Transactions cant propagate across web-service method invocations. Therefore, web methods can participate in transactions only as the root of a transaction. They cant enlist on a transaction that is in progress.

7.1.3 The WebService Class