【问题标题】:Using "struct" for grouping WebMethods in a WebService?使用“结构”对 Web 服务中的 Web 方法进行分组?
【发布时间】:2013-02-05 14:00:13
【问题描述】:

定义: 未能在结构或类中对函数进行分组,但我无法在浏览器上列出它们。 并获取 WSDL,因为无法在浏览器上查看 Web 方法。

*.asmx 文件如下所示:

public class myProfile : System.Web.Services.WebService
{
        public struct AddressFunctions
        {           
           //[WebMethod] here
        }
        public struct MembershipFunctions
        {      
           //[WebMethod] here     
        }
}

目标: 我的方法是,以以下方式访问函数: myProfile.AddressFunctions.methodName();会工作的。

有没有办法解决这个问题?或者 为了可读性和易用性,你们如何实现在 Web 服务中对 Web 方法进行分组。

【问题讨论】:

    标签: asp.net web-services c#-4.0 asmx webmethod


    【解决方案1】:

    通过使用结构声明,您可以有效地将这些方法从“myProfile”类中删除。将它们包装成一个区域,如下所示:

    public class myProfile : System.Web.Services.WebService
    {
        #region ----- Address functions --------------------------------
    
           //[WebMethod] here
    
        #endregion
    
        #region ----- Membership functions -----------------------------
    
           //[WebMethod] here     
    
        #endregion
    }
    

    如果需要协议层面的分离,应该引入更多的web服务类。

    【讨论】:

    • 我的方法是,以以下方式访问函数:myProfile.AddressFunctions.methodName();会工作的。
    • 不,这行不通。您可以使用 URL 中的文件夹来实现这一点。但是,您宁愿更改您的解决方案以使用 WCF;没有充分的理由在新代码中继续使用 ASMX。
    【解决方案2】:

    您只能按服务中的顺序“分组”方法。

    顺便说一句,您知道 ASMX 是一项传统技术,不应该用于新开发吗?您应该改用 WCF。

    另外,你说的“可读性”是什么意思?谁会读它?

    【讨论】:

    • 我的方法是,以以下方式访问函数:myProfile.AddressFunctions.methodName();会工作。当我不希望其他开发人员花费太多时间来跟踪我的代码时,我将可读性作为首要要求。
    • 这是一个网络服务。功能比风水重要得多。
    • 此外,您不必将所有方法放在一个 .asmx 文件中。有addressingfunctions.asmx 和shipping functions.asmx。并且,再次使用 WCF。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多