标签: multiple-instances

记录多实例应用程序的最佳实践?

我终于尝试了我的WPF桌面应用程序的log4net.

我正在努力解决RollingFileAppender没有内置支持多实例应用程序的事实.

我不喜欢将应用程序限制为单个实例只是为了让logger满意.单一的手术技巧都是丑陋的黑客.

在日志文件的文件名中使用进程ID也不够好.这有可能占用无限空间,因为RollingFileAppender在这种情况下是无用的.

一种解决方案可能是将日志发送到不同的进程,这将负责将输出序列化为文件.但这会带来新的麻烦.

你对此有何看法?

.net c# log4net multiple-instances

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

SQL Server实例名称的最大长度?

我需要知道以下版本的SQL Server实例名称的最大字符长度(如果它们之间存在差异.)

  • SQL Server 2000
  • SQL Server 2005
  • SQL Server 2008
  • SQL Server 2008 R2

(我正在开发一个应用程序,它将通过DMO/SMO API与SQL Server通信,并需要验证用户输入.)

经过大量谷歌搜索和BOL搜索后,我无法找到明确的答案.我找到了论坛问题和回复(在其他较小的网站上),但这些回复中的值范围从16到128个字符,没有提供支持文档或链接.

看起来这应该是一个简单的发现,但它没有我.任何帮助将非常感激.

sql-server multiple-instances

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

Python:获取字典中值最小但具有多个最小值的键

我正在尝试执行与获取与字典中的最小值对应的键相同的操作 ,其中我们希望获得与字典中的最小值对应的键.

最好的方式似乎是:

min(d, key=d.get)
Run Code Online (Sandbox Code Playgroud)

但是我想在具有多个最小值的字典上应用它:

d = {'a' : 1, 'b' : 2, 'c' : 1}
Run Code Online (Sandbox Code Playgroud)

请注意,上面的答案是:

>>> min(d, key=d.get)
'a'
Run Code Online (Sandbox Code Playgroud)

但是,我需要两个具有最小值的键,即ac.

什么是最好的方法?

(最终我想随机选择其中一个,但我不认为这是相关的).

python dictionary multiple-instances minimum

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

等待多个应用程序从批处理文件异步运行以完成

有一个简单的Windows批处理文件,它运行多个应用程序实例:

start app.exe param1
start app.exe param2
Run Code Online (Sandbox Code Playgroud)

有没有办法同时异步运行它们(上面做的)并等待它们完成执行其他操作 - 类似于C#

Task.WhenAll(tasksList.ToArray());
/* Process tasksList.Result */
Run Code Online (Sandbox Code Playgroud)


/ wait开关在这里没有帮助,如果特定实例仍在运行,可能会进行一些轮询.

batch-file multiple-instances wait

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

将100个Oracle实例合并到一个实例中的智慧

我们的应用程序在网络上运行,主要是一个查询工具,做一些交易.我们托管Oracle数据库.该应用程序始终为每个客户提供不同的Oracle实例.一个客户是支付我们提供我们的服务,该公司的员工,每个客户通常10,000-25,000名员工的公司.我们打算有几百个客户.我们每隔几年就会发布一次主要版本,并且迁移到新版本具有挑战性:我们可能会在客户站点组建一个团队几周,解释新功能并设置驱动数据以适应该客户.

我们正在考虑使用多客户端,将所有客户放在一个大型的"Windows Server 2008服务器"上的单个共享Oracle 11g实例中 - 以降低成本.我想知道这是否可取.

为每个客户提供单独的实例有一些优点.请告诉我这些是假的.我粗略猜测降低重要性:

  • 我们的客户MyCorp和YourCo可以在对架构进行重大更改时单独迁移.(对于多客户端,我们将在一夜之间迁移300多个客户!?!)

  • MyCorp的数据可以轻松备份和(!!!)恢复,而不会影响其他客户.

  • MyCorp的数据与其竞争对手YourCo的数据安全地分开,而不依赖开发人员来获得正确的代码和/或DBA获得正确的配置.

  • 多个实例风险较低,因为一个客户发生灾难(某人意外地将每个人的工资加倍,并且在发薪日后发现错误)不会影响其他客户.一场灾难影响了我们所有的客户(呐喊,新的DBA,突然每个参与者都拥有相同的SSN!?!)可能会让我们的公司陷入困境.

  • 在一台服务器上安装一个实例会出现单点故障,如果飓风摧毁了建筑物,我们的整个客户群就会停止运营.多个服务器上的多个实例允许地理分散:没有灾难会影响我们客户的太大比例,而其他地区的未受影响的服务器可以承担故障服务器的负载.

  • 性能更好,因为数据库较小(约50个表中的10,000对2,000,000行).

  • 如果MyCorp的办公室(大部分)只在一个地区,那么MyCorp的实例可以在地理位置上共存,因此网络延迟不会影响性能.出于同样的原因,我们可以为全球客户提供更好的服务.

  • 在MyCorp想要在内部使用他们的数据库,然后我们可以轻松导出他们的实例,以获得MyCorp他们的数据.

  • 负载平衡更容易,因为实例可以放在不同的服务器上(这适用于Web场).

  • 当需要DEV或QA实例时,克隆实际实例并对数据进行匿名化会更容易,因为数据要少得多.

  • 因为它们足够小,开发人员可以让自己的实例在本地运行,这样他们就可以在机场等待的同时处理代码,而无需解决VPN麻烦.

