简单的客户机-服务器应用程序

本文关键字:服务器 应用程序 客户机 简单 | 更新日期: 2023-09-27 18:14:56

具有以下架构:客户端部分(c#上的dll)将一定数量的图像发送到服务器(或Windows Service或Web Service),在那里它们被处理,然后服务器以处理结果的XML文件的形式返回响应。

客户端只是一个自动化的应用程序,没有接口和输入/输出。

服务器。它使用多线程(使用ThreadPool)来启动引擎来处理图像。因此,当引用一个新的客户端时,服务器创建一个新的线程,在这个线程中进行处理,最后它向用户发送一个回复(xml文件)。服务器的负载不是很大,3-20个并发连接。

到目前为止,我还不能理解哪种交互架构最适合我的情况。有几种方法可以实现或编写异步套接字服务器,要么使用WCF,要么只编写ASP。. NET应用程序并将其倒在IIS上(对于这个选项,我最倾向于)。

哪种传输协议最好使用?使用HTTP传输大量图片(然后您可以向Web服务方向移动),还是应该考虑TCP/IP(现在的WCF)?

就是这样!

简单的客户机-服务器应用程序

这是一个单独发送它们的方法:

        Byte[] imgByte = null;
        System.IO.Stream strm;
        string imgfile = System.IO.Path.GetFileName(FileUpload1.FileName);
        string ext = System.IO.Path.GetExtension(FileUpload1.FileName);
        if (ext == ".jpg" | ext == ".jpeg" | ext == ".gif" | ext == ".png")
        {
            try
            {
                if (FileUpload1.HasFile && FileUpload1.PostedFile != null)
                {
                    int fileLen = FileUpload1.PostedFile.ContentLength;
                    HttpPostedFile File = FileUpload1.PostedFile;
                    StringBuilder sb = new StringBuilder();
                    imgByte = new Byte[fileLen];
                    strm = FileUpload1.FileContent;
                    strm.Read(imgByte, 0, fileLen);
                }
            }
            catch (Exception ex)
            {
                Label1.Text = "Stream: " + ex.ToString();
            }
            if (imgByte != null)
            {
                try
                {
                    string connStr = ConfigurationManager.ConnectionStrings["imgContext"].ConnectionString;
                    string cmdStr = "INSERT INTO [Table] (filename, image) VALUES (@filename, @image);";
                    using (SqlConnection conn = new SqlConnection(connStr))
                    {
                        using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
                        {
                            conn.Open();
                            cmd.Parameters.AddWithValue("@filename", imgfile);
                            cmd.Parameters.AddWithValue("@image", imgByte);
                            cmd.ExecuteNonQuery();
                            conn.Close();
                            cmd.Dispose();
                            conn.Dispose();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Label2.Text = "sql: " + ex.ToString();
                }
            }