【问题标题】:C# - web service with aspx pageC# - 带有 aspx 页面的 Web 服务
【发布时间】:2011-07-06 13:44:25
【问题描述】:

我们需要使用特定的库进行序列化,使用方式如下:

var obj = Serializer.Deserialize(myStream); //Read
Serializer.Serialize(obj, myOtherStream); //Write

我们需要通过网络服务公开这个,我已经得到了这样的工作:

  • 文件 -> 新项目 -> ASP .Net WebForms 站点
  • 在 Page.Load 中,我们使用 Request 和 Response 成员进行序列化
  • 修改响应中的 ContentType
  • 然后我们调用 Response.End()
  • 我们还必须将 Async="true" 放在 aspx 页面中

所有这些似乎都运行良好。

有没有更好的方法来处理这个问题?我们希望我们的服务在 IIS 中运行,但我们不知道将其设为 aspx 页面是否有任何开销。

将它与 WCF 挂钩有什么好处吗?

【问题讨论】:

    标签: c# wcf web-services iis serialization


    【解决方案1】:

    好吧,如果您的页面没有实际的 Web 表单组件,您可以使用 handler page。这将减少一些开销。

    <%@ WebHandler Language="C#" Class="Handler" %>
    
    using System;
    using System.Web;
    
    public class Handler : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
    
            context.Response.ContentType = "text/xml";
            Serializer.Serialize(obj, context.Response.Stream); //Write
    
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    }
    

    【讨论】:

    • 这个链接更新了一点:mvolo.com/blogs/serverside/archive/2007/08/15/… 使用 WCF 有什么好处吗?或者这对于这种情况来说太过分了?
    • 好吧,就像所有事情一样 - 这取决于。如果将您的服务提供给不同类型的客户有好处,那么可能会有好处。但是,让服务与自定义序列化程序一起工作可能需要一些工作(我不知道需要多少)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多