![]() |
|
|||||||
| ثبت نام | کتابخانه فایل ها | راهنما | لیست کاربران | کلوب های کاربران | همه قسمت ها ، به عنوان خوانده شده علامت گذاری شوند |
| WCF , Web Services , .Net Remoting بحث و گفت و گو در زمینه برنامه های مبتنی بر Windows Communication Foundation، وب سرویس ها و برنامه نویسی تحت شبکه در دات نت |
![]() |
|
|
ابزار های تاپیک | طریقه نمایش |
|
|
#1 |
|
کاربر دائمی
![]() تاریخ عضویت: فروردین 1388
محل زندگی: مشهد
پست: 566
تشکرها: 276
402 بار تشکر شده در 205 پست
|
پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
به نام خدا
در این مقاله قصد دارم یک برنامه ساده توسط معماری لایه ای از ابتدا تا انتها پیاده سازی کنم. قبل از هر چیز به موارد زیر نیاز داریم:-visual studio یکی از نسخه های 2003 به بعد -یک موتور بانک اطلاعاتی SQL از هر نسخه ای (2000,2005,2008)(express,enterprise,…) امکانات فعلی برنامه شامل موارد زیر می شود -امکان Login کاربر -مشاهده یکسری اطلاعات در Grid View -امکان حذف اطلاعات از ردیف انتخاب شده در Grid View -امکان ویرایش ردیف انتخاب شده -جستجوی اطلاعات Grid View -ثبت یک رکورد جدید *این برنامه صرفا جنبه مثالی دارد و بهینه سازی و تکمیل کدها به خواننده واگذار شده است. *سورس برنامه به همراه فایل آموزش در نهایت ضمیمه خواهد شد. هدف کلی معماری لایه ای تقسیم و دسته بندی کارها در قالب یک لایه است. در این معماری ما سه لایه Interface, Logic, DataAccess داریم. -لایه DataAccess وظیفه ارتباط برقرار کردن با بانک اطلاعاتی و اجرای دستوراتی که به آن میدهیم را دارد. -لایه Logic وظیفه ایجاد قوانین و منطق برنامه را دارد. مثلا در مثال اداره آموزش یک دانشجوی مشروطی نمیتواند بیش از 14 واحد درس انتخاب کند. بدیهی است که این قوانین در شرایط مختلف متفاوت است. در نتیجه این وظیفه لایه Logic است تا به عنوان مغز متفکر سیستم عمل کند. -لایه آخر Interface می باشد. این لایه مربوط به رابط کاربری برنامه است. طراحی فرم ها و گزارشات و ... در این لایه قرار می گیرد. با فرض این که خواننده با معماری لایه ای آشنایی دارد به ادامه مبحث می پردازیم. با توجه به امکاناتی که در بالا گفته شد جداول زیر متصور است جدول کاربران: -نام کاربر -رمز عبور یک جدول دلخواه دیگر مثلا جدول کالا: -کد کالا -نام کالا -کمپانی سازنده -قیمت دستورات زیر را برای ساخت دیتابیس و جداول بالا بکار بگیرید کد:
Create database dataSample
go
use dataSample
go
Create table users
(
code smallint primary key identity(1,1),
name nvarchar(50) not null,
pass nvarchar(50) not null
)
go
Insert into users(name,pass)values('admin','1')
go
Create table product
(
code int primary key identity(1,1),
name nvarchar(50) not null,
company nvarchar(50),
price float not null
)
insert into product(name,company,price)values('Cpu','AMD',60000)
insert into product(name,company,price)values('Cpu','Intel',70000)
insert into product(name,company,price)values('Graphic 9500','Geforce',80000)
insert into product(name,company,price)values('Ram 1GB','Kingmax',24000)
insert into product(name,company,price)values('Hard 500GB','Maxtor',54000)
*ادامه پروژه منوط به ساخت دیتابیس بالا می باشد. در نتیجه کافیست دیتابیس را به هر نحوی ایجاد کنید و موقتا یک کاربر به جدول کاربران و در صورت تمایل تعدادی کالا هم اضافه کنید. *به خاطر پیچیده نشدن و طولانی نشدن مقاله از ساخت view و SP و ... پرهیز می کنم. در پیاده سازی برنامه های چند لایه ای معمولا بجز لایه رابط کاربر سایر لایه ها بصورت کتابخانه های dll پیاده سازی می شوند. برای ساخت چنین برنامه هایی در محیط VS بصورت زیر عمل میکنیم: در محیط ویژوال استودیو یک پروژه Windows application ای با نام dataSample ایجاد میکنیم.بعد از ایجاد معمولا Visual studio یک فرم آماده به ما تحویل می دهد. ساخت Login برای برنامه در پنجره Solution Explorer نام فرم ایجاد شده را به frmLogin تغییر دهید. فرم Login را بصورت زیر طراحی میکنیم: حالا یک فرم در لایه رابط ایجاد شد. ساخت سایر لایه ها: قرار است که کاربر رمز عبور خود را وارد کرده و بعد از زدن کلید ورود در صورت معتبر بودن رمز به صفحه اصلی منتقل شود.در نتیجه روال کار بطور کلی به صورت زیر خواهد بود: -رمز به یک تابع فرستاده میشود -یک کوئری نوشته شده که بر اساس آن از جدول کاربران شخصی انتخاب میشود که دارای رمز عبور وارده است. -در صورت وجود شخص، Login صورت میگیرد و در غیر این صورت پیغام مناسب نمایش داده میشود. از سناریوی بالا کارهای زیر استنباط میشود: -خواندن اطلاعات از دیتابیس (نوشتن کوئری) -تصمیم گیری بر طبق اطلاعات خوانده شده (کاربری وجود دارد یا خیر) -واکنش نهایی (منتقل شدن به فرم اصلی و یا پیغام خطا) حال با این دیدگاه لایه ای ایجاد میکنیم که تصمیم گیری را انجام دهد (Logic) در منوی File گزینه Add و سپس add new project را انتخاب میکنیم. طبق تصویر پروژه را با نام Logic به Solution اضافه می کنیم. همانطور که میبینید این نوع از پروژه ها فایل DLL به عنوان خروجی تحویل میدهند. در پنجره Solution Explorer در لایه Logic که هم اکنون ایجاد شد نام Class1 را به نام Business.cs تغییر دهید. بعد از تغییر نام پیغامی که ظاهر می شود را Yes کنید تا نام کلاسی که در داخل محتویات Class1 بود نیز تغییر پیدا کند. حالا از آنجایی که هر لایه فقط میتواند با لایه پایین تر از خود در ارتباط باشد باید ارتباط لایه Interface را با لایه Logic برقرار کنیم. تصویر زیر را ملاحظه کنید: یک Reference برای لایه رابط اضافه کردیم. Reference از میان Project های Solution انتخاب شده. با این کار در واقع گفتیم که لایه رابط تنها می تواند با لایه منطق ارتباط برقرار کند. حالا از درون لایه رابط میتوانیم توابع لایه منطق را فراخوانی کنیم. در ادامه به سراغ بقیه کار خواهیم رفت
__________________
پیامبر خدا صلی الله علیه و آله: هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد آخرین ویرایش به وسیله mohammad_bagherani : دوشنبه 19 بهمن 1388 در 20:15 عصر |
|
|
|
| 14 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند: |
|
|
#2 |
|
کاربر دائمی
![]() تاریخ عضویت: فروردین 1388
محل زندگی: مشهد
پست: 566
تشکرها: 276
402 بار تشکر شده در 205 پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
قرار است یک متد برای اعتبار سنجی ایجاد کنیم، پس کلاس Business را باز کرده و متد زیر را برای کلاس می نویسیم: کد:
public static bool Login(string password)
{
}
به خاطر زیاد بودن تعداد رجوعات به لایه ها متدهای کلاسها را Static در نظر میگیریم تا نیازی به ساخت یک شیئ از نوع آن کلاس نباشد. بدیهی است که در این روش نیاز به رعایت دقت بیشتری در برنامه نویسی است. متد Login نیاز به اطلاعات از بانک دارد پس باید اطلاعات از بانک خوانده شده و در صورت وجود شخص با چنین رمزی ورود صورت گیرد. از آنجایی که خواندن اطلاعات در لایه DataAccess صورت می گیرد لایه را ایجاد می کنیم. مراحل ایجاد همانند لایه قبلی (Logic) است. نام لایه را DataAccess و نام کلاس درون آن را Access بنامید. و به Reference های لایه منطق DataAccess را اضافه کنید. تا این لحظه Solution Explorer باید شکل زیر را نمایش دهد این لایه تنها وظیفه خواندن و نوشتن در بانک را دارد. اما از آنجایی که ممکن است متدهای درون آن زیاد شوند و تعداد دستورات برای ایجاد اتصال به بانک در این لایه نیز افزایش پیدا کند لذا برای افزایش انعطاف پذیری یک لایه دیگر تحت عنوان Database با یک کلاس به نام Execute به پروژه اضافه می کنیم. و یک Referenceبه لایه دیتابیس برای لایه دسترسی به داده اضافه می کنیم. حالا برنامه دارای چهار لایه شد. -لایه database یک دستور SQL را از لایه DataAccess گرفته و اجرا میکند -لایه DataAccess یک دستور SQL را بر طبق نیاز لایه Logic ایجاد میکند و برای اجرا به لایه Database ارسال میکند. -لایه Logic تقاضای اطلاعات از لایه DataAccess می کند. -لایه Interface تقاضاهای خود را به Logic ارسال میکند. در متد Click مربوط به کلید ورود در لایه Interface کد زیر را مینویسیم کد:
private void btnLogin_Click(object sender, EventArgs e)
{
if (Logic.Business.Login(txtPassword.Text) == true)
{
//goto main menu
}
}
متد Login لایه منطق اجرا میشود و دو حالت true,false بر میگرداند. درصورت درستی دستورات داخل شرط اجرا شده به صفحه اصلی منتقل میشویم. معمولا کنترلی که در این لایه صورت میگیرد میتواند این باشد که کاربر مثلا مقدار خالی را به لایه منطق ارسال نکند. با گذاشتن یک شرط در ابتدای متد کلیک این بررسی را میتوان انجام داد. حالا لایه منطق باید تصمیم گیری کند که true برگرداند یا false. به لایه database میرویم. در این لایه دو متد به نام های executeNone و executeRead در کلاس Execute ایجاد میکنیم. متد اول یک دستورSQL را گرفته و فقط اجرا میکند و تعداد رکوردهایی که تحت تاثیر دستور قرار گرفته اند را برمیگرداند. متد دوم یک دستور را گرفته و بعد از اجرا یک DataTable بر میگرداند. محتویات کلاس Execute به این صورت است کد:
using System.Data;
using System.Data.SqlClient;
namespace Database
{
public class Execute
{
static string cnn = "Data Source=.;Initial Catalog=dataSample;Integrated Security=True";
static SqlConnection conection = new SqlConnection(cnn);
static SqlCommand cmd = new SqlCommand("", conection);
static SqlDataAdapter da = new SqlDataAdapter(cmd);
public static int executeNone(string sql)
{
conection.Open();
cmd.CommandText = sql;
int a = cmd.ExecuteNonQuery();
conection.Close();
return a;
}
public static DataTable executeRead(string sql)
{
DataTable dt = new DataTable();
da.SelectCommand.CommandText = sql;
da.Fill(dt);
return dt;
}
}
}
در لایه DataAccess و در کلاس Access متد Login را بصورت زیر مینویسیم: کد:
using System.Data;
namespace DataAccess
{
public class Access
{
static string q = "";
public static DataTable Login(string password)
{
DataTable dt = new DataTable();
q = "select * from users where pass='" + password + "'";
dt = Database.Execute.executeRead(q);
return dt;
}
}
}
متد Login یک کوئری ایجاد و برای اجرا و دادن خروجی به Database ارسال میکند. خروجی حاصل نیز به عنوان یک جدول به لایه Logic ارسال خواهد شد. محتویات لایه Logic، کلاس Business: کد:
using System.Data;
namespace Logic
{
public class Business
{
public static bool Login(string password)
{
DataTable dt = new DataTable();
dt = DataAccess.Access.Login(password);
if (dt==null)
{
return false;
}
if (dt.Rows.Count > 0)
{
return true;
}
else
return false;
}
}
}
خروجی جدولی که از لایه DataAccess می آید را پردازش میکند و در نهایت یک مقدار را به لایه رابط بر میگرداند. حالا لایه رابط را تکمیل میکنیم.
__________________
پیامبر خدا صلی الله علیه و آله: هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد آخرین ویرایش به وسیله mohammad_bagherani : پنج شنبه 06 اسفند 1388 در 00:58 صبح |
|
|
|
| 8 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند: |
|
|
#3 |
|
کاربر دائمی
![]() تاریخ عضویت: فروردین 1388
محل زندگی: مشهد
پست: 566
تشکرها: 276
402 بار تشکر شده در 205 پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
یک فرم با نام frmMain به برنامه اضافه میکنیم و رویداد Click مربوط به کلید ورود در فرم frmLogin را تکمیل میکنیم: کد:
private void btnLogin_Click(object sender, EventArgs e)
{
if (Logic.Business.Login(txtPassword.Text) == true)
{
frmMain f = new frmMain();
f.Show();
Hide();
}
else
{
MessageBox.Show("رمز عبور اشتباه است");
}
}
و در نهایت برای تکمیل برنامه در رویداد FormClosed مربوط به frmMain مینویسیم کد:
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
به این ترتیب یک سناریو برای ورود کاربر به برنامه با استفاده از معماری لایه ای نوشتیم. سناریوی بعدی -نمایش اطلاعات در Grid View دقت داشته باشید که معمولا برای انجام هر کاری در نرم افزار نیاز به نوشتن یک متد در لایه Logic هست. برای نمایش اطلاعات جدول کالا در Gird در لایه DataAccess متد GetProducts را به صورت زیر می نویسیم که در خروجی یک DataTable بر می گرداند. کد:
public static DataTable GetProducts()
{
DataTable dt = new DataTable();
q = "select * from product";
dt = Database.Execute.executeRead(q);
return dt;
}
حالا می توانیم در لایه Logic متدی نوشته که یک جدول برای نمایش در Grid بر گرداند. پس در لایه منطق متد زیر را اضافه می کنیم: کد:
public static DataTable GetProducts()
{
DataTable dt = new DataTable();
dt = DataAccess.Access.GetProducts();
return dt;
}
و در نهایت داخل لایه رابط در فرم frmMain این کدها را اضافه می کنیم کد:
DataTable dt = new DataTable();
protected void showProducts()
{
dt = Logic.Business.GetProducts();
DG.DataSource = dt;
}
private void btnShowProducts_Click(object sender, EventArgs e)
{
showProducts();
}
کد بالا شامل یک متد که اطلاعات را در Grid بریزد و یک کلید که متد را فراخوانی کند می باشد. شکل frmMain بصورت زیر باید طراحی شود: شامل یک کلید و یک DataGridView که نام آن را به DG تغییر داده ام. علت این که در قسمت کد این فرم یک DataTable بصورت سراسری تعریف کردم این است که بعدا برای جستجوی اطلاعات از آن استفاده خواهیم کرد. سناریوی نمایش اطلاعات در Grid به اتمام رسید. حالا نوبت جستجوی اطلاعات هست.
__________________
پیامبر خدا صلی الله علیه و آله: هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد آخرین ویرایش به وسیله mohammad_bagherani : سه شنبه 06 بهمن 1388 در 10:12 صبح |
|
|
|
| 7 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند: |
|
|
#4 |
|
کاربر دائمی
![]() تاریخ عضویت: فروردین 1388
محل زندگی: مشهد
پست: 566
تشکرها: 276
402 بار تشکر شده در 205 پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
جستجوی اطلاعات داخل Grid View
جستجوی اطلاعات را میتوان در همین لایه انجام داد. کافیست اطلاعات داخل dt که در بالا بصورت سراسری تعریف کردیم را فیلتر کنیم. برای شروع یک TextBox و یک کلید برای جستجو روی فرم اضافه کنید. همچنین میتوانید یک DropDown اضافه کنید تا بتوان نوع جستجو را مشخص کرد. مانند زیر: کد زیر را هم در رویداد کلیک مربوط به کلید جستجو می نویسیم: کد:
private void btnSearch_Click(object sender, EventArgs e)
{
if (dt==null)
{
return;
}
if (txtSearchKey.Text == "")
{
dt.DefaultView.RowFilter = "";
}
else
{
switch (drpSearch.Items[drpSearch.SelectedIndex].ToString())
{
case "name":
dt.DefaultView.RowFilter = "name like '%" +
txtSearchKey.Text + "%'";
break;
case "company":
dt.DefaultView.RowFilter = "company like '%" +
txtSearchKey.Text + "%'";
break;
case "price":
dt.DefaultView.RowFilter = "price =" +
txtSearchKey.Text;
break;
}
}
DG.DataSource = dt;
}
این هم از یک جستجوی ساده Grid View. سناریوی بعدی افزودن کالا به جدول بانک اطلاعاتی.
__________________
پیامبر خدا صلی الله علیه و آله: هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد آخرین ویرایش به وسیله mohammad_bagherani : سه شنبه 06 بهمن 1388 در 10:11 صبح |
|
|
|
| 7 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند: |
|
|
#5 |
|
کاربر دائمی
![]() تاریخ عضویت: فروردین 1388
محل زندگی: مشهد
پست: 566
تشکرها: 276
402 بار تشکر شده در 205 پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
افزودن رکورد به جدول بانک اطلاعاتی برای این بخش نیاز به یک فرم دریافت اطلاعات و یک متد در لایه منطق و یک متد در لایه دسترسی به داده داریم. قرار است اطلاعات کالا به عنوان آرگومان ورودی به لایه منطق ارسال شود. پس ابتدا در لایه DataAccess متد زیر را می نویسیم: کد:
public static int AddProduct(string name, string company, float price)
{
q = "insert into product(name,company,price)values('" +
name + "','" + company + "'," + price + ")";
int a = Database.Execute.executeNone(q);
return a;
}
و در لایه منطق متد زیر را اضافه می کنیم: کد:
public static bool AddProduct(string name, string company, float price)
{
if (DataAccess.Access.AddProduct(name, company, price) > 0)
{
return true;
}
return false;
}
حالا به لایه رابط رفته و فرم را طراحی می کنیم. یک کلید برای باز کردن فرم ثبت کالا و یک فرم با طراحی زیر برای دریافت اطلاعات کالا مورد نیاز است: در رویداد کلیک مربوط به کلید ثبت کد زیر را می نویسیم: کد:
private void btnAdd_Click(object sender, EventArgs e)
{
if (txtName.Text=="")
{
MessageBox.Show("نام کالا را وارد کنید");
return;
}
if (txtCompany.Text == "")
{
MessageBox.Show("نام شرکت را وارد کنید");
return;
}
float f;
if (float.TryParse(txtPrice.Text,out f)==false)
{
MessageBox.Show("قیمت را درست وارد کنید");
return;
}
if (
Logic.Business.AddProduct
(
txtName.Text,
txtCompany.Text,
float.Parse(txtPrice.Text)
)==true
)
{
Close();
}
else
{
MessageBox.Show("خطا در ثبت اطلاعات");
}
}
کد بالا ابتدا یک اعتبار سنجی از اطلاعات کرده و سپس متد ثبت کالا در لایه منطق را فراخوانی می کند. ثبت هم به اتمام رسید. برای حذف کافیست یک کد به لایه منطق فرستاده شود و بعد در لایه دسترسی به داده دستور حذف رکورد اجرا شود. ویرایش اطلاعات هم به همین صورت انجام خواهد شد. و به عهده خواننده گذاشته می شود. به ترتیب فایل اسکریپت ساخت دیتا بیس و پروژه و متن مقاله بصورت PDF در ضمیمه موجود است از صبر و حوصله شما سپاسگذارم. با تشکر محمد باقرانی
__________________
پیامبر خدا صلی الله علیه و آله: هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد آخرین ویرایش به وسیله mohammad_bagherani : پنج شنبه 06 اسفند 1388 در 01:01 صبح |
|
|
|
| 29 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند: | ahmadr, Ali_Hashemi, almas538, araz_pashazadeh, Cybersilent, far110, ghasedak29, gwbasic, Hesamzadeh, jayjay2007, jingiliboyz, mani_davodi, marshal-mj, mlh_poorranjbar, mohammadreza_1382, moj_asghary, mrtari, peymannaji, qazxsw, razavi_university, reza344, saba106, shaima, shakibazad, spring69, swi, tk2005730, مهدی عابدینی, دانش آموز |
|
|
#6 |
|
کاربر جدید
![]() تاریخ عضویت: شهریور 1388
محل زندگی: مريوان
پست: 7
تشکرها: 1
یک بار تشکر شده در یک پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
اگه امکانش هست یک برنامه C# با SQL2000 اگه دارین همراه با document هاش کامل به فارسی دارین برام بفرستین ازتون میخرم شماره حساب بدین.
میخوام یه برنامه application ی باشه مثلا برنامه یک فروشگاه یا حسابداری باشه که بعدا بتونم از روی اون برنامه دیگه بسازم.خودم سایت نوشتم منتها فرم applicationی ننوشتم نمیدونم دستور اتصالش به پایگاه داده چطوره. اگه لطف کنین یه برنامه که درج و حذف و نمایش بانگ اطلاعات و ورود افراد login و ... توش باشه.ممنون |
|
|
|
| کاربرانی که به خاطر مطلب مفید Arman Mohamadi از وی تشکر کردهاند: |
|
|
#7 |
|
کاربر جدید
![]() تاریخ عضویت: شهریور 1388
محل زندگی: مريوان
پست: 7
تشکرها: 1
یک بار تشکر شده در یک پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
آقای باقرانی با سلام.
راستش من تازه ترم اول کارشناسیم هیچی از معماری و اینا بلد نیستم. من از روی pdf پیش رفتم پایگاه هم درست کردم منتها تو dataTable خطا میده نمیدونم چیکار کنم. تا جایی که میدونم فقط خطاهام در رابطه با dataTable هستش. من پروژم رو واستون میفرستم اگه امکانش هست زحمت بکشید مشکلشو برطرف کنید. اگه شماره تماس هم بذارین تا مستقیم باهاتون تماس بگیرم ممنون میشم. در ضمن اگه یکی از پروژه هاتون رو با C# و SQL 2000 همراه با راهنمای گام به گام و کاملآ واضح برام بفرستین ازتون میخرم. با سپاس و تشکر فراوان. |
|
|
|
|
|
#8 | ||
|
کاربر دائمی
![]() تاریخ عضویت: فروردین 1388
محل زندگی: مشهد
پست: 566
تشکرها: 276
402 بار تشکر شده در 205 پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
با سلام
نقل قول:
راستش فایل ضمیمه رو نتونستم باز کنم. فایل اصلی solution همراهش نیست. اما باید بدونید که زمانی که من مطالب بالا رو مینوشتم اولا برنامه به بدون مشکل اجرا میشد و من تونستم ازشون عکس بگیرم و ... و بعد اینکه در پست اول اشاره شده که نقل قول:
پس اگه طبق آموزش پیش رفتید و در قسمتی به خطا بر خوردید باید خودتون زحمت رفعش رو بکشید. احتمالا در قسمت connection string یا بعضی خطا های جزئی به مشکل برخوردید که اگه بتونید متن خطا رو بگید بهتر و راحت تره. در مورد پروژه هم همون پیغامی که قبلا دادم جوابم هست و منتظر جواب شما هستم.
__________________
پیامبر خدا صلی الله علیه و آله: هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد |
||
|
|
|
|
|
#9 |
|
کاربر دائمی
![]() |
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
احساس می کنم بعضی جاها کدهای لایه ی bll رو تو dataaccess نوشتین.
|
|
|
|
|
|
#10 |
|
کاربر جدید
![]() تاریخ عضویت: فروردین 1389
پست: 4
تشکرها: 0
یک بار تشکر شده در یک پست
|
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها
سلام و عرض خسته نباشید.
مطلب مفید و جالبی بود. ممنون فقط یه خطایی از برنامه می گیره که عکسشو واستون می ذارم .. لطفا راجبش توضیح بدین.. ممنون میشم. |
|
|
|
![]() |
| بوک مارک کردن این تاپیک |
| Tags |
| برنامه با معماری چند لایه, معماری لایه ای |
| کاربرانی که این تاپیک را مشاهده میکنند: 1 (0 کاربران و 1 مهمان) | |
| ابزار های تاپیک | |
| طریقه نمایش | |
|
|