简单的客户机-服务器应用程序
本文关键字:服务器 应用程序 客户机 简单 | 更新日期: 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();
}
}