[.NET Remoting] IMessage: to implement or not to implement?

Pagina: 1
Acties:

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 15:42

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
De titel is misschien een beetje vaag, maar ik vond geen beter omschrijving.

Ik heb een webapp geconfigureerd met 2 eigen IClientChannelSinkProviders:
  • Provider1 instantieert ClientSink1 die IClientChannelSink en IMessage implementeert
  • Provider2 instantieert ClientSink2 die IClientChannelSink implementeert.
dus
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class ClientSink1 : IMessageSink, IClientChannelSink
{
  public ClientSink1 (object next)
  {
    _nextMsgSink = next as IMessageSink;
    _nextChnlSink = next as IClientChannelSink;
  }
  ...
}

class ClientSink2 : IClientChannelSink
{
  public ClientSink2 (object next)
  {
    _nextChnlSink = next as IClientChannelSink;
  }
  ...
}

ClientSink1 krijgt runtime via .NET Remoting ClientSink2 mee. Om IMessageSink en IClientChannelSink te kunnen implementeren moet hij vervolgens uit deze ClientSink2 de volgende IMessageSink en de volgende IClientChannelSink halen. Echter, aangezien dat object enkel IClientChannelSink implementeert, gaat dat dus niet. Ik kan wel aan de volgende ClientSink komen, maar niet aan de volgende IMessageSink.

Mijn vraag is: ben ik nu verplicht om Provider 1 ook IMessage te laten implementeren, of maak ik een denkfout ivm remoting?

Ter illustratie de configuratie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
    <system.runtime.remoting>
        <application>
            <channels>
                <channel ref="http" clientConnectionLimit="100">
                    <clientProviders>
                        <provider type="Provider1, MyChannels"  />
                        <provider type="Provider2, MyChannels" />
                        <formatter ref="binary" />
                    </clientProviders>
                </channel>
            </channels>
        </application>
    </system.runtime.remoting>

[ Voor 28% gewijzigd door GrimaceODespair op 09-11-2004 09:30 ]

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 15:42

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
Ik zal voor referentiedoeleinden maar even aangeven wat de oplossing was:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
    <system.runtime.remoting>
        <application>
            <channels>
                <channel ref="http" clientConnectionLimit="100">
                    <clientProviders>
                        <provider type="Provider1, MyChannels"  />
                        <formatter ref="binary" />
                        <provider type="Provider2, MyChannels" />
                    </clientProviders>
                </channel>
            </channels>
        </application>
    </system.runtime.remoting>



Dit werkt, aangezien Provider2 geen messages hoeft te verwerken, dat gebeurt namelijk al door Provider1 icm met de binary formatter. Provider2 hoeft dus ook geen messages aan de volgende IMessageDinges door te geven (aangezien hij de laatste in de chain is), maar is wel de eerste in die responses mag afhandelen.

Wij onderbreken deze thread voor reclame:
http://kalders.be