Q1:单独实例的其他优点是什么?

我们正在考虑更改数据库架构并将所有客户合并到一个Oracle实例中,在一台大型服务器上运行.

以下是多客户端实例方法的优点,最重要的是首先(我的WAG).如果这些是假的,请狙击:

  • 减少DBA的工作量,因为他们只需要维护一个实例而不是数百个实例.较少的DBA工作转化为更便宜,这是我们改变的主要动机.

  • 只需一个实例,DBA就可以更好地优化性能.他们将有时间添加适当的索引并查看我们的SQL.

  • 开发人员更容易调试和增强应用程序,因为只有一个模式和一个应用程序(如果有数百个实例,则可能有数十个模式版本,每个模式版本都有不同版本的应用程序).这也降低了成本.另一种方法是必须启动每个调试会话:(1)该客户运行的是什么版本;(2)让我们努力重新创建相应的开发环境,代码和数据库.(我们需要一个虚拟机,其中包含每个补丁和发布的代码AND数据库实例!)

  • 许可Oracle更便宜,因为它的价格是每台服务器的价格而不管(或者某些东西 - 我对这个主题一无所知).

  • 数据库成为Web会话数据的可行持久存储,因为只有一个实例.

  • 使用一个多客户端实例可以更轻松地进行某些数据库操作,例如在他们朦胧地找到他们(或他们的配偶)可能工作的客户时找到参与者:所有名称都在一个表中.跨客户报告非常简单.

Q2:在一个实例中拥有多个客户端有哪些其他优势?

问题3:您认为哪种方法更好(为什么)?每个客户的实例,还是一个实例中的所有客户?

我担心有一个多客户端实例使迁移几乎不可能,这是一个交易杀手......

...除非有一个妥协的解决方案,比如有两个多客户端实例,旧的和新的.在这种情况下,我们将设计用于查找参与者,报告等的跨实例解决方案,以便客户可以从一个多客户端实例转到下一个实例,而不会出现任何问题.

oracle multiple-instances database-restore

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

检测应用程序的另一个实例是否已在运行

如果已经有实例运行,我的应用程序在加载时需要表现得略有不同.

我理解如何使用互斥锁来防止其他实例加载,但这并不能解决我的问题.

例如:

  • 实例1加载,获取互斥锁.
  • 实例2加载,无法获取互斥锁,知道还有另一个实例.到现在为止还挺好.
  • 实例1关闭,释放互斥锁.
  • 实例3加载,获取互斥锁,不知道实例2仍在运行.

有任何想法吗?值得庆幸的是,它不需要处理多个用户帐户或类似的东西.

(C#,桌面应用程序)

编辑:为了澄清,应用程序不需要限制为单个实例,只需执行一个稍微不同的启动操作,如果还有另一个实例已经运行.多个实例都很好(并且是预期的).

c# mutex multiple-instances visual-studio-2008

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

Notepad ++总是在多实例中

我需要在没有"-multiInst"参数的多实例模式下运行Notepad ++.我不能使用.lnk快捷方式,我不能使用cmd.exe /c notepad++.exe -multiInst,还有另外一种方法吗?

settings multiple-instances notepad++

13
推荐指数
5
解决办法
2万
查看次数

Windows中的Gedit会创建多个实例

我安装了最新版本(2.30.1)的Gedit的用于Windows.每当我使用gedit从资源管理器打开文件时,它都不会在当前实例中作为选项卡打开,而是为每个文件打开一个新窗口,如记事本.我不喜欢这种行为.有没有办法配置gedit打开与标签相同的窗口中的文件?

windows tabs gedit multiple-instances

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

在运行时将命令的不同实现注入命令

我的项目中有一个接口,有2个类实现它:

public interface IService
{
   int DoWork();
}

public class Service1:IService
{
    public int DoWork()
    {
       return 1;
    }
}  

public class Service2:IService
{
    public int DoWork()
    {
       return 2;
    }
}    
Run Code Online (Sandbox Code Playgroud)

我有一个依赖于它的命令处理程序IService:

public CommandHandler1:ICommandHandler<CommandParameter1>
{
     IService _service;  
     public CommandHandler1(IService service)
     {
          _service = service
     }  
     public void Handle()
     { 
          //do something
          _service.DoWork();
          //do something else 
     }
}

public interface ICommandHandler<TCommandParameter> 
                 where TCommandParameter :ICommandParameter
{
    void Handle(TCommandParameter parameter);
}
public interface ICommandParameter
{
}
Run Code Online (Sandbox Code Playgroud)

我想基于用户选择注入Service1Service2 …

c# structuremap dependency-injection multiple-instances

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

限制应用程序的多个实例

好的,所以我创建了我的c#应用程序,为它创建了一个安装程序,并在我的机器上安装了它.

问题是,当用户打开应用程序exe两次时,将运行两个应用程序实例.我只想要一个应用程序的一个实例随时运行,我该怎么做呢?

谢谢你的帮助,

.net c# multiple-instances c#-2.0

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