zoukankan      html  css  js  c++  java
  • 【WCF--初入江湖】13 实战

    13 实战

    在线升级

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.ServiceModel;
    using System.IO;
    using System.Reflection;
    namespace load
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            //进入
            private void button1_Click(object sender, EventArgs e)
            {
                //下载客户端程序
                NetTcpBinding bind = new NetTcpBinding();
                bind.MaxReceivedMessageSize = 9999999;
                bind.ReaderQuotas.MaxArrayLength = 99999999;
                bind.ReaderQuotas.MaxStringContentLength = 99999999;
    
                EndpointAddress address = new EndpointAddress("net.tcp://localhost:5400/sell");
                ChannelFactory<Contracts.ISellOpration> factory = new ChannelFactory<Contracts.ISellOpration>(bind, address);
                byte[] bt = factory.CreateChannel().download();
    
                //把bt转成dll文件
                FileStream stream = new FileStream(Application.StartupPath + "/winClient.dll", FileMode.Create);
                stream.Write(bt, 0, bt.Length);
                stream.Close();
                factory.Close();
    
                //启动客户端程序(dll)
                Assembly ass = Assembly.LoadFile(Application.StartupPath + "/winClient.dll");
                Type tp = ass.GetType("winClient.frmMain");
                Form frm = (Form)Activator.CreateInstance(tp);
                frm.Show();
            }
        }
    }

    ISellOpration.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    namespace Contracts
    {
        
        [ServiceContract]
        public interface ISellOpration
        {
            //商品进货
            [OperationContract]
            int addstockBill(Bill bill);
    
            //商品销售
            [OperationContract]
            int addSellBill(Bill bill);
    
            //下载新版本的客户应用程序
            [OperationContract]
            byte[] download();
        }
    }

    ServiceOpration.cs

        public class ServiceOpration:Contracts.ISellOpration
        {
    ..............
            
                    //下载客户端
            public byte[] download()
            {
                FileStream stream = new FileStream(Application.StartupPath+"/winClient.dll", FileMode.Open, FileAccess.Read);
                byte[] bt = new byte[stream.Length];
                stream.Read(bt, 0, bt.Length);
                stream.Close();
                return bt;
            }    

      winClient.dll是把WinForm项目的参数类型从“Window应用程序”改成“类库”。

        其中

    public partial class frmMain : Form
  • 相关阅读:
    Linked List Cycle leetcode java (链表检测环)
    Remove Duplicates from Sorted List II leetcode java
    Remove Duplicates from Sorted List leetcode java
    Merge Two Sorted Lists leetcode java
    Swap Nodes in Pairs leetcode java
    Median of Two Sorted Array leetcode java
    阿里云最便宜的四种域名注册
    nohup和&后台运行,进程查看及终止
    ipv6转ipv4 NAT64与DNS64基本原理概述
    ros使用pppoe拨号获取ipv6,并且下发IPV6的dns到客户机win7
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3825368.html
Copyright © 2011-2022 走看看