我开始玩Actor模型,尤其是Akka.NET.总的来说,我认为我对所有内容都有一个很好的了解,但当然魔鬼在细节上.我在考虑在现有的代码库中采用Akka.NET,因此我想估计可以保留多少现有的抽象.我们的想法是可以保留一些特定的高级接口,并且可以编写一些适配器实现以在演员世界和现有接口的用户之间无缝地来回传递,但是我不确定是否推荐了这些接口我应该面对的具体问题类型.
琐碎的例子:
public interface IGetSet<in TK, TV>
{
TV Get(TK key);
void Set(TK key, TV value);
}
public class GetSet<TK, TV> : IGetSet<TK, TV>
{
private readonly ActorRef _getSetActor;
public GetSet(ActorRefFactory system)
{
_getSetActor = system.ActorOf(Props.Create(() => new GetSetActor()));
}
public TV Get(TK key)
{
var x = _getSetActor.Ask<TV>(new GetSetActor.Get(key));
return x.Result; //blocking, I know, it's just an example
}
public void Set(TK key, TV value)
{
_getSetActor.Tell(new GetSetActor.Set(key, value));
}
class GetSetActor : ReceiveActor
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试groupBy与 RxJs一起使用,我需要使用对象作为键。如果我不这样做并且我使用,例如,像这样的简单字符串:
var types = stream.groupBy(
function (e) { return e.x; }); //x is a string
Run Code Online (Sandbox Code Playgroud)
然后一切顺利,我的订阅被调用一次,并且只为每个不同的键调用一次。但是,如果我尝试使用对象,则会为 中的每个元素调用订阅stream,即使键恰好与之前的键相同。
对象相等性当然存在问题,但这是我感到困惑的地方,因为我不明白如何使用groupBy. 最新版本的文档说有第三个参数可以是comparer,但它永远不会被调用。早期的文档谈到了一个完全不同的想法的关键序列化器,但两种方法都不适合我。
查看 Rx 源代码,我看到尝试检查getHashCode函数,但我没有找到有关它的文档。像这样的代码:
var types = stream.groupBy(
function (e) {
return { x: e.x, y: e.y }; //is this valid at all?
},
function (e) { return e; },
function (...) { return ???; }); //what am I supposed to do here?
Run Code Online (Sandbox Code Playgroud)
是我想写的,但没有运气,我为第三个回调所做的一切都没有被调用。
这里有什么问题?
我有:
var result = _client.Search<ElasticFilm>(new SearchRequest("blaindex", "blatype")
{
From = 0,
Size = 100,
Query = titleQuery || pdfQuery,
Source = new SourceFilter
{
Include = new []
{
Property.Path<ElasticFilm>(p => p.Url),
Property.Path<ElasticFilm>(p => p.Title),
Property.Path<ElasticFilm>(p => p.Language),
Property.Path<ElasticFilm>(p => p.Details),
Property.Path<ElasticFilm>(p => p.Id)
}
},
Timeout = "20000"
});
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加一个荧光笔过滤器,但我不太熟悉对象初始值设定项 (OIS) C# 语法。我已经检查了NEST 官方页面和 SO,但似乎无法针对(OIS)返回任何结果。
我可以在 Nest.SearchRequest 类中看到 Highlight 属性,但我没有足够的经验(我猜)从那里简单地构建我需要的东西 - 关于如何使用带有 OIS的荧光笔的一些示例和解释会很热门!