怎样用js调用wcf服务,第1张

需要SystemWebExtensionsdll(可能需要AJAXExtensionsToolboxdll)

网上下载ASPAJAXExtSetup

使用的时候把上面的2个dll放到bin下,并添加引用(一般服务器没有安装ASPAJAXExtSetup)

==============================

Web服务

==============================

using System;

using SystemWeb;

using SystemCollections;

using SystemWebServices;

using SystemWebServicesProtocols;

using SystemWebScriptServices;

using SystemData;

using SystemTextRegularExpressions;

/// <summary>

/// addComment 的摘要说明

/// </summary>

[WebService(Namespace = "http://tempuriorg/")]

[WebServiceBinding(ConformsTo = WsiProfilesBasicProfile1_1)]

[ScriptService]

public class manageComment : SystemWebServicesWebService

{

[WebMethod(EnableSession = true)]

public string CommentByID(string userName)

{

//支持session

}

public string DeleteHostComment(int replayID)

{

}

}

aspx页面设置web服务文件的路径

===============================

<asp:ScriptManager ID="smAddComment" runat="server">

<Services>

<asp:ServiceReference Path="~/WS/manageCommentasmx" />

</Services>

</asp:ScriptManager>

js调用

=================================

manageCommentCommentByID('名称');

manageCommentDeleteHostComment(1);

tip:调用的格式->[命名空间]类名方法名(参数1[,参数2……])

  1,可以先传到视频网站上,然后引用,例如优酷网站,截取以下视频代码插入就可以了<object id="playerObject" width="100%" height="100%" name="playerObject" data="视频的url" style="" type="application/x-shockwave-flash"><param name="bgcolor" value="#000000"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="wmode" value="opaque">

<param name="quality" value="high">

<param name="flashvars" "></object>。

  2:在客户端服务器的WCF服务代码里调用ReadFile方法,传入公司服务器上文件的物理路径。

  3:即可在客户端服务器端获取到公司服务器文件的二进制流了,之后可以保存下来,也可以直接回发给客户客户端。

  4:可以用SQL语句来获取件:select Tc from openrowset(bulk N'D:\DB_Backup\E5KST01\audit_trail_20130419bak', single_blob) T(c)。

WCF在跨域传输使用了两种模型的方法调用:一种是同步模型,这种模型显然对那些需要大量操作时间的方法调用(如从数据库中获取大量数据时)是一种痛苦的选择。另一种是异步模型的方法调用,这种模型是一种非阻塞方法,其方法调用期间并不等到方法调用结束获得结果才返回,而是方法调用一经开始就马上返回,程序可以继续向前执行,被调用方法和主程序同时执行,在调用方法结束才返回结果。显然这种模型给了我们很好的编程和使用体验。

基于WCF在普通的编码是以文本编码方式在信道之间传输信息的,这种编码会把所有的二进制信息以字节数组的形式存储,并以Base64进行编码,而Base64则是用三个字节来储存4 个字符信息。使得数据量增大约30%以上。在WCF中引入了一种专门针对数据流进行优化编码的MTOM模型。下面我们使用编码模型和调用模型三种方式来改写文件流的传输,以提高WCF应用程序的性能。

1、 MTOM模型:

这模型在于将SOAP消息编码成SOAP MT OM(消息传输优化机制)编码。这种编码是为那些包含大量的二进制数据的SOAP消息而做的,它是把数据流作为SOAP消息的附件而添加的。所以利用这种编码在传输信道之间传输可以显著提高传输性能。在WCF中MTOM模型的操作契约中只能使用单个Stream对象作为参数或者返回类型。

这种模型的特点如图所示:

11实现服务契约

服务契约是服务所支持的操作、使用的消息交换模式和每一则消息的格式,它控制消息被格式化的方式,在这里由于要使用MTOM编码消息,所以在操作契约中必须要以单一的Stream对象为输入输出参数。所以这儿我们把服务定义为如下的形式:

[ServiceContract]

public interface ISendStreamService

{

[OperationContract]

void SendStream(Stream stream);

//这个方法的是为了传递文件的参数而设的

[OperationContract]

void FileNameSetting(string filename, string destinationpath);

}

另外我们还定义了一个传输文件路径的名称的辅助方法:FileNameSetting();

12实现服务器方法

在上面定义了公共的接口后,接下来我们就实现接口的方法,主要的方法的目的是为了传输Stream对象,由于Stream是一个抽象类,所以这儿以文件流为操作对象来使用SendStream()这个方法。

13客户通过接口调用服务器方法

客户端调用服务器方法至少有三种,这里我们选择工厂方法来实现,SystemServiceModeChannelChannelFactory<T>类是这个信道工厂类,它的方法CreateChannel()可以创建T的实例。

ISendStreamService proxy=new

ChannelFactory<ISendStreamService>(“WSHttpBinding_ISendStreamService”)Create-

Channel();

proxyFileNameSetting(fileSubstring (fileLastIndexOf ("\\")+1), filePath);

proxySendStream(inStream);

14服务器和客户端的配置信息

配置信息定义了双方通信的终结点、绑定、契约行为及其他的配置如安全,可靠性等。服务器的配置如:

<service behaviorConfiguration="SendStreamServiceBehavior"

name="SendStreamService">

<endpoint address=" http://localhost:5504/WebSite2/ISendStreamService "

binding="wsHttpBinding" bindingConfiguration="MTMOBinding"

contract="ISendStreamService">

</endpoint>

<bindings>

<wsHttpBinding>

<binding name="MTMOBinding" messageEncoding="Mtom">

</wsHttpBinding>

</bindings>

</service>

<%@ ServiceHost Language="C#" Debug="true"

Service="YourNamespaceYourServiceClass"

Factory="SystemServiceModelActivationWebServiceHostFactory" %>

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎样用js调用wcf服务

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情