代码之家  ›  专栏  ›  技术社区  ›  Jacob Adams

Silverlight中处理异常的最佳实践是什么?

  •  12
  • Jacob Adams  · 技术社区  · 15 年前

    在ASP.NET中,我通常在服务器端记录异常,在Windows窗体中,我可以在服务器端记录异常,也可以写入客户机上的日志文件。Silverlight似乎介于两者之间。

    我想知道其他人都在做什么来处理他们的Silverlight异常,我很好奇是否有任何最佳实践已经出现。

    5 回复  |  直到 12 年前
        1
  •  5
  •   TJB    15 年前

    对于可以存储和跟踪的实际日志记录,您需要在服务器上进行记录,因为无法保证客户端上的任何内容都将被持久化。

    我建议在服务器端Web服务(可能您已经有一个)上公开一个“logEvent(..)”方法,该方法将执行与在ASP.NET中相同的日志记录操作。

    这是一个关于Silverlight中基本Web服务调用的视频,如果您还没有这样做的话 http://silverlight.net/learn/learnvideo.aspx?video=66723

    不过,我不确定是否有任何日志记录最佳实践,我的第一个猜测是在服务器上登录Web服务并将其公开给客户机。

    希望这有帮助!

        2
  •  4
  •   Srdjan Jovcic    15 年前

    我想说Silverlight更适合模型的ASP.NET方面。你有服务网页的服务器。页面Ping数据服务上的一个对象(Silverlight应用程序),用于获取和显示数据。

    所有数据访问都发生在服务器端,不管数据是用于在服务器上创建ASP.NET页还是原始发送到RIA进行显示。我会在服务器端的数据服务中记录任何故障(事件日志工作正常),并且不允许任何异常传递到WCF。当客户机没有收到预期的数据(它得到了空集合或类似的东西)时,它向用户显示一般的数据访问错误。我们可能需要很快对此进行扩展以传递更多信息(区分拒绝访问/丢失数据库/基础结构故障/内部错误等),但我们不打算向客户机传递异常错误消息。

    对于客户端,有时我们可能会遇到异步调用超时的情况——这只是另一条消息。对于来自客户机代码的一般异常(通常是我们代码中的错误),我只是将异常传递给浏览器,以便以与任何脚本异常相同的方式显示。

        3
  •  4
  •   Grigori Melnik    13 年前

    还可以看看新的 Silverlight Integration Pack for Enterprise Library Microsoft patterns & practices . 它支持将异常记录到独立存储或远程服务中,并且可以通过外部配置中的策略或以编程方式配置。还支持批记录和自动重试(在偶尔连接的情况下)。

        4
  •  4
  •   Matthieu kelly    13 年前

    使用 Isolated Storage available for Silverlight application . 你应该把你的日志放在这里。

    然后,您可以开发一个机制,将用户日志发送到类似Windows Bug Report Service的Web服务。

        5
  •  0
  •       15 年前

    这在很大程度上取决于您正在开发的应用程序的类型。

    如果它是基于MVC/MVP的体系结构,那么您的模型,或者至少其中的大部分,将在服务器上,我可以想象,在这里,您的大多数异常将被抛出,因此您可以将它们记录在那里,并选择是否向用户显示消息。

    对于来自客户机的异常,您可能希望了解详细信息,因此只需将其发回即可。