SOA框架下如何传递文件?

问题描述

直接读文件,然后把文件内容封装进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架构”这类空名词儿而找不着北了。选择技术方式,需要你自己亲自测试,得到自己的数据支持。而不是抄别人的概念。

时间: 2024-09-10 18:53:23

SOA框架下如何传递文件?的相关文章

SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的_jquery

json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位.Json的语法非常简单,采用的是键值对表示形式.JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序,也可以从服务器端程序传递json格式的字符串给前端并由前端解释.这个字符串是符合json语法的,而json语法又是 javascript语法的子集,所以javascript很容易解释它,而且

MVC+WCF框架下广告位管理——文件上传

广告位是网站中必不可少的内容之一,也是能直接给我们网站带来经济收益的内容之一.好的广告位不仅不会强宾压主,而会为我们的网站锦上添花,起到画龙点睛的作用,因此设计好广告位也是开发过程中一大重要环节. 最近在做一个珠宝检测站的项目,其中管理页面就涉及到了广告位管理,之前项目中也有不少有广告位的,但都不是自己负责.其大致思路就是要从管理页面上传相应的图片,并且要保存到数据库,然后从所有上传过的图片中选择一张显示到网站首页.原理并不太难,但是鉴于性能问题,我们只需要数据库保存图片的路径即可. 重点是在M

java Struts2框架下实现文件上传功能_java

本文实例为大家分享了Struts2框架实现文件上传的方法,供大家参考,具体内容如下 struts2的配置过程 (1)在项目中加入jar包     (2)web.xml中filter(过滤器)的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xml

简单SOA框架实现

14.4. Service-oriented architecture (SOA) SOA 与 REST很多相同之处,目前SOA主要是基于SOAP实现,也有基于MQ的实现.而REST只限于HTTP POST/GET/PUT/DELETE等等. 我个人比较喜欢机遇TCP的SOA实现,不喜欢SOAP大量XML传输. 14.4.1. SOAP实现 这里提供一个简单的机遇SOAP实现的SOA框架 index.php入口文件 <?php define ('CONFIG_DIR', '../config/'

.Net框架下的XSLT转换技术简介

.net框架|转换 一.前言: XSLT转换技术是XML中的一项重要技术,本文将向XML开发者介绍.Net框架下的一些不同的XSLT转换技术.同时,本文还将介绍如何运用各种不同的输入数据源以完成一个XSLT转换.在.Net框架下,System.Xml.Xsl.XslTransform类能根据一个XSLT样式表文件转换一个XML文档,它是XSLT转换中最重要的一个类,同时它能够支持W3C的XSLT 1.0的语法,其运用的命名空间是http://www.w3.org/1999/XSL/Transfo

Python中Django框架下的staticfiles使用简介

  这篇文章主要介绍了Python中Django框架下的staticfiles使用简介,staticfiles是一个帮助Django管理静态资源的工具,需要的朋友可以参考下 django1.3新加入了一个静态资源管理的app,django.contrib.staticfiles.在以往的django版本中,静态资源的管理一向都是个问题.部分app发布的时候会带上静态资源文件,在部署的时候你必须手动从各个app中将这些静态资源文件复制到同一个static目录.在引入staticfiles后,你只需

在Python的Flask框架下收发电子邮件的教程

  这篇文章主要介绍了在Python的Flask框架下收发电子邮件的教程,主要用到了Flask中的Flask-mail工具,需要的朋友可以参考下 简述 在大多数此类教程中都会不遗余力的介绍如何使用数据库.今天我们对数据库暂且不表,而是来关注另一个在web应用中很重要的特性:如何推送邮件给用户. 在某个轻量级应用中我们可能会添加一个如下的邮件服务功能:当用户有了新的粉丝后,我们发送一封邮件通知用户.有很多方法可以实现这个特性,而我们希望提供出一种可复用的通用框架来处理. Flask-Mail介绍

php Laravel 框架之建立后台文件夹 二

在前面的章节中我们讲解过如何在 Laravel框架中建立后台文件夹. php Laravel 框架之建立后台文件夹 现在我们再添加一块内容.是关于自动加载的部分. 在我们app目录中还有个start目录.它里面这样写道: In addition to using Composer, you may use the Laravel class loader to load your controllers and models. This is useful for keeping all of

.NET框架下使用双缓冲技术绘图

.net框架 本文主要介绍 .Net 框架的基本绘图技术.通过简要的介绍和示例程序来探讨绘图技术的优势.劣势以及其它相关注意事项. 简介 幸运的是当编写一个典型的Windows 窗体程序时,窗体和控件的绘制.效果等操作是不需要特别加以考虑的.这是为什么呢?因为通过使用 .Net 框架,开发人员可以拖动一系列的控件到窗体上,并书写一些简单的与事件相关联的代码然后在IDE中按F5,一个完完全全的窗体程序就诞生了!所有控件都将自己绘制自己,窗体或者控件的大小和缩放都调整自如.在这里经常会用到的,且需要