Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

19 mars 2007 1 19 /03 /mars /2007 21:13
1 -Configuration du remoting avec un fichier de configuration
 
Note : les fichiers de configurations générés dans le répertoire bin à la compilation portent le nom : <nomassembly.exe>.config
 
Il suffit alors depuis le client aussi bien que du serveur d’utiliser la methode System.Runtime.Remoting.RemotingConfiguration.Configure() à laquelle on passe le chemin du fichier de configuration ou trouver les informations
Ex : ici WKO
Cote serveur
using System;
using System.Collections.Generic;
using System.Text;
 
namespace NET2CsRemotingAppConf.Serv
{
    ///<summary>
    /// 1 - Objet MBR (objet distant)
    ///</summary>
    public class Surface : System.MarshalByRefObject
    {
        public Surface()
        {
        }
      
        public Single CalculateSquareSurface(Single Rayon)
        {
            Console.WriteLine("Execution CalculateSquareSurface");
 
            Single Result;
            Result = (Single)(Rayon * Rayon);
 
            return Result;
        }
       
    }
}
 
using System;
using System.Collections.Generic;
using System.Text;
 
namespace NET2CsRemotingAppConf.Serv
{
    class Program
    {
        static void Main(string[] args)
        {
 
            System.Runtime.Remoting.RemotingConfiguration.Configure("NET2CsRemotingAppConf.Serv.exe.config", false);
 
            // Fin du service
            Console.WriteLine("Appuyer sur une touche pour stopper le serveur");
            Console.ReadLine();
 
        }
    }
}
 
Le fichier de configuration App.config
-          Type : type= « namespace.nomclassseMBR,assemblyserveur »
-          Mode : Singleton ou SingleCall
-          objectUri : uri de l’objet MBR que l’on a affecté
-          port
-          ref : tcp ou http
<?xmlversion="1.0"encoding="utf-8" ?>
<configuration>
 <system.runtime.remoting>
    <applcation>
      <service>
        <wellknown type="NET2CsRemotingAppConf.Serv.Surface,NET2CsRemotingAppConf.Serv"
                    mode="Singleton"
                    objectUri="RemoteSurface"/>
      </service>
      <channels>
        <channel port="60001" ref="tcp" />
      </channels>
    </applcation>
 </system.runtime.remoting>
</configuration>
 
Cote client
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace NET2CsRemotingAppConf.Cli
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            this.CallCalcultateSquareSurface();
        }
        // Methods
        public void CallCalcultateSquareSurface()
        {
            NET2CsRemotingAppConf.Serv.Surface oSurface;
            Single Result;
 
            try
            {
                System.Runtime.Remoting.RemotingConfiguration.Configure("NET2CsRemotingAppConf.Cli.exe.config", false);
                oSurface = new NET2CsRemotingAppConf.Serv.Surface();
                // 2 Dialogue - apppel de méthodes
                Result = oSurface.CalculateSquareSurface(Convert.ToSingle(textBox1.Text));
 
                // Affichage du résultat formaté
                lblResult.Text = Result.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    }
}
 
-          Type : type= « namespace.nomclassseMBR,assemblyserveur »
-          url : addresse complete
<?xmlversion="1.0"encoding="utf-8" ?>
<configuration>
 <system.runtime.remoting>
    <applcation>
      <service>
        <wellknown   type="NET2CsRemotingAppConf.Serv.Surface,NET2CsRemotingAppConf.Serv"
                    url="tcp://localhost:60001/RemoteSurface"/>
      </service>
    </applcation>
 </system.runtime.remoting>
</configuration>
2 - Pallier le problème de référencement du projet serveur depuis le client
A - Unqiuement pour WKO (le client CAO devant instancier la classe)
Ø Créer une dll contenant une interface de classe contenant les methodes que la classe MBR doit implementer
 et une dll contenant la classe MBR et l’hote
Ø Le projet client ne référencera que la dll contenant l’interface de classe
 
B - Avec l’utiliaire Soapsuds.exe : génére une dll qui pourra etre exploitée(et référencée) tant par un client WKO que CAO
 

Partager cet article

Repost 0
Published by Romagny13 - dans C 1.0- 2.0- 3.0
commenter cet article

commentaires