问题描述
直接读文件,然后把文件内容封装进xml传递吗?
解决方案
解决方案二:
SOA是啥玩意
解决方案三:
装xml干什么呢?
解决方案四:
soa是一个务虚的概念,你该怎么做还怎么做。
解决方案五:
ESB也支持FTP这样的协议啊
解决方案六:
引用2楼sp1234的回复:
装xml干什么呢?
就是把文件内容封装到soap消息中,然后发送出去。
解决方案七:
引用3楼caozhy的回复:
soa是一个务虚的概念,你该怎么做还怎么做。
其实我就是想问,传递文件时,是直接将文件内容封装到soap消息中发送;还是只发送文件url,然后接收端再以ftp形式下载?
解决方案八:
解决方案九:
发文件当然不是了。直接写出文件流就行了。
解决方案十:
'''<summary>'''文件上传.'''</summary>'''<paramname="BigUserAUID">用户编号</param>'''<paramname="UserFaithVag">用户验证码</param>'''<paramname="NewUserFaithVag">新用户验证码.</param>'''<paramname="FolderKey">在App.Config中指定的目录KEY值.</param>'''<paramname="ServerFileName">服务器端文件名.</param>'''<paramname="Overlay">是否覆盖已存在的文件.</param>'''<paramname="BlockID">文件块编号.</param>'''<paramname="FileByte">文件块的字节数组.</param>'''<returns>成功:True,失败:False.</returns>'''<remarks></remarks>PublicFunctionUploadFile(ByValBigUserAUIDAsString,ByValUserFaithVagAsString,ByRefNewUserFaithVagAsString,ByValFolderKeyAsString,ByValServerFileNameAsString,ByValOverlayAsBoolean,ByValBlockIDAsInteger,ByValFileByte()AsByte,ByRefErrmsgAsString)AsBooleanImplementsIMethod.UploadFileIfBlockID=0Then'//只对第一块验证.IfNotCheckUserFaithVag(BigUserAUID,UserFaithVag,NewUserFaithVag,Errmsg)ThenReturnFalseEndIfEndIfIsUse=TrueDimReturnValAsBoolean=FalseServerFileName=MyEnCrypt.DeCryptString(ServerFileName)DimSaveFilePathAsString=GetUserFolder(FolderKey)&ServerFileNameDimDirPathAsString=NewIO.FileInfo(SaveFilePath).DirectoryNameIfNotIO.Directory.Exists(DirPath)ThenIO.Directory.CreateDirectory(DirPath)EndIfIfBlockID=0Then'//收到的第一个块.IfIO.File.Exists(SaveFilePath)ThenIfOverlayThenIO.File.Delete(SaveFilePath)ElseReturnVal=FalseGoToEndSubEndIfEndIfEndIfDimFileStreamAsSystem.IO.FileStreamIfBlockID=0ThenFileStream=NewSystem.IO.FileStream(SaveFilePath,IO.FileMode.CreateNew)ElseFileStream=NewSystem.IO.FileStream(SaveFilePath,IO.FileMode.Append)EndIfTryFileStream.Write(FileByte,0,FileByte.Length)FileStream.Close()ReturnVal=TrueGoToEndSubCatchexAsExceptionErrmsg=ex.Message&""&SaveFilePathFileStream.Close()ReturnVal=FalseGoToEndSubEndTryEndSub:IsUse=FalseReturnReturnValEndFunction
解决方案十一:
曾经见过的方案1是将文件转成byte[]再转成string服务端反过来得文件,但只能传小文件所以最后还是改用http协议
解决方案十二:
试试的TCP调用usingSystem;usingSystem.IO;namespacefastCSharp.testCase{[fastCSharp.setup.cSharp.tcpServer(IsIdentityCommand=true,Host="127.0.0.1",Port=12345)]internalpartialclasstcpStream{[fastCSharp.setup.cSharp.tcpServer]privateunsafeboolreadFile(stringfileName,Streamstream){byte[]data=File.ReadAllBytes(fileName),buffer=newbyte[1<<10];fixed(byte*dataFixed=data){for(intindex=0,read;index!=data.Length;index+=read){read=stream.Read(buffer,0,buffer.Length);if(read<=0||!fastCSharp.unsafer.memory.Equal(buffer,dataFixed+index,read))returnfalse;}}returntrue;}[fastCSharp.setup.cSharp.tcpServer]privateunsafevoidwriteFile(stringfileName,Streamstream){byte[]data=File.ReadAllBytes(fileName);for(intindex=0,count;index!=data.Length;index+=count){stream.Write(data,index,count=Math.Min(data.Length-index,1<<10));}}[fastCSharp.setup.testCase]privatestaticbooltestCase(){using(fastCSharp.testCase.tcpServer.tcpStreamserver=newfastCSharp.testCase.tcpServer.tcpStream()){if(server.Start()){using(fastCSharp.testCase.tcpClient.tcpStreamclient=newfastCSharp.testCase.tcpClient.tcpStream()){stringfileName=@"....tcpStream.cs";using(FileStreamfileStream=newFileStream(fileName,FileMode.Open,FileAccess.Read,FileShare.Read)){if(!client.readFile(fileName,fileStream))returnfalse;}stringbakFileName=fileName+".bak";if(File.Exists(bakFileName))File.Delete(bakFileName);try{using(FileStreamfileStream=newFileStream(bakFileName,FileMode.CreateNew,FileAccess.Write,FileShare.None)){client.writeFile(fileName,fileStream);}if(!fastCSharp.unsafer.memory.Equal(File.ReadAllBytes(fileName),File.ReadAllBytes(bakFileName)))returnfalse;}finally{File.Delete(bakFileName);}returntrue;}}}returnfalse;}}}
解决方案十三:
解决方案十四:
同求结果啊+1
解决方案十五:
什么意思呢。。。。。
解决方案:
大家好,我是czg
解决方案:
额,stream可以,byte[]可以,你甚至可以base64了当字符串也可以
解决方案:
就这玩应也能推荐
解决方案:
SOA不等于WebService.如果你们的应用都已经接口服务化了,并且服务的实现技术是基于WebService.那么你可以考虑使用支持附件的WebService技术,如MTOM哈。。你为什么要将文件序列化编码为XML文档呢?不解。SOA中文件传输,可以考虑FTP或者MQ
解决方案:
ZHEGE这个不知道,啊,一年
解决方案:
我记得是SOAP是将文件Base64之后嵌入到xml里面的
解决方案:
引用1楼wyd1520的回复:
SOA是啥玩意
同问。。
解决方案:
百度:维基:概念:面向服务的体系结构(Service-OrientedArchitecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。我的理解:SOA只是一个概念上的东西,所以3楼版主说这是一个“务虚”的概念。你可以把它理解成为一种基本规则,或者指导思想:凡是符合这种规则或者思想的具体实现,都可以称之为SOA。所以,如WebService,servlet什么的,都可以认为是一个简单的SOA实现。SOA的重点应该是两个词:服务,接口。它所期待的,应该是不论什么需求,不论此需求在什么平台,不论此需求在什么地方,不论此需求什么时候提出,都可以通过一个通用的接口,得到服务器上提供的服务。所以你常看到SOA中XML横行,这是因为XML是和具体平台具体实现无关的文本格式的信息规范定义。其实我在实际使用中,更喜欢用JSON。以上是个人的理解,不足之处,请指教。引用21楼qmpy321的回复:
Quote: 引用1楼wyd1520的回复:
SOA是啥玩意同问。。
解决方案:
文件是字节流,还是老老实实用HTTPPOST方式比较稳妥。
解决方案:
FTP协议不行吗
解决方案:
学习了
解决方案:
解决方案:
引用22楼super_admi的回复:
百度:维基:概念:面向服务的体系结构(Service-OrientedArchitecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。我的理解:SOA只是一个概念上的东西,所以3楼版主说这是一个“务虚”的概念。你可以把它理解成为一种基本规则,或者指导思想:凡是符合这种规则或者思想的具体实现,都可以称之为SOA。所以,如WebService,servlet什么的,都可以认为是一个简单的SOA实现。SOA的重点应该是两个词:服务,接口。它所期待的,应该是不论什么需求,不论此需求在什么平台,不论此需求在什么地方,不论此需求什么时候提出,都可以通过一个通用的接口,得到服务器上提供的服务。所以你常看到SOA中XML横行,这是因为XML是和具体平台具体实现无关的文本格式的信息规范定义。其实我在实际使用中,更喜欢用JSON。以上是个人的理解,不足之处,请指教。Quote: 引用21楼qmpy321的回复:
Quote: 引用1楼wyd1520的回复:
SOA是啥玩意同问。。
补充一下:SOA数据传输协议有很多,甚至可以自己定义,SOAP协议只是其中一种。内容有很多种格式,就看你的协议是怎么定的,其实任何数据在网络上传输的时候都是二进制,不过因为格式进行了一次转换,那么应用层用的时候才会有xml,json之分
解决方案:
解决方案:
到网上去查一下,关于WS或是WCF上传下载文件的贴子。不要一直想着简单对象访问的概念。
解决方案:
我推荐外挂tcp或者直接挂http协议去发送文件。WCF也有自带的nettcpbinding走byte比stream要好。
解决方案:
我现在的解决办法是这样的,将web服务部署在服务器端,使用AXIS2/C的服务器。客户端发送调用请求,服务器端计算完成后会生成一些结果文件,然后将下载地址返回给客户端。客户端再通过FTP协议下载结果文件。不知道有没有比这更好的方法?
解决方案:
引用6楼difstone的回复:
Quote: 引用3楼caozhy的回复:
soa是一个务虚的概念,你该怎么做还怎么做。其实我就是想问,传递文件时,是直接将文件内容封装到soap消息中发送;还是只发送文件url,然后接收端再以ftp形式下载?
这是根据你的需要而决定的,这两种都是非常直观普通的方法,不要因为非要符合什么“SOA架构”这类空名词儿而找不着北了。选择技术方式,需要你自己亲自测试,得到自己的数据支持。而不是抄别人的概念。