在asp.net应用程序之间传递对象的最佳方法

时间:2012-01-06 18:55:06

标签: c# asp.net .net vb.net

我们有一些应用程序会传递一个令牌对象,我想知道这样做的最佳方法。

对于初学者来说,这个令牌对象有点简单。它将有大约5个属性左右。

  1. 我们会创建一个WCF应用并通过datacontract引用它吗?
  2. 如何序列化并通过http帖子发送? (每个应用程序都有一个引用的对象dll)
  3. 查询字符串? (我真的认为这不会很好,但仍然把它放好)
  4. 我也要澄清一下。我并不关心持久化数据,而是在使用和引用此类时更多的最佳实践方法

    无论如何,只是寻找那些比我更聪明的人的想法。

    由于 乔纳森

2 个答案:

答案 0 :(得分:1)

如果所有的asp.net应用程序都在同一个网络上,那么最简单和最安全的方法可能是将类数据存储到自己的数据库表中,获取对该条目的唯一ID引用(GUID或标识) ),然后传递该参考。

这类似于IIS用于缓存SQL数据库中的会话状态的方法。

这种方法有几个原因:

1)安全性:如果本课程中有任何远程重要信息,您肯定不希望将其传递给客户端浏览器并返回,即使它已加密。

2)速度:如果用户的broswer不需要这些信息,那么没有理由将输入和输出管道(与最终用户之间的负载)转移到数据来回浏览器只是为了跟踪它。同样地,除非用户对应用程序进行的每次调用都需要它,否则将数据存储在会话状态是过度的,除非会话状态存储在SQL Server中,否则如果重置asp.net则会丢失。 / p>

3)可维护性:将数据存储在具有离散列的表中而不是使用序列化副本意味着每次对其进行更新时,您不必更新使用该对象的每个应用程序。如果将列添加到表中,则不必关心那些不关心这些列的应用程序。同样,如果删除了列,安全数据检索实践将允许所有应用程序跳过存储类的内部属性。

答案 1 :(得分:0)

它确实取决于你想要做什么,但假设你想继续传递对象,跟踪它的唯一方法就是使用cookie或会话对象。

ASP.Net使用加密令牌以这种方式跟踪安全性 - 它采用某些值并以加密的cookie值将它们推送到客户端。然后它可以在每次请求时对它们进行解密和反序列化以跟踪它们。

或者,如果您使用的是ASP.Net,则可以始终将对象存储在会话中并使用它。 (你需要正确地做,但这是另一个问题的主题。)

当然,你总是可以将一个持久的cookie推送到浏览器并将其用作引用数据库中序列化对象的键。

如果要将这些对象存储在字符串中以在站点之间传递,您可能希望使用JSON进行此操作。您可以在页面的HTML中编写对象,并使用javascript将其发送到另一台服务器。