PDA

View Full Version : سوال: برنامه نویسی سه لایه



123456789m
سه شنبه 12 مهر 1390, 00:45 صبح
سلام دوستان کسی می تونه منظور از برنامه سه لایه چیه
ببخشید شاید سوالی از پیش پا افتاده باشه
و نمی دونم برنامه سه لایه چیه چه مزیت های داره چطوری نوشته میشه
اگه این لایه ها رو واسم توضیح بدین

fakhravari
سه شنبه 12 مهر 1390, 01:10 صبح
http://www.pcnetwork.ir/showthread.php/15389-%D9%85%D9%81%D9%87%D9%88%D9%85-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D8%B3%D9%87-%D9%84%D8%A7%DB%8C%D9%87-%D8%AF%D8%B1-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C
http://www.nofa.ir/NewsBody-ID104.aspx
____________________________________
برای تقسیم بندی لایه ها
1- Presentation Layer
2- Business Logic Layer
3- Data Access Layer
مثال
3)لایه برای اتصال به بانک
2)لایه نظیر اعتبار سنجی
1) میشه گفت همون فرم که کاربر میبینه
اگه ساده کنی
1_فرم که باز میشه
3_بانک وصل میشی
2_کلاس دستورات

123456789m
سه شنبه 12 مهر 1390, 01:24 صبح
میشه بشتر توضیح بدین
لایه برای بانک اطلاعاتی یعنی چی ؟
لایه برای اعتبارسنجی یعنی چی ؟
من اعتبار سنجی و با نک اطلاعات می دونم چیه
ولی منظور از لایه اینجا چیه برام نا مفهومه ؟؟

fakhravari
سه شنبه 12 مهر 1390, 02:04 صبح
من خودم برای برنامه نویسی
یک کلاس برای ارتباط با بانک دارم که دستوراتی مثل conec / dcconect / select / update daram
اما این update , select مستقیم از این دستورات استفاده نمیکنه مثال

مثال دستورات نمونه ولی بهتره از procedure استفاده کنی
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Library
{
class DataAccess
{
SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;

public DataAccess()
{
con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
}
public void connect()
{
string cs = "Data source=.\\SQLEXPRESS;Attachdbfilename=|DataDirecto ry|\\{0};Integrated security=true;user Instance=true";
con.ConnectionString = cs;
con.Open();
}
public void Disconnect()
{
con.Close();
}
public DataTable select(string sql)
{
DataTable dt = new DataTable();
cmd.CommandText = sql;
da.Fill(dt);
return dt;
}
public void docommand(string sql)
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}

}
}

و اینم کلاس افراد یا هر بخش دیگه
public void GetOne()
{

string sql = "Select * from book where bid='{0}'";
sql = string.Format(sql, this.ID);
md.connect();
DataTable dt = md.select(sql);
md.Disconnect();

this.ID = dt.Rows[0]["bid"].ToString();
this.Name = dt.Rows[0]["bname"].ToString();

}

fakhravari
سه شنبه 12 مهر 1390, 02:06 صبح
شاید من به این نتیجه رسیدم که به لحاظ امنیت بهتره از procedure استفاده کنید
و استفاده از این procedure ها یکمی کار شما رو سخت میکنن چون تعداد انها زیاد میشه.
_____________________
برنامه نویسی چند لایه برای برنامه نویسی ویندوز خیلی کارامد است و دست شما خیلی بازه نسبت به وب.

متاسفانه مباحث زیادی داره که باید خودتون به نتیجه ای برسید که از چه نوع برنامه نویسی استفاده کنید نسبت به پروژه.
اما به نظر من روی procedure در کلاس کار کن.

mmnoody2006
سه شنبه 12 مهر 1390, 07:44 صبح
شاید من به این نتیجه رسیدم که به لحاظ امنیت بهتره از procedure استفاده کنید
و استفاده از این procedure ها یکمی کار شما رو سخت میکنن چون تعداد انها زیاد میشه.
_____________________
برنامه نویسی چند لایه برای برنامه نویسی ویندوز خیلی کارامد است و دست شما خیلی بازه نسبت به وب.

متاسفانه مباحث زیادی داره که باید خودتون به نتیجه ای برسید که از چه نوع برنامه نویسی استفاده کنید نسبت به پروژه.
اما به نظر من روی procedure در کلاس کار کن.

dبا سلام به برادر گلم . منظورتون از procedure رو نفهمیدم آیا store procedure ها در sql server منظور شما هست ؟

اگر اینطوره باید بگم کار با اونها به راحتی آب خوردنه و در تعداد زیاد هم با اسم گذاری صحیح هیچ مشکلی پیش نخواهد اومد
و ارتباط شما با اونها بهتره از طریق Dataset ها باشه . در کل برای برنامه نویسی سه لایه هیچ تعریف درست و کلی
وجود نداره و هر کس به روش خودش کدها رو جدا می کنه ولی من خودم برای کدهای سطح برنامه از کلاس های جدا
برای dataset ها از پوشه جدا و برای Business Logic Layer هم از پوشه جدا و برای هر dataset از یک کلاس جدا استفاده می کنم

fakhravari
سه شنبه 12 مهر 1390, 13:54 عصر
بله store procedure سختیش تعداد زیادشه.