In our previous development, for AJAX programs, the webservice was marked as [System.Web.Script.Services.ScriptService] via jquery, and then the backend WCF was invoked in webservice. This became the only reason for the existence of WebService: as a staging point for Ajax calls. If you want to discard WebService, just use WCF as a staging point.
In the. NET 3.5 era, jquery can invoke WCF, and I've written blogs before (for example, some of the problems that jquery calls WCF to note), but configuration is cumbersome.
As you go into the new era of. NET 4, the configuration of WCF does simplify a lot (for example, deploying WCF with IIS in. NET 4 is as simple as this), and the Ajax invocation of WCF is also simplified. So we decided to abandon WebService and enter WCF fully.
Now the program architecture of the blog Park has been based on WCF, so we pay more attention to WCF, share some of the articles may be relatively simple, but it is from our actual development encountered and resolved problems.
Share below. How to invoke WCF through jquery in NET4:
Description: WCF here is just a staging point for Ajax calls, which then invokes the local service layer interface or other WCF services in the background.
1. Add a class file (that is, normal class) to the App_Code, such as HelloService.cs.
2. Add a method to the HelloService.cs, plus some WCF settings, as shown in the following figure:
[Servciecontract] and [OperationContract] are standard settings, where the ‘ service interface ” and "service implementation" are written in a class, not a recommended practice. We do this here because we need an Ajax call station, the simpler the better.
The note here is aspnetcompatibilityrequirements, if this setting is not done, WCF does not go asp.net pipelines, asp.net context information can not be taken, such as: Do not add this setting, HttpContext.Current is null, the most commonly used scene is based on the HttpContext to obtain user login information, the user permissions to authenticate. corresponding to this setting, you need to add <servicehostingenvironment to the web.config <system.serviceModel> Aspnetcompatibilityenabled= "true" >, as shown in the following figure:
* Note: When the above setting is added to the web.config, all WCF service implementations will have to set the Aspnetcompatibilityrequirements property.
3. Continue to add settings in Web.config, add Serviceactivations in System.servicemodel/servicehostingenvironment, as shown below:
Relativeaddress is the address name of the WCF service, which is the HelloService class name created previously, and factory is the key to support Ajax invocation, It's System.ServiceModel.Activation.WebScriptServiceHostFactory.
All right, three steps to fix the WCF end configuration. When you start the project in VS2010, you can access this WCF in the browser, such as: Http://localhost:3960/jQueryWcfDemo/HelloService.svc. If the following screen appears, the WCF side is working properly.
4. jquery Call WCF started ... The code is as follows:
The place to note is the background in the above figure, contenttype and data, and the difference between the WebService is explained in the comments.
Click the Submit button, "Hello, World" ... Full access to the WCF era, see the following figure:
Sample code Download: Http://files.cnblogs.com/dudu/jQueryWcfDemo.rar