none
InstanceContextMode属性とConcurrencyMode属性について RRS feed

  • 質問

  • WCFサービスのInstanceContextMode属性 とConcurrencyMode属性は下記のように、プログラムで定義できますが、

    App.configファイルで定義できますか?教えてもらいませんか?

     

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant   )]

     

     

     

    実は、”WCF サービスとして公開されるシーケンシャル ワークフロー”で作ったWCFサービスのInstanceContextMode属性 とConcurrencyMode属性を修正したいですが、方法をわからないです。もしApp.configファイルを使わないでも、修正する方法が有れば、是非教えて下さい。

     

    よろしく、お願いします。

    2008年9月3日 10:00

回答

  • プログラム修正(再ビルド、再配布)無しで動的に変更したいということでしょうか?

    であれば、無理でしょう。

    ちなみにスキーマ構成はここ。

    http://msdn.microsoft.com/ja-jp/library/ms731734(VS.85).aspx

     

    仮にあったとしても、

    動作の根底を表す値であり、かつ業務要求を満たすための大前提です。

    したがって、それを動的に変更したい場面が想像できません。

     

    それぞれの値の意味を冷静に考えてみてください。

    ・インスタンスでデータ共有しているもの(Single)を他に変更したらどうなりますか?

    ・コールバックを持つサービスをPerCallにしたらどうなりますか?

    ・スレッドセーフを保てますか?

    ・HttpなのにPerSessionにできますか?
    2008年9月4日 0:44
  •  

    ご答え、ありがとう御座います。

     

     

    <- プログラム修正(再ビルド、再配布)無しで動的に変更したいということでしょうか?

    <- であれば、無理でしょう。

     

    プログラムでもいいですが、”WCF サービスとして公開されるシーケンシャル ワークフロー”プロジェクト

    を作る時、WCFサービスのConcurrencyMode属性を修正したいです。普通のWCFサービスのように、

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant   )] で定義できないので、他の方法を探しています。

     

    どのような方法、タイミングでもいいですが、ConcurrencyMode属性を修正したいです。

    サーバを起動(

    WorkflowServiceHost host = new WorkflowServiceHost(typeof(Wcf_Wf_lib.Workflow1))

    )時でもいいですが、方法は分からないです。もしわかれば、是非教えて下さい。

     

    もしできない場合、、”WCF サービスとして公開されるシーケンシャル ワークフロー”はWCFのCallBack機能はOneWayの処理しか利用できないですね。・・・・・・

    2008年9月4日 5:47
  •  yyq さんからの引用

    プログラムでもいいですが、”WCF サービスとして公開されるシーケンシャル ワークフロー”プロジェクト

    を作る時、WCFサービスのConcurrencyMode属性を修正したいです。普通のWCFサービスのように、

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant   )] で定義できないので、他の方法を探しています。

     

    WFについてはよくわかりません。

     

    が、しかし、

     

     yyq さんからの引用

    どのような方法、タイミングでもいいですが、ConcurrencyMode属性を修正したいです。

    サーバを起動(

    WorkflowServiceHost host = new WorkflowServiceHost(typeof(Wcf_Wf_lib.Workflow1))

    )時でもいいですが、方法は分からないです。もしわかれば、是非教えて下さい。

     

    先にも書いたように、コーディングレベルでしかおこなえないはずです。

     

     yyq さんからの引用

    WCFのCallBack機能はOneWayの処理しか利用できないですね。・・・・・・

     

    コールバックはイベントと同じ感覚で常にOnewayです。

    つまり、通信の観点でサービスはReceiverということです。

    2008年9月4日 16:56
  •  

    WorkflowServiceHostでは、InstanceContextModeConcurrencyModeについては決められた設定になっていますので設定はできないらしいです。

     

     

    まどかさん、中川俊輔さん、何回の対応、どうも、ありがとう御座います。
    2008年9月29日 6:34

