2009-04-28 55 views
3

我有2个网站(www.mysite1.com和myweb2.com,这两个网站都在ASP.NET与SQL服务器作为后端),我想从一个站点的数据传递到another.Now我很困惑,是否使用Web服务或形式发布(从mysite1到一个页面中myweb2)Web服务,表单张贴

任何一个可以告诉我这两者的优点和缺点?

回答

3

Webservices是SOAP messages(SOAP协议使用XML来回传递消息),所以你的服务器两端必须理解SOAP以及你想在它们之间谈论的任何扩展,并且它们可能(但没有to)能够搜集WMDL文件(“解释”各种服务端点和可用的远程功能)。通常我们称之为SOAP/WS- *堆栈,重点在于'堆栈',因为有几个软件需要可用,并且SOAP调用越复杂,这个堆栈就越需要可用和维护。

使用POST,在另一方面,大多与RESTful behaviours相关联,并且作为这样的协议的一个例子,看看为HTTP。在POST内部,您当然可以发布复杂的XML,但人们倾向于使用普通POST来简化调用,并使用HTTP responses作为回复。你可能不需要任何额外的软件,因为即使不是所有的webkit都有HTTP支持,也是如此。如果你想知道,我自己的偏见倾向于REST。通过使用HATEOAS,您可以为自我感知系统创建真正良好的基础架构,与SOAP方式相比,它们可以通过负载和可用性实时修改自身,并且它位于参数的核心位置它; HTTP是针对大型分布式网络而设计的,用于处理性能和稳定性。 SOAP往往是一站式的,如果它打破了你的东西。 (同样,记住我的偏见,我在我的博客上写了很多,特别是the architecture sideimpact of SOA vs. ROA。:)

关于哪个更好,我只能说“它完全取决于你想做什么,你喜欢做什么,你需要做什么,你的环境,你的体验,太阳和月亮的位置以及我的猫的心情。 “呃,意思是很多。

我对所有这些问题都进行了健康的讨论,但我倾向于认为SOAP是一种改造; SOAP是一个带有标题和正文的信封,如果听起来很熟悉,那么HTML就是如此设计的,这是很少有人倾向于看到的。 HTTP作为一种转移东西的协议已经得到很好的理解并得到了很好的支持,SOAP使用它来转换他们的XML信封。转换SOAP和HTML之间有真正的区别吗?嗯,是的,最大的区别是SOAP重新发现了HTTP(缓存,可寻址性,状态,缩放)的所有细节,然后仅使用HTTP来传递消息,而不是其他任何东西,并让堆栈本身必须处理所提到的那些好处早。所以,HTTP的许多优点在另一层被忽略和重新创建(因此,您需要一个SOAP堆栈来处理它),这对我来说似乎是浪费,无知和增加了复杂性。

接下来就是你想要做的。对于非常复杂的事情,有很多标准的web服务栈(我认为这些日子大概有1200页)可以帮助你,但是如果你的需求比较温和(即不是认真复杂的安全性的,例如)一个简单的POST(或GET)请求和带结果的信封可能已经足够好了。您可能知道HTTP的结果是HTTP内容类型,因此已经支持很多,但您可以创建自己的例如application/xml + myformat(或者更准确地说,application/x-xml + myformat,如果我没有记错的话) )。获取请求,如果它是响应代码200,并解析。

两者都有效。一个是沉重的(WS- *堆栈),取决于你的需求,另一个更轻量且已经被支持。正如他们所说,剩下的就是胶水。

0

从我的一点经验我会说,你会使用web服务,因为你可以看到在你的代码中的服务的方法和结构,一旦你在recieving最终是创造它是最好的。

而且使用的形式张贴methos将舱单,你必须是不是做一个Web服务调用整齐提交的虚假表格。

你的第三个办法是让数据库说话,但我猜他们是完全不同的,不能“看到”对方?

+0

没有必要伪造表单提交。表单提交只是一种后期处理方法。在.NET中,使用HTTPWebRequest类发送POST和GET方法同样很容易(http://www.netomatix.com/httppostdata.aspx) – 2009-04-28 12:02:54

5

通过web服务我假设你的意思是基于SOAP的Web服务?

无论如何,两者都是平等的,没有什么优势。发布更轻量,而SOAP标准化(有点)。我会选择更加宁静的方法,因为我认为SOAP对于简单任务来说开销太大,而没有提供太多优势。

1

我会说web服务绝对是最好的选择。一些亲的:

  • 如果将来您需要添加其他网站,您的基础设施(web服务)已经存在
  • 跨站点的形式发布可能会使用cookie时给您的问题或 可能引发浏览器隐私限制
  • 如果您使用的形式发布,你必须 遍地 写一遍相同的代码,而使用的web服务 你写的代码一次,然后 在多个地点使用它。 易于维护,编写的代码少于 。
  • 可维护性(这是关系到 上述点)ofcourse,所有相关的交换数据 代码 都在一个位置(您的Web服务)

还有可能更大。像设计时支持/代码完成一样。

0

我会建议一个Web服务(或WCF)。正如Beanie所说,通过服务,您可以看到服务的方法和类型(您公开的),这将使数据更轻松,更清洁地移动。

0

我同意AlexanderJohannesen关于SOAP webservices或RESTful apis是否更好是有争议的,但是如果两个站点都在您的控制之下并且使用asp.net完成,那么绝对要使用SOAP webservices。 Visual Studio提供的用于创建和使用Web服务的工具非常棒,它不会花你几分钟时间在两个站点之间创建链接。

在您希望接收通信的站点中,通过选择VS中的添加项目来创建Web服务。选择Web服务并进行适当的命名。然后用你想要实现的逻辑创建一个方法,并添加属性[WebMethod],例如。

 
[WebMethod] 
public void AddComment(int UserId, string Comment) { 
    // do stuff 
} 

在你的测试服务器上部署这个,比如tst.myweb2.com。

现在在消费方(www.myweb1.com),选择添加Web引用,将url指向我们刚刚创建的web服务的地址,为其指定名称并单击添加refence。您有一个代理类,您可以像调用本地类一样调用代理类。易如反掌。