在asp.net应用程序之间传递对象的最佳方式
本文关键字:对象 最佳 方式 asp net 应用程序 之间 | 更新日期: 2023-09-27 18:19:35
我们有一些应用程序将传递令牌对象,我想了解实现这一点的最佳方法。
对于初学者来说,这个令牌对象有点简单。它大约有5个属性。
- 我们会创建一个WCF应用程序并通过数据合约引用它吗
- 序列化它并通过http帖子发送它怎么样?(每个应用程序都有一个引用的对象dll)
- 查询字符串?(我真的不认为这会有什么好处,但还是把它挂起来)
让我也澄清一下这一点。我不关心持久化数据,但更多的是在使用和引用此类时的最佳实践方法
不管怎样,只是从你们这些比我聪明得多的人那里寻找想法。
谢谢Jonathan
如果所有的asp.net应用程序都在同一个网络上,那么最简单、最安全的方法可能是将类数据存储到自己的表(数据库)中,获取该条目的唯一id引用(GUID或标识),然后传递该引用。
这类似于IIS用于在SQL数据库中缓存会话状态的方法。
这种方法有几个原因:
1) 安全性:如果这个类中有任何非常重要的信息,你当然不希望这些信息被传递到客户端浏览器并返回,即使它是加密的。
2) 速度:如果用户的浏览器中不需要这些信息,那么就没有理由为了跟踪数据而将数据来回传输到浏览器,从而给你的输入和输出管道(与最终用户之间)带来负担。同样,除非用户对应用程序的每一次调用都需要它,否则将数据存储在会话状态下是过度的,除非会话状态存储在SQL Server中,否则如果重置asp.net,它将丢失。
3) 可维护性:将数据存储在具有离散列的表中,而不是使用序列化副本,这意味着你不必每次更新时都更新使用该对象的每个应用程序。如果将列添加到表中,那么不关心这些列的应用程序就不必更新。同样,如果删除列,安全的数据检索实践将允许所有应用程序跳过类存储的内部属性。
这确实取决于你想做什么,但假设你想继续传递对象,跟踪它的唯一方法就是使用cookie或会话对象。
ASP.Net使用加密的令牌来跟踪安全性——它采用特定的值,并在加密的cookie值中将它们推送到客户端。然后,它可以在每次请求时对它们进行解密和反序列化,以跟踪它们。
或者,如果您使用的是ASP.Net,您可以始终将对象存储在会话中并使用它。(你需要好好做,但这是另一个问题的主题。)
当然,您可以始终将一个持久的cookie推送到浏览器,并将其用作引用数据库中序列化对象的密钥。
如果您想将这样的对象存储在一个字符串中,以便在站点之间传递,那么您可能希望使用JSON来实现这一点。您可以在页面的HTML中写出对象,并使用javascript将其发送到另一台服务器。