Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跟踪下载/上传传输(大小)_C#_Wcf - Fatal编程技术网

C# 跟踪下载/上传传输(大小)

C# 跟踪下载/上传传输(大小),c#,wcf,C#,Wcf,我有一个WCF服务(C#),它有大约10个方法,5个用于获取数据(.NET数据集),5个用于更新数据(.NET数据集) 方法示例: // getting data from Method public DataSet GetEmployeeContractInfo(Guid uid) { DataSet ds = null; Database db = InfoTacto.Framework.Web

我有一个WCF服务(C#),它有大约10个方法,5个用于获取数据(.NET数据集),5个用于更新数据(.NET数据集)

方法示例:

// getting data from Method    
public DataSet GetEmployeeContractInfo(Guid uid)
            {

                DataSet ds = null;
                Database db = InfoTacto.Framework.WebServices.Common.GetDatabase();

                using (DbCommand cmd1 = db.GetStoredProcCommand("sp_employee_contractinfo_get"))
                {

                    db.AddInParameter(cmd1, "employeeuid", DbType.Guid, uid);
                    ds = db.ExecuteDataSet(cmd1);
                }

                if (ds.Tables.Count > 0)
                {
                    ds.Tables[0].TableName = "contract_info";
                }
                return ds;

            }

/// <summary>
        /// 
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        public bool UpdateEmployeeContractInfo(DataSet ds)
        {
            bool returnVal = true;

            Database db = Common.GetDatabase();
            DbConnection conn = db.CreateConnection();
            conn.Open();
            DbTransaction trans = conn.BeginTransaction();

            try
            {
                if (ds != null && (
                    (ds.Tables.Contains("contract_info") && ds.Tables["contract_info"].Rows.Count > 0)
                    )
                    )
                {
                    foreach (DataRow dr in ds.Tables["contract_info"].Rows)
                    {
                        if (dr.RowState == DataRowState.Modified || dr.RowState == DataRowState.Added)
                        {
                            using (DbCommand cmd1 = db.GetStoredProcCommand("sp_employee_contractinfo_change"))
                            {

                                db.AddInParameter(cmd1, "employeeuid", DbType.Guid, dr["employeeuid"]);

//... all other parameters

                                db.ExecuteNonQuery(cmd1,trans);
                            }
                        }

                    }

                }
                trans.Commit();
            }
            catch
            {
                trans.Rollback();
                returnVal = false;
            }
            finally
            {
                // Cleanup
                conn.Close();
            }


            return returnVal;
        }
//从方法获取数据
公共数据集GetEmployeeContractInfo(Guid uid)
{
数据集ds=null;
Database db=InfoTacto.Framework.WebServices.Common.GetDatabase();
使用(DbCommand cmd1=db.GetStoredProcCommand(“sp\u employee\u contracinfo\u get”))
{
添加参数(cmd1,“employeeuid”,DbType.Guid,uid);
ds=db.ExecuteDataSet(cmd1);
}
如果(ds.Tables.Count>0)
{
ds.Tables[0].TableName=“合同信息”;
}
返回ds;
}
/// 
/// 
/// 
/// 
/// 
公共bool UpdateEmployeeContractInfo(数据集ds)
{
bool returnVal=true;
Database db=Common.GetDatabase();
DbConnection conn=db.CreateConnection();
conn.Open();
DbTransaction trans=conn.BeginTransaction();
尝试
{
如果(ds!=null&&(
(ds.Tables.Contains(“合同信息”)和ds.Tables[“合同信息”]。Rows.Count>0)
)
)
{
foreach(ds.表[“合同信息”]行中的数据行灾难恢复)
{
if(dr.RowState==DataRowState.Modified | | dr.RowState==DataRowState.Added)
{
使用(DbCommand cmd1=db.GetStoredProcCommand(“sp\u employee\u contracinfo\u change”))
{
db.AddInParameter(cmd1,“employeeuid”、DbType.Guid、dr[“employeeuid”]);
//…所有其他参数
db.ExecuteNonQuery(cmd1,trans);
}
}
}
}
trans.Commit();
}
抓住
{
trans.Rollback();
returnVal=false;
}
最后
{
//清理
康涅狄格州关闭();
}
返回值;
}
我的20名用户将通过celular调制解调器使用WIFI,因为他们所在的位置无法访问传统WIFI,因此我需要跟踪使用我的WCF服务获取数据和上传数据的带宽,这样,如果我有这些信息,我就可以真正知道他们是否消耗了比
WCF服务所跟踪的带宽更多的带宽,然后他们在看视频等,人力资源部可以采取行动


有线索吗?我正在考虑在将
数据集
发送到客户端之前检查每个
数据集
对象的大小,然后将该值存储到数据库表中,并在从客户端接收数据集时执行相同操作。

数据集
?你见过数据集序列化时的样子吗?创建您自己的对象并将其序列化为
DataContract
将大大减少带宽占用。hole应用程序非常庞大,将所有WCF服务从dataset转换为自定义对象非常糟糕。我同意Tim的观点。强烈建议不要从您的服务返回
数据集
对象。看看Scott Hanselman说了些什么:。