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

问题描述:

我们有几个应用程序将传递一个令牌对象,我想知道如何做到这一点的最佳方法。在asp.net应用程序之间传递对象的最佳方式

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

  1. 我们将创建一个WCF应用程序并通过datacontract引用它吗?
  2. 如何序列化并通过http发送它? (每个应用程序都有一个对象的引用dll)
  3. Querystring? (我真的不认为这会很好,但是还是放了下来)

让我澄清一下。我不关心坚持数据,但更多的是当使用和参考这个类时的最佳实践方法

反正,只是寻找你的想法比我更聪明的人。

感谢 乔纳森

+0

请显示一些代码...这是什么样的“标记对象”?多大 ?你多久一次通过它?需要多少安全/保密? – Yahia 2012-01-06 18:59:54

+0

我还没有任何代码。但它会很小。可以说给定类中的5个属性 – jdross 2012-01-06 19:01:22

+0

甚至一个属性可以是1 MB甚至1 GB ...那么其他问题(频率,安全性等)呢? – Yahia 2012-01-06 19:04:44

这确实取决于你想做的事,但假设你想保持周围路过的对象,唯一的方法来跟踪它真的是用一个cookie或会话对象。

ASP.Net使用加密的令牌以这种方式跟踪安全性 - 它需要一定的值并以加密的cookie值将其推送到客户端。然后,它可以对每个请求进行解密和反序列化,以跟踪它们。

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

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

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

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

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

有几个原因,这种做法:

1)安全性:如果在这个类的任何远程的重要信息,你肯定不希望这被传递到客户端浏览器和背部,甚至如果它被加密。 2)速度:如果信息在用户的浏览器中不是必需的,那么就没有理由将输入和输出管道(来自和来自最终用户)加载到浏览器,只是为了传输数据到浏览器跟踪它。同样,除非用户对应用程序进行的每一次调用都需要,否则将数据存储在会话状态中会过度消耗,并且除非会话状态存储在SQL Server中,否则如果重置asp.net,则会导致数据丢失。

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