2010-08-19 99 views
3

我对Web服务没有多少经验,但我认为我有一个问题,Web服务会很好地工作。我可以创建一个可下载PDF格式的Web服务吗

我的公司刚刚购买了.net版Cete Pdf Merger(伟大的产品btw)。我们同时使用.Net & asp代码,将来也可能会使用java。

这种情况是,一种技术(asp,java,.net)会有一个原始数据列表,例如字段名称数组&值。这些数据将被发布到Web服务中,然后打开给定的pdf,将pdf表单字段匹配到字段名称数组,获取相应的值,将其填充到PDF上,然后将PDF传回给用户进行下载。

这看起来可行吗?我可能遇到的任何疑难杂症,你知道吗?任何首选的方法(Web服务,WCF,???)

回答

2

简短的回答:WCF

较长的答案是:你似乎正在WCF和“Web服务”之间的区别。也许你正在考虑旧的“.asmx”Web服务。微软现在认为他们是“传统软件”,并建议你使用WCF进行所有新的Web服务开发。

+0

这些其他技术(asp/java)可以调用/调用WCF吗?我没有使用WCF,所以我不确定。我今晚会详细介绍一下。 – jason 2010-08-19 20:40:06

+0

是的。这就是WCF的目的 - 它是ASMX网络服务的替代品,然后大约20倍,而且效果更好。 – 2010-08-19 23:03:06

1

如果你打算在.NET中使用Web服务,我推荐使用WCF(Windows Communication Foundation)。

1

WCF(MSDN)是一个不错的选择,但如果您希望提供用户界面(如HTML表单来输入字段值),则可以使用常规Web表单并发布到页面通过HTTP,通过以适当的MIME类型流式传输返回PDF输出。

1

这听起来像个好主意。您可以使用.asmx Web服务(其他人可能会看不起.asmx)。

建议建立像这样一个WebMethod:

(本例中是周围的边缘粗糙,但它只是描述的总体思路)

[WebMethod] 
public void CreatePdfIncomeTax(IncomeTaxForm itf) 
{ 
    // integrate with Cete Pdf Merger 
    string fileName = SomePdfMerging(itf); 

    Response.ContentType = "application/pdf"; 
    Response.AddHeader("Content-Disposition", "inline; filename=foo.pdf"); 
    Response.WriteFile(path); 
    Response.Flush(); 
    Response.End(); 
} 

... 
// a class that the caller would populate as param to the webmethod 
public class IncomeTaxForm 
{ 
    public string FirstName {get;set;} 
    public string AddressLine1 {get;set;} 
    ... 
} 
+0

为什么在世界上你会建议使用传统技术来完成新的开发?另外,这项服务如何消费?任何查看WSDL的东西都将决定这个服务没有输出。 – 2010-08-19 20:25:25

+4

@John:世界还没有从asmx转移到WCF。在asmx上有很多经验,不幸的是,WCF的一些(错误)概念和开发者之间的复杂性。你和微软可能会考虑它的遗留问题,但它仍然有很多动力。我当然不打算用这个答案来吸引嘲讽评论。我在粗略的代码上放了一个免责声明,并且希望让OP了解如何使PDF可用于调用者。 @Everyone:这并不意味着被复制/粘贴到生产中。 :) – 2010-08-19 22:33:34

+0

也许你的意思是“惯性”而不是“动力”? – 2010-08-19 23:06:15

0

我已经做了相当多的是千真万确的事情,但使用Aspose作为PDF组件。我们使用.asmx网络服务,而不是我想要的WFC。我肯定会同意所有其他人说,WCF是要走的路。我知道我会喜欢这一点,但不幸的是,这个决定不是我的决定。

相关问题