Maison >développement back-end >Tutoriel C#.Net >Exemple détaillé de téléchargement de fichiers ASP.NET via le service Remoting

Exemple détaillé de téléchargement de fichiers ASP.NET via le service Remoting

巴扎黑
巴扎黑original
2017-05-21 18:34:081390parcourir

J'ai découvert le Remoting récemment, juste pour le comprendre, et j'ai découvert que le Remoting est en effet une bonne chose.

Nous avons généralement trois façons d'utiliser le remoting, l'une est

La première : Publier un objet public
L'objet public est créé localement
La seconde : Création à distance de un objet public (SAO)
L'objet est créé dans la requête du client
Troisième type : Création à distance d'un objet privé (CAO)
L'objet est créé sur HOST, et le client fait référence à l'objet sur le serveur

Contenu Je ne comprends pas bien les différences essentielles entre ces trois types. Les méthodes de création à distance de ces trois méthodes sont également différentes.

La première façon
Hôte :
ChannelServices.RegisterChannel (new TcpChannel(1500));
cTransfer Trans = new cTransfer();
RemotingServices.Marshal (Trans, " TestService ");Client :
cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
"tcp://host:1500/TestService");
La deuxième façon
Hôte :
ChannelServices.RegisterChannel (new TcpChannel(1500));
RemotingConfiguration.RegisterWellKnownServiceType(typeof(cTransfer),
"TestService", WellKnownObjectMode.Singleton);Client:
cTransfer T = (cTransfer ) Activateur .GetObject(typeof(cTransfer),
« tcp://host:1500/TestService »);
La troisième voie
Hôte :
ChannelServices.RegisterChannel (new TcpChannel(1500) );
RemotingConfiguration.RegisterActivatedServiceType(typeof(cTransfer));Client:
object[] attr = {new UrlAttribute("tcp://host:1500")};
object[] args = { "Exemple de constructeur argument"};
cTransfer T = (cTransfer) Activator.CreateInstance(typeof(cTransfer), args, attr);
Si nous avons besoin d'un objet pour permettre le traitement des appels à distance, alors cet objet ( objet) doit hériter de la classe MarshalByRefObject.

Comment transférer des fichiers pendant le remoting ? L'idée de base est d'ouvrir le fichier client dans le client, de convertir le type Byte[] puis d'appeler l'objet hôte.
Objet transféré entre le client et l'hôte
[Sérialisable]
public struct kAction
{
public string filename;
public byte[] contexte

} ;Open le fichier et enregistrez les octets du flux dans le Context
Stream fileStream=File.Open(this.transFileName.Text,FileMode.Open);
fileStream.Position=0;
byte[] Content = nouvel octet [((int) fileStream.Length) + 1];
fileStream.Read(Content,0,Content.Length) ;
Une fois que l'hôte a lu la Kaction, enregistrez-la dans le fichier spécifié Clip ci-dessous
MemoryStream meoeryStream=new MemoryStream(k_Action.context);
FileStream fileStream=new FileStream (@"d:"+k_Action.filename,FileMode.Create);
meoeryStream.WriteTo(fileStream); Close();
meoeryStream.Close();
Il s'avère qu'un nouvel objet ne peut pas être défini dans l'objet. Lors de la préparation de l'envoi à HOST, le message "contient des types potentiellement dangereux" s'affichera.
[Sérialisable]
public struct kAction
{
public string filename;
public byte[] context;
public FineInfo fileInfo;//here

};

Enregistrez votre propre expérience. Quand j'aurai le temps, je ferai le tri et ferai un article complet la prochaine fois.

blogs de cnzc

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn