小编Fra*_* B.的帖子

WCF:从服务器访问服务实例

语境:

我需要开发一个监视服务器来监视我们的一些应用程序(这些应用程序在c#中).所以我决定使用WCF开发系统,这似乎适合我的需求.

这些应用程序在启动时必须将自己注册到监视服务器.之后,监视服务器可以调用这些应用程序的Start或Stop方法.

一切都在同一台机器上完全执行,无需远程执行任何操作.

所以我开发了一个很好的原型,一切正常.每个应用程序将自己注册到监视服务器.

题:

ApplicationRegistrationService(请参阅下面的代码)是监视服务的实现,由于ServiceBehavior属性,它是一个单例实例.

这是我的问题:我想访问ApplicationRegistrationService每个示例的内容,从我的服务器(ConsoleMonitoringServer在示例中)连接的应用程序的数量.但是,我不知道如何实现这一目标.

我是否需要在我的服务器中创建一个通道,就像我在客户端(ConsoleClient)中所做的那样,或者它是否有更好的方法来实现这一目标?

码:

出于此问题的目的,代码非常简化:

//The callback contract interface
public interface IApplicationAction
{
    [OperationContract(IsOneWay = true)]
    void Stop();

    [OperationContract(IsOneWay = true)]
    void Start();
}

[ServiceContract(SessionMode = SessionMode.Required, 
    CallbackContract = typeof(IApplicationAction))]
public interface IApplicationRegistration
{
    [OperationContract]
    void Register(Guid guid, string name);

    [OperationContract]
    void Unregister(Guid guid);
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
    ConcurrencyMode = ConcurrencyMode.Multiple)]
public class ApplicationRegistrationService : IApplicationRegistration
{
    //IApplicationRegistration Implementation
}

public class ApplicationAction : IApplicationAction …
Run Code Online (Sandbox Code Playgroud)

c# wcf client-server

6
推荐指数
1
解决办法
3559
查看次数

Wix:包含多个wxs文件的合并模块

所以,我正在尝试创建一个合并模块,我有多个wxs文件.我认为一切都很好,因为我的项目的构建成功了.后来,我意识到其中一个辅助wxs文件的Source属性中使用的路径是完全错误的,但编译器没有给出以下错误:

系统找不到文件'..\..\release_area\WrongPath\Component2.dll'.

在辅助wxs文件中,我添加了一个DirectoryRef元素,引用主wxs文件中的文件夹AssemblyFolder来创建两个文件之间的引用.

主wxs文件:

<Module Id="MyModule" Language="1033" Version="1.0.0.0">
    <Package InstallerVersion="200" Platform="x86"/>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="AssemblyFolder">   
            <Component Id="Component1.dll">
             <File Id="Component1.dll" Name="Component1.dll" 
          KeyPath="yes" Assembly=".net" 
          Source="..\..\release_area\Comp\Component1.dll" />
         </Component>
        </Directory>
    </Directory>
</Module>
Run Code Online (Sandbox Code Playgroud)

辅助wxs文件:

<Fragment>
    <DirectoryRef Id="AssemblyFolder">
        <Component Id="Component2.dll">
         <File Id="Component2.dll" Name="Component2.dll" 
             KeyPath="yes" Assembly=".net" 
             Source="..\..\release_area\WrongPath\Component2.dll" />
     </Component>
    </DirectoryRef>
</Fragment>
Run Code Online (Sandbox Code Playgroud)

只是为了澄清:为了测试,我<Component Id="Component2.dll">直接在主wxs中复制了我并得到错误:系统找不到文件'..\..\release_area\WrongPath\Component2.dll'.

所以,我的猜测是辅助wxs文件和主wxs文件之间的引用是完全错误的,这就是为什么编译器不验证文件路径但我无法弄清楚问题是什么.

windows-installer wix wix3 merge-module

4
推荐指数
1
解决办法
4887
查看次数

DevExpress LookUpEdit问题

这应该是一个相当容易的任务,但是我有点难过,我有一个LookUpEdit控件,我已将它数据绑定到数据源并正确设置了displaymember和ValueMenber.

此控件现在正确填充.

我的问题是通常我会提取一些数据,然后将其"设置"为ID,例如:

LookUpEdit.EditValue = [我的数据库中的一些ID]

但是在这种特殊情况下,我无权访问ID但我可以访问displymember值(来自数据库),那么如何仅在给定displaymember值的情况下设置LookUpEdit控件呢?

data-binding combobox devexpress

3
推荐指数
1
解决办法
7249
查看次数

2
推荐指数
1
解决办法
396
查看次数

要使用哪个集合类:Hashtable还是Dictionary?

我需要定义一个带有内部集合对象的类,以通过字符串键来保存不同类型的值(例如string,int,float,DateTime和bool).我可以使用Hashtable,因为它不是强类型集合类,而Dictionary用于强类型项(尽管我可以使用对象作为Dictionary).

这是我想要定义我的类及其用法的情况:

 public class MyBaseClass<D> {
   protected Hashtable ht = new Hashtable();

   MyClass public SetValue<T>(string key, T value)
   {
       ht.Add(key, value);
       return this;
   }

   public abstract D GetObject();
 }

 // Example of using the base class for data as class Data1
 public MyClass<Data1> : MyBaseClass<Data1> {
      public Data1 GetObject() {
         return new Data1 {
             Property1 = ht["key1"] as string,
             Property2 = Int.Parse(ht["key2"].ToString())
          }
 }
Run Code Online (Sandbox Code Playgroud)

以上示例,我不确定在MyBaseClass中保存数据的最佳集合是什么?我读了一些关于Hashtable的文章.它是一个过时的集合,与Dictionary集合相比性能要慢得多.我应该使用.Net 3.5中的Dictionary或任何其他可用的集合吗?

c# collections dictionary

1
推荐指数
1
解决办法
2303
查看次数

删除asp.net中的文件

我写下面的代码来删除文件:

FileInfo file = new FileInfo(filename);
file.Delete(Path);
Run Code Online (Sandbox Code Playgroud)

但我收到file.Delete(路径)需要1个参数的错误请帮助我

c# asp.net

0
推荐指数
1
解决办法
568
查看次数