PDA

View Full Version : سوال: شیوه صحیح پیاده سازی برنامه بر اساس معماری سرویس گرا



saied7468
پنج شنبه 30 خرداد 1392, 19:10 عصر
سلام دوستان
من توی زمینه برنامه نویسی تحت وب تقریبا می شه گفت تازه کارم و تقریبا تمام نرم افزار هایی که نوشتم تحت ویندوز بوده الان یه پروژه گیرم امده که قراره تحت وب و بر اساس معماری سرویس گرا پیاده بشه از دوستانی که توی زمینه معماری سرویس گرا تجربه دارن می خوام که یه نگاه به شیوه پیاده سازی من بکنن و اگه این شیوه غلط هست راهنماییم کنن :

من برای انجام تمامی عملیات های روتن مثل جستجو ، درج ، ویرایش و حذف از Store Procdure استفاده می کنم .

روش کار :
دو پروژه می سازم یکی WebApplication و WebService :
در WebService :
به ازای هر بخش در برنامه یک کلاس ایجاد و توابع مربوط به آن بخش را در کلاس قرار می دم . مثلا اگر برنامه دو بخش مدیریت مشتریان و مدیریت کالا داشته باشه به ازای هر کدام یک کلاس ایجاد می شه .
در هر کلاس با توجه به نوع کار (درج ، ویرایش ، حذف ) تعدادی کد نوشته می شه :


private SqlCommand cmd;
private SqlConnection con;
private SqlDataAdapter da;
private DataTable dt;
public string DoCommand(string sp, int num1, float num2, int num3,int num4,int num5 ,int num6, string server, string user, string pass, string bank)
{
try
{
con = new SqlConnection();
con.ConnectionString = "Data Source=" + server + ";initial catalog=" + bank + " ;User ID =" + user + " ;Password=" + pass + ";";
con.Open();
if (sp == "MWasinst")
{
da = new SqlDataAdapter(sp, con);
dt = new DataTable();
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add("@name_furn", num1);
da.SelectCommand.Parameters.Add("@lit_ManagementWaste", num2);
da.SelectCommand.Parameters.Add("@waste_ManagementWaste", num3);
da.SelectCommand.Parameters.Add("@year_ManagementWaste", num4);
da.SelectCommand.Parameters.Add("@mount_ManagementWaste", num5);
da.SelectCommand.Parameters.Add("@day_ManagementWaste", num6);

da.Fill(dt);
}
if (sp == "MWasUp")
{
da = new SqlDataAdapter(sp, con);
dt = new DataTable();
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add("@id", num1);
da.SelectCommand.Parameters.Add("@lit_ManagementWaste", num2);
da.SelectCommand.Parameters.Add("@waste_ManagementWaste", num3);
da.SelectCommand.Parameters.Add("@year_ManagementWaste", num4);
da.SelectCommand.Parameters.Add("@mount_ManagementWaste", num5);
da.SelectCommand.Parameters.Add("@day_ManagementWaste", num6);

da.Fill(dt);
}
if (sp == "MWasDl")
{
da = new SqlDataAdapter(sp, con);
dt = new DataTable();
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add("@iddata", num1);

da.Fill(dt);
}
con.Close();
return "ok";
}
catch
{
return "error";
}


}



و برای عملیات های کلی (جستجو ) که در همه فرم ها مشترک هست یک کلاس ایجاد می شه :


[WebMethod]

public DataTable SelectAllData(string sp, string server, string user, string pass, string bank)
{
DataTable dt = new DataTable("MyDb");

try
{
con = new SqlConnection();
con.ConnectionString = "Data Source=" + server + ";initial catalog=" + bank + " ;User ID =" + user + " ;Password=" + pass + ";";
con.Open();
da = new SqlDataAdapter(sp, con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.Fill(dt);
con.Close();
return dt;
}
catch
{
dt = new DataTable();

return dt;
}
}


و در نهایت در WebApplication سرویس رو به پروژه اضافه می کنم و از توابع در هر بخش استفاده می کنم .

سوالات :

1-آیا شیوه پیاده سازی من براساس معماری سرویس گرا درسته ؟ فقط کافی هست که یه سرویس مثل توضیحات بالا بسازم و استفاده کنم ؟

2- با توجه به اینکه دارم از Store Procedure استفاده می کنم اگه کاربر رو قبل از هر درخواست احراز هویت کنم برای امنیت کفایت می کنه یا اینکه تمامی داده های ارسالی از WebApplication به WebService مانند نام Store Procedure باید رمز شوند و در WebService رمز گشایی شوند ؟

باتشکر

saied7468
جمعه 31 خرداد 1392, 22:16 عصر
از اساتید کسی معماری سرویس گرا کار نکرده ؟!!