wcf 和隔离存储- 需要解释
wcf and isolated storage- needed explanation
我脑子里有一些想法,我想把它们放在适当的架子上,但以一般的方式,以便将来能够传播我的知识。
所以,假设我是 运行 WCF 服务,它包含两种方法:一种将一些对象的列表发送到客户端(当客户端需要时),第二种改变对象的状态基于客户端操作的对象。通过 WCF 发送的那些对象存储在服务端的隔离存储中。
现在,让我把我的问题分组:
1) 首先,我想知道如果许多客户将我的服务添加为服务参考会怎样。由于此服务使用独立存储(假设我正在使用存储进行组装),如果许多客户端想要同时更改数据会发生什么情况?我的意思是,隔离存储在这里是如何工作的,它是否为每个客户端生成不同的文件(这意味着它对许多用户来说是安全的,因为他们每个人都在操作不同的文件)?因为如果它存储在服务器端,那么我想它是每个人的一个文件。或者我可以自己决定配置隔离存储或服务器本身?如果是,如何?
2) 假设,这个文件对于每个客户端都是通用的。然后我必须提供一些 locking/unlocking 逻辑。关于 WCF,这有什么特别之处吗?你能提供关于这件事的任何好的文章吗?
独立存储文件由用户和程序集分隔,因此在您的情况下它是 IUSR_machine
,除非您使用模拟。所以你需要实现文件locking/unlocking。为什么不能使用 SQL 数据库作为存储?
更新:
模拟基本上允许您的进程 运行 在与拥有该线程的进程不同的安全上下文中。来自 https://msdn.microsoft.com/en-us/library/ms730088(v=vs.110).aspx
Typically, clients call a service to have the service perform some
action on the client’s behalf. Impersonation allows the service to act
as the client while performing the action.
另见 http://blogs.msdn.com/b/saurabs/archive/2012/07/16/wcf-learning-impersonation.aspx
你基本上把这样的东西放到你的配置文件中:
<serviceAuthorization impersonateCallerForAllOperations="true" />
我脑子里有一些想法,我想把它们放在适当的架子上,但以一般的方式,以便将来能够传播我的知识。
所以,假设我是 运行 WCF 服务,它包含两种方法:一种将一些对象的列表发送到客户端(当客户端需要时),第二种改变对象的状态基于客户端操作的对象。通过 WCF 发送的那些对象存储在服务端的隔离存储中。
现在,让我把我的问题分组:
1) 首先,我想知道如果许多客户将我的服务添加为服务参考会怎样。由于此服务使用独立存储(假设我正在使用存储进行组装),如果许多客户端想要同时更改数据会发生什么情况?我的意思是,隔离存储在这里是如何工作的,它是否为每个客户端生成不同的文件(这意味着它对许多用户来说是安全的,因为他们每个人都在操作不同的文件)?因为如果它存储在服务器端,那么我想它是每个人的一个文件。或者我可以自己决定配置隔离存储或服务器本身?如果是,如何?
2) 假设,这个文件对于每个客户端都是通用的。然后我必须提供一些 locking/unlocking 逻辑。关于 WCF,这有什么特别之处吗?你能提供关于这件事的任何好的文章吗?
独立存储文件由用户和程序集分隔,因此在您的情况下它是 IUSR_machine
,除非您使用模拟。所以你需要实现文件locking/unlocking。为什么不能使用 SQL 数据库作为存储?
更新:
模拟基本上允许您的进程 运行 在与拥有该线程的进程不同的安全上下文中。来自 https://msdn.microsoft.com/en-us/library/ms730088(v=vs.110).aspx
Typically, clients call a service to have the service perform some action on the client’s behalf. Impersonation allows the service to act as the client while performing the action.
另见 http://blogs.msdn.com/b/saurabs/archive/2012/07/16/wcf-learning-impersonation.aspx
你基本上把这样的东西放到你的配置文件中:
<serviceAuthorization impersonateCallerForAllOperations="true" />