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
  • 相关阅读:
    poj 2754 Similarity of necklaces 2 转换成多重背包,单调队列优化/ 二进制优化
    new和delete2
    new和delete1
    new和delete4
    new和delete3
    new(placement new)
    用例图中的Actor(参与者)一定是人吗?
    二维数组的函数参数传递
    二维指针动态创建二维数组(C/C++)
    OOD的五项基本原则——SOLID
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3825368.html
Copyright © 2011-2022 走看看