wcf传输视频
㈠ Android与WCF传输数据类型Wcf如果不拼XML,不做序列化!手机怎么与之交互
我的方案是:中间建立一个代理网站, android 访问代理网站,代理网站调用WCF,将内WCF返回容的数据序列化成json返回给android。
代理网站可以采用1. asp.net WebForm, 2. asp.net webAPI
当采用WebForm,安卓访问url.aspx,参数通过url QueryString传递, 页面WCF返回结果直接写入相应流中。
当采用webAPI,这个相对复杂点,还要处理跨域,验证等问题。而且还要ASP.NET MVC 4才支持。
㈡ 请教如何通过WCF传输大数据量数据
又是一个把自己架在火上烤的需求啊,
如果不考虑传输因素,可以调整wcf配置,提升传递的容量,如果是对象传递可能还要调整对象层次的深度
㈢ wcf传输数据大小限制
应该也是网页最来大请求长源度的问题。
在Web.config内的<system.web>节中加入
<httpRuntime maxRequestLength="10240000"/>
即可。
自己做个测试吧,我忘了maxRequestLength的值是什么单位了,反正不是B就是KB,好像是KB....:)
网上有许多支持大文件上传的自定义控件,说白了也就是这样做的。
不知道这样能不能给分~~~~~~
㈣ 如何解决WCF 无法传输object类型
可以通过定义一个中间类型来传递object对象。方法就是在这个类型中包含一个object的成员,并且定义该成员为KnownType。代码如下:
[DataContract]
[KnownType(typeof(Proct))] //必须标记Proct类型
public class RequestData
{
[DataMember]
public object RequestObject;
}
通过传递RequestData,就能变相实现object对象的传递。
[ServiceContract]
public interface IProctInfo
{
[OperationContract]
string GetProctTypeName(RequestData requestData);
}
public class ProctInfo : IProctInfo
{
public string GetProctTypeName(RequestData requestData)
{
return requestData.RequestObject.ToString();
}
}
不过,你会发现任何自定义对象都必须在RequestData中预先设定为KnownType,否则WCF无法序列化。这显然还不够灵活。为了让方法可以方便的调用,而不需要担心是否标记了KnownType,我们可以通过定义一个方法并把这个方法名作为KnownType参数来解决此问题。这里用到KnownType的另一个重载方法:
KnownTypeAttribute(string methodName);
这个方法必须满足以下条件:
a 必须是static,因为需要在对象实例化之前调用。
b 必须是不带任何参数的。
C 返回类型必须是可被IEnumerable接受的,(也就是实现了IEnumerable接口的)。
改造后RequestData如下:
[DataContract]
[KnownType("GetKnownType")]
public class RequestData
{
//增加构造函数方便使用
public RequestData(object requestObj)
{
RequestObject = requestObj;
}
[DataMember]
public object RequestObject;
private static Type[] GetKnownType()
{
//将自定义对象的程序集下的所有类型标记为KnownType。
return Assembly.Load("DataEntityAssemblyName").GetTypes();
}
}
在GetKnownType函数中,程序将自定义类型的程序集包含的类型全部返回,这下就省事多了。。
㈤ WCF传输慢,这是为什么
检测一下网络传输量和传输速度。如果是传输量太大,服务端和客户端都是专.net程序时,可以将属ILIST<T>先用BinaryFormatter进行二进制序列化为BYTE[],并采用tcp传输模式进行传输,还是很慢的话可以考虑传输之前对字节流进行压缩,然后接收端接收后解压缩再BinaryFormatter反序列化。
㈥ 请教如何通过WCF传输大数据量数据
就是直接把DataSet 类型作为参数直接传递给服务端
WCF默认支持这么做,直接传Datatable不行。
你看一下 “服务引内用设置”中你选容的集合类型是什么,我选的是System.Array
字典集合类型是默认第一项 System.Collections.Generic.Dictionary