• 【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
  • 相关阅读:
    聊聊C#中的Visitor模式
    数据库软件哪个好用(目前最靠谱的10个数据库软件)
    微软加入开放 3D 基金会,将推动开源 3D 引擎发展
    三小工具构建Modbus调试环境
    世界六大顶尖的软件强国
    ThinkPad哪个产品系列比较好?
    echarts 中Canvas和SVG的区别
    15K Star!Github 上最火的低代码开发平台!
    valueOf 是基于毫秒为单位的
    fullPage.js: 月收一万五千美元的开源JavaScript组件
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3825368.html
Copyright © 2020-2023  润新知