すべての返信

  • プログラム修正(再ビルド、再配布)無しで動的に変更したいということでしょうか?

    であれば、無理でしょう。

    ちなみにスキーマ構成はここ。

    http://msdn.microsoft.com/ja-jp/library/ms731734(VS.85).aspx

     

    仮にあったとしても、

    動作の根底を表す値であり、かつ業務要求を満たすための大前提です。

    したがって、それを動的に変更したい場面が想像できません。

     

    それぞれの値の意味を冷静に考えてみてください。

    ・インスタンスでデータ共有しているもの(Single)を他に変更したらどうなりますか?

    ・コールバックを持つサービスをPerCallにしたらどうなりますか?

    ・スレッドセーフを保てますか?

    ・HttpなのにPerSessionにできますか?
    2008年9月4日 0:44
  •  

    ご答え、ありがとう御座います。

     

     

    <- プログラム修正(再ビルド、再配布)無しで動的に変更したいということでしょうか?

    <- であれば、無理でしょう。

     

    プログラムでもいいですが、”WCF サービスとして公開されるシーケンシャル ワークフロー”プロジェクト

    を作る時、WCFサービスのConcurrencyMode属性を修正したいです。普通のWCFサービスのように、

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant   )] で定義できないので、他の方法を探しています。

     

    どのような方法、タイミングでもいいですが、ConcurrencyMode属性を修正したいです。

    サーバを起動(

    WorkflowServiceHost host = new WorkflowServiceHost(typeof(Wcf_Wf_lib.Workflow1))

    )時でもいいですが、方法は分からないです。もしわかれば、是非教えて下さい。

     

    もしできない場合、、”WCF サービスとして公開されるシーケンシャル ワークフロー”はWCFのCallBack機能はOneWayの処理しか利用できないですね。・・・・・・

    2008年9月4日 5:47
  •  yyq さんからの引用

    プログラムでもいいですが、”WCF サービスとして公開されるシーケンシャル ワークフロー”プロジェクト

    を作る時、WCFサービスのConcurrencyMode属性を修正したいです。普通のWCFサービスのように、

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant   )] で定義できないので、他の方法を探しています。

     

    WFについてはよくわかりません。

     

    が、しかし、

     

     yyq さんからの引用

    どのような方法、タイミングでもいいですが、ConcurrencyMode属性を修正したいです。

    サーバを起動(

    WorkflowServiceHost host = new WorkflowServiceHost(typeof(Wcf_Wf_lib.Workflow1))

    )時でもいいですが、方法は分からないです。もしわかれば、是非教えて下さい。

     

    先にも書いたように、コーディングレベルでしかおこなえないはずです。

     

     yyq さんからの引用

    WCFのCallBack機能はOneWayの処理しか利用できないですね。・・・・・・

     

    コールバックはイベントと同じ感覚で常にOnewayです。

    つまり、通信の観点でサービスはReceiverということです。

    2008年9月4日 16:56
  • ご返信、ありがとう御座います。

    2008年9月8日 0:02
  • こんにちは。中川俊輔 です。

     

    まどかさん、回答ありがとうございます。

     

    yyqさん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、まどかさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    yyqさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年9月19日 10:00
  • こんにちは、YYQです。

     

    まどかさん、何回の対応、どうもありがとう御座います。

    今まで、よくわからないところをよく説明を貰いました。

    心から感謝いたします。

     

     

    中川俊輔さんへ:

    実は、”WCF サービスとして公開されるシーケンシャル ワークフロー”で作ったWCFサービスのInstanceContextMode属性 とConcurrencyMode属性を修正したいですが、方法をわからないです。まどか様は”WFについてはよくわかりません”と答えしましたが、中川様はわかりますか?教えてもらいませんか?

     

    以上。

    2008年9月22日 5:12
  •  

    WorkflowServiceHostでは、InstanceContextModeConcurrencyModeについては決められた設定になっていますので設定はできないらしいです。

     

     

    まどかさん、中川俊輔さん、何回の対応、どうも、ありがとう御座います。
    2008年9月29日 6:34