在我的应用程序中,我希望客户端JS代理对象与服务器上的相应.NET对象进行通信 . 我有许多不同类型的对象 . 每种类型都有自己的一套方法 .
So what I need is a JS-object to C#-object RPC communication.
我的第一个想法是使用Signal / R Hub实现这一点,并利用这个漂亮的自动生成的RPC代理功能 . 但我不确定这是否可行 . 我知道集线器是短暂的,但我正在寻求SignalR的一些支持来做到这一点 .
我想继续如下:
-
服务器:为每种对象类型定义一个C#接口 .
-
服务器:为每个实现适当接口的对象类型定义集线器类 .
-
服务器:为每个实现接口的对象类型定义一个类 .
-
客户端:通过url检索代理 . url包含一个带有对象实例id的参数
-
客户端:调用代理的功能
-
服务器:当在集线器中调用该函数时,我想以某种方式获取对象实例的id . (也许来自连接对象?)有了这个id,我想在字典中查找我的对象并调用apporpriate方法 .
我知道一个解决方案可能是在每个方法中将对象id作为参数,但我想避免这种情况 .
1 回答
如果对象ID与SignalR连接具有一对一的对应关系,则可以使用
Hub.Context.ConnectionId
而不是将对象ID作为参数传递给每个方法 .Hub.Context
具有其他有用的属性来访问请求cookie和活动IPrincipal
之类的内容 .http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#contextproperty