我们的服务结构应用程序包括一个公开HTTP端点的无状态服务OwinCommunicationListener.
此服务的ServiceManifest.Xml指定服务端点 <Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8090" />
然后可以通过http:// localhost:8090 /上的浏览器访问无状态服务
我们要做的是通过ApplicationManifest在同一Service Fabric应用程序中的不同端点上实例化此服务的多个实例.
在ServiceManifestImport进口我们的服务包,并允许配置覆盖在应用程序级别.我们无法以这种方式覆盖ServiceEndpoint,只能覆盖Settings.xml中的值
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="FooServicePkg" ServiceManifestVersion="1.0.0" >
<ConfigOverrides Name="Config">
<Settings>
<SectionName Name="MySettings">
<Parameter Name="MySetting" Value="SomeValue">
</Settings>
</ConfigOverrides>
</ServiceManifestImport>
Run Code Online (Sandbox Code Playgroud)
我们可以通过指定多个Service节点来创建服务的命名实例DefaultServices
<DefaultServices>
<Service Name="FooInstanceA">
<StatelessService ServiceTypeName="FooType" InstanceCount="1" />
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="FooInstanceB">
<StatelessService ServiceTypeName="FooType" InstanceCount="1" />
<SingletonPartition />
</StatelessService>
</Service>
</DefaultServices>
Run Code Online (Sandbox Code Playgroud)
是否可以通过配置为每个服务实例指定配置覆盖?
我尝试通过使用服务名来确定服务实例在特定端口上侦听以确定哪个端口,以便FooInstanceA侦听端口8090并且FooInstanceB侦听8091.
显然,Service Fabric在部署期间会发挥一些作用,因为当FooInstanceB侦听除ServiceEndpoint配置上指定的端口之外的端口时,该服务无法访问.
第一个原因是端点上没有设置DACL,这是通过运行来解决的;
netsh http add urlacl http://+:8091/ user=everyone listen=yes
Run Code Online (Sandbox Code Playgroud)
这允许服务在Service Fabric Explorer中出现并显示健康,但是当我们使用http:// localhost:8091 / …
我刚刚开始使用NHibernate,我在运行更复杂的查询时遇到了麻烦.
我有附加标签列表的实体.用户将提供两个标签列表,包括和排除.
我需要找到包含所有包含标记的所有实体,并排除在排除列表中包含任何标记的任何实体.
下面是我的第一个努力 - 这显然是错误的,因为它列出了所有包含任何包含标签的Display对象而不是全部!
任何援助都非常适合.
var includeTagIds = (from tag in regime.IncludeTags select tag.Id).ToList<int>();
var excludeTagIds = from tag in regime.ExcludeTags select tag.Id;
var displays = session.QueryOver<Display>()
.JoinQueryOver<DisplayTag>(display => display.Tags)
.WhereRestrictionOn(tag => tag.Id)
.IsIn(includeTagIds).List().Distinct();
return displays.ToList();
Run Code Online (Sandbox Code Playgroud) 我正在尝试组合一个类来处理使用System.Io.Pipes提供的匿名管道的进程之间的Ipc.
我遇到的问题是,当我使用单个进程测试类时,管道设置正确,我可以在客户端和服务器之间发送数据而没有问题.但是,当我将客户端和服务器拆分为单独的进程(在同一台机器上)时,客户端无法连接到服务器管道的末尾.
错误System.Io.Exception调用时引发无效的管道句柄
_outboundPipeServerStream = new AnonymousPipeClientStream(PipeDirection.Out, serverHandle);
Run Code Online (Sandbox Code Playgroud)
该类的完整代码粘贴在下面.
基本上它的工作是这样的;
所以现在我们有两个匿名管道,指向服务器和客户端之间相反的方向.
这是我的IPC类的完整代码
public class MessageReceivedEventArgs : EventArgs
{
public string Message { get; set; }
}
public class IpcChannel : IDisposable
{
private AnonymousPipeServerStream _inboundPipeServerStream;
private StreamReader _inboundMessageReader;
private string _inboundPipeHandle;
private AnonymousPipeClientStream _outboundPipeServerStream;
private StreamWriter _outboundMessageWriter;
public delegate void MessageReceivedHandler(object sender, MessageReceivedEventArgs e);
public event MessageReceivedHandler MessageReceived;
private Thread _clientListenerThread;
private bool _disposing = false;
public IpcChannel()
{
SetupServerChannel(); …Run Code Online (Sandbox Code Playgroud) 我现在首先在一个简单的测试应用程序中使用EF5代码来测试各种功能.我已经在两个代表一对多链接的实体之间定义了"识别关系".在这里,我定义了一个具有许多子Photo实体的PhotoCollection;
public class PhotoCollection
{
public int Id { get; set; }
public virtual ISet<Photo> Photos { get; private set; }
public PhotoCollection()
{
Photos = new HashSet<Photo>();
}
}
public class Photo
{
[Key, ForeignKey("Parent"), Column(Order = 1)]
public int PhotoCollectionId { get; set; }
[Key, Column(Order = 2)]
public int PhotoId { get; set; }
public virtual PhotoCollection Parent { get; set; }
[Required, MaxLength(200)]
public string FilePath { get; set; }
public Photo()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我的OnModelCreating实现包括; …
entity-relationship one-to-many ef-code-first entity-framework-5
我在实体框架中定义外键关系时遇到了麻烦.我把代码煮到最低限度来证明问题.
该模型定义为;
public class AccessControlList
{
[Key] public int Id { get; set; }
public string Name { get; set; }
}
public class ManagedFile
{
[Key] public int Id { get; set; }
public string Name { get; set; }
public virtual AccessControlList AccessControl { get; set; }
}
public class ManagedFolder
{
[Key] public int Id { get; set; }
public string Name { get; set; }
public virtual AccessControlList AccessControl { get; set; }
public virtual ISet<ManagedFile> …Run Code Online (Sandbox Code Playgroud)