Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 请求建议:如何将WCF Web服务请求信息记录到数据库_C#_Wcf - Fatal编程技术网

C# 请求建议:如何将WCF Web服务请求信息记录到数据库

C# 请求建议:如何将WCF Web服务请求信息记录到数据库,c#,wcf,C#,Wcf,我对.NETWeb服务的编码相当陌生。我发现自己正在编写一个包含大约20个web服务的.NETWCF应用程序。我想记录以下事件: 请求(带有效负载-谁和什么) 响应(查询是否有效,数据是否返回) 错误(是否存在某种错误) 我编写了一个简单的函数,在每个点上执行SQL插入。每个web服务请求都至少得到两个插入—一个在请求时插入,另一个在响应时插入。10+个方法中的每一个都至少需要4个日志调用。我的书维护得太多了 我认为这种方法太难,太麻烦了——我需要做大量的工作来维护它。我以前在Axis2中使用过

我对.NETWeb服务的编码相当陌生。我发现自己正在编写一个包含大约20个web服务的.NETWCF应用程序。我想记录以下事件:

  • 请求(带有效负载-谁和什么)
  • 响应(查询是否有效,数据是否返回)
  • 错误(是否存在某种错误)
  • 我编写了一个简单的函数,在每个点上执行SQL插入。每个web服务请求都至少得到两个插入—一个在请求时插入,另一个在响应时插入。10+个方法中的每一个都至少需要4个日志调用。我的书维护得太多了

    我认为这种方法太难,太麻烦了——我需要做大量的工作来维护它。我以前在Axis2中使用过LOG4J(我没有配置),它能够在web服务器中记录以上所有内容。需要抛出异常,但请求/响应日志记录是自动处理的。我对.NET的了解还不够透彻,以至于我觉得自己对自己的选择掌握得很好

    此时,我正在考虑Log4net或企业库语义日志应用程序块。我有更好的选择吗?对于新手来说,哪门课程最简单,有什么建议吗

    谢谢,
    Matt

    问题的解决方案需要分为两部分:

  • 如何轻松捕获每个运营合同的请求/响应?(即不在每个方法的开头/结尾添加特殊代码)
  • 如何有效地将数据加载到数据库中
  • 对于1:您可以创建消息检查器并将其注册为服务行为。这意味着您将拥有一个拦截所有请求和响应的单点—允许您在一个位置处理它们。这说明了如何编写和部署这样的检查器。这很容易

    对于2:log4net和ENtLiB绝对是主要候选对象

    选择的一些注意事项:

    • 就日志功能而言,对于大多数场景,它们都同样强大
    • 在我看来,log4net的API更友好
    • EntLib是一个大型(但功能完善)库。但它确实有比log4not更多的依赖性。如果您不打算使用除日志记录以外的其他模块,那么这可能是一种过度使用
    无论您如何选择,都需要考虑性能因素。您没有提到预期的请求数量,但在大量情况下,记录每个请求都会影响性能。
    有各种各样的策略可以解决这个问题,但这是在您分析应用程序之后的一个故事。

    您的问题的解决方案需要分为两部分:

  • 如何轻松捕获每个运营合同的请求/响应?(即不在每个方法的开头/结尾添加特殊代码)
  • 如何有效地将数据加载到数据库中
  • 对于1:您可以创建消息检查器并将其注册为服务行为。这意味着您将拥有一个拦截所有请求和响应的单点—允许您在一个位置处理它们。这说明了如何编写和部署这样的检查器。这很容易

    对于2:log4net和ENtLiB绝对是主要候选对象

    选择的一些注意事项:

    • 就日志功能而言,对于大多数场景,它们都同样强大
    • 在我看来,log4net的API更友好
    • EntLib是一个大型(但功能完善)库。但它确实有比log4not更多的依赖性。如果您不打算使用除日志记录以外的其他模块,那么这可能是一种过度使用
    无论您如何选择,都需要考虑性能因素。您没有提到预期的请求数量,但在大量情况下,记录每个请求都会影响性能。
    有各种各样的策略来处理这个问题,但这是一个关于你的应用程序的故事。

    < P>如果你只是在寻找事务审计日志(也许支持开发、调试和早期实现阶段),那么你可能想考虑使用WCF跟踪和消息日志记录功能。WCF跟踪功能提供了一种相对简单的内置方法来监视与WCF服务之间的通信。对于测试和调试环境,请配置信息性或详细的活动跟踪,并启用消息日志记录。在最初部署和测试新服务或向现有服务添加新操作和/或通信绑定时,活动跟踪和消息日志记录的组合应该是有益的。如果您关心维护,那么可以将跟踪日志设置为使用设置的大小,然后“重新循环”文件空间

    以下链接提供了一个很好的概述:


    在您正在寻找事务审计日志(也许支持开发、调试和早期实现阶段)的情况下,您可能需要考虑使用WCF跟踪和消息日志记录功能。WCF跟踪功能提供了一种相对简单的内置方法来监视与WCF服务之间的通信。对于测试和调试环境,请配置信息性或详细的活动跟踪,并启用消息日志记录。在最初部署和测试新服务或向现有服务添加新操作和/或通信绑定时,活动跟踪和消息日志记录的组合应该是有益的。如果您关心维护,那么可以将跟踪日志设置为使用设置的大小,然后“重新循环”文件空间

    以下链接提供了一个很好的概述: