جامعه برنامه نویس

برگشت   جامعه برنامه نویس > برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > WCF , Web Services , .Net Remoting

اطلاعیه

WCF , Web Services , .Net Remoting بحث و گفت و گو در زمینه برنامه های مبتنی بر Windows Communication Foundation، وب سرویس ها و برنامه نویسی تحت شبکه در دات نت


پاسخ
 
ابزار های تاپیک طریقه نمایش
قدیمی جمعه 02 بهمن 1388, 18:38 عصر   #1
mohammad_bagherani
کاربر دائمی
 
آواتار mohammad_bagherani
 
تاریخ عضویت: فروردین 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 انتخاب شده. با این کار در واقع گفتیم که لایه رابط تنها می تواند با لایه منطق ارتباط برقرار کند. حالا از درون لایه رابط میتوانیم توابع لایه منطق را فراخوانی کنیم.
در ادامه به سراغ بقیه کار خواهیم رفت
عکس های ضمیمه
نوع فایل: jpg 01-createNew.jpg‏ (22.0 کیلوبایت, 948 دیدار)
نوع فایل: jpg 02-Login.jpg‏ (4.0 کیلوبایت, 923 دیدار)
نوع فایل: jpg 03-AddLogic.jpg‏ (32.2 کیلوبایت, 928 دیدار)
نوع فایل: jpg 04-addRefrence.jpg‏ (20.8 کیلوبایت, 909 دیدار)
__________________
پیامبر خدا صلی الله علیه و آله:
هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد

آخرین ویرایش به وسیله mohammad_bagherani : دوشنبه 19 بهمن 1388 در 20:15 عصر
mohammad_bagherani آفلاین است   پاسخ با نقل قول
14 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند:
قدیمی جمعه 02 بهمن 1388, 19:00 عصر   #2
mohammad_bagherani
کاربر دائمی
 
آواتار mohammad_bagherani
 
تاریخ عضویت: فروردین 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
    }
}
بدیهی است که اگر فضای نام Logic را به ابتدای فرم اضافه کنیم نیازی به نوشتن Logic در ابتدای دستورات نمی باشد.
متد 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 می آید را پردازش میکند و در نهایت یک مقدار را به لایه رابط بر میگرداند.
حالا لایه رابط را تکمیل میکنیم.

عکس های ضمیمه
نوع فایل: jpg 05-SolutionAfterDataAccess.jpg‏ (18.5 کیلوبایت, 875 دیدار)
نوع فایل: jpg 06-SolAfterDatabase.jpg‏ (10.3 کیلوبایت, 872 دیدار)
__________________
پیامبر خدا صلی الله علیه و آله:
هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد

آخرین ویرایش به وسیله mohammad_bagherani : پنج شنبه 06 اسفند 1388 در 00:58 صبح
mohammad_bagherani آفلاین است   پاسخ با نقل قول
8 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند:
قدیمی جمعه 02 بهمن 1388, 19:17 عصر   #3
mohammad_bagherani
کاربر دائمی
 
آواتار mohammad_bagherani
 
تاریخ عضویت: فروردین 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;
}
متد بالا اطلاعات را در قالب یک جدول از لایه database خوانده و در 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 به اتمام رسید. حالا نوبت جستجوی اطلاعات هست.

عکس های ضمیمه
نوع فایل: jpg 07-MainFillDG.jpg‏ (16.3 کیلوبایت, 842 دیدار)
__________________
پیامبر خدا صلی الله علیه و آله:
هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد

آخرین ویرایش به وسیله mohammad_bagherani : سه شنبه 06 بهمن 1388 در 10:12 صبح
mohammad_bagherani آفلاین است   پاسخ با نقل قول
7 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند:
قدیمی جمعه 02 بهمن 1388, 19:21 عصر   #4
mohammad_bagherani
کاربر دائمی
 
آواتار mohammad_bagherani
 
تاریخ عضویت: فروردین 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.
سناریوی بعدی
افزودن کالا به جدول بانک اطلاعاتی.
عکس های ضمیمه
نوع فایل: jpg 08-AfterSearch.jpg‏ (12.0 کیلوبایت, 840 دیدار)
__________________
پیامبر خدا صلی الله علیه و آله:
هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد

آخرین ویرایش به وسیله mohammad_bagherani : سه شنبه 06 بهمن 1388 در 10:11 صبح
mohammad_bagherani آفلاین است   پاسخ با نقل قول
7 کاربر از mohammad_bagherani به خاطر این مطلب مفید تشکر کرده اند:
قدیمی جمعه 02 بهمن 1388, 19:30 عصر   #5
mohammad_bagherani
کاربر دائمی
 
آواتار mohammad_bagherani
 
تاریخ عضویت: فروردین 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 در ضمیمه موجود است
از صبر و حوصله شما سپاسگذارم.
با تشکر محمد باقرانی
عکس های ضمیمه
نوع فایل: jpg 09-AfterAdd.jpg‏ (9.5 کیلوبایت, 615 دیدار)
فایل های ضمیمه
نوع فایل: rar Database.rar‏ (443 بایت, 473 دیدار)
نوع فایل: rar dataSample.rar‏ (109.1 کیلوبایت, 740 دیدار)
نوع فایل: rar LEARNING.rar‏ (216.6 کیلوبایت, 836 دیدار)
__________________
پیامبر خدا صلی الله علیه و آله:
هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد

آخرین ویرایش به وسیله mohammad_bagherani : پنج شنبه 06 اسفند 1388 در 01:01 صبح
mohammad_bagherani آفلاین است   پاسخ با نقل قول
قدیمی دوشنبه 24 اسفند 1388, 19:39 عصر   #6
Arman Mohamadi
کاربر جدید
 
تاریخ عضویت: شهریور 1388
محل زندگی: مريوان
پست: 7
تشکرها: 1
یک بار تشکر شده در یک پست
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها

اگه امکانش هست یک برنامه C#‎ با SQL2000 اگه دارین همراه با document هاش کامل به فارسی دارین برام بفرستین ازتون میخرم شماره حساب بدین.
میخوام یه برنامه application ی باشه مثلا برنامه یک فروشگاه یا حسابداری باشه که بعدا بتونم از روی اون برنامه دیگه بسازم.خودم سایت نوشتم منتها فرم applicationی ننوشتم نمیدونم دستور اتصالش به پایگاه داده چطوره.
اگه لطف کنین یه برنامه که درج و حذف و نمایش بانگ اطلاعات و ورود افراد login و ... توش باشه.ممنون
Arman Mohamadi آفلاین است   پاسخ با نقل قول
کاربرانی که به خاطر مطلب مفید Arman Mohamadi از وی تشکر کرده‌اند:
قدیمی سه شنبه 25 اسفند 1388, 02:52 صبح   #7
Arman Mohamadi
کاربر جدید
 
تاریخ عضویت: شهریور 1388
محل زندگی: مريوان
پست: 7
تشکرها: 1
یک بار تشکر شده در یک پست
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها

آقای باقرانی با سلام.
راستش من تازه ترم اول کارشناسیم هیچی از معماری و اینا بلد نیستم.
من از روی pdf پیش رفتم پایگاه هم درست کردم منتها تو dataTable خطا میده نمیدونم چیکار کنم.
تا جایی که میدونم فقط خطاهام در رابطه با dataTable هستش.
من پروژم رو واستون میفرستم اگه امکانش هست زحمت بکشید مشکلشو برطرف کنید. اگه شماره تماس هم بذارین تا مستقیم باهاتون تماس بگیرم ممنون میشم.
در ضمن اگه یکی از پروژه هاتون رو با C#‎ و SQL 2000 همراه با راهنمای گام به گام و کاملآ واضح برام بفرستین ازتون میخرم.
با سپاس و تشکر فراوان.
فایل های ضمیمه
نوع فایل: zip dataSample.zip‏ (27.5 کیلوبایت, 139 دیدار)
Arman Mohamadi آفلاین است   پاسخ با نقل قول
قدیمی سه شنبه 25 اسفند 1388, 03:16 صبح   #8
mohammad_bagherani
کاربر دائمی
 
آواتار mohammad_bagherani
 
تاریخ عضویت: فروردین 1388
محل زندگی: مشهد
پست: 566
تشکرها: 276
402 بار تشکر شده در 205 پست
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها

با سلام
نقل قول:
من تازه ترم اول کارشناسیم هیچی از معماری و اینا بلد نیستم
طوری که از استادمون پرسیدم این مطالب مربوط به دوره ارشد میشه. پس ناراحت نباشید.

راستش فایل ضمیمه رو نتونستم باز کنم. فایل اصلی solution همراهش نیست.
اما باید بدونید که زمانی که من مطالب بالا رو مینوشتم اولا برنامه به بدون مشکل اجرا میشد و من تونستم ازشون عکس بگیرم و ...
و بعد اینکه در پست اول اشاره شده که
نقل قول:
این برنامه صرفا جنبه مثالی دارد و بهینه سازی و تکمیل کدها به خواننده واگذار شده است.
اگه در سورس کدها دقت کنید میبینید که مثلا از هیچ بلوک try Catch ای استفاده نکردم.
پس اگه طبق آموزش پیش رفتید و در قسمتی به خطا بر خوردید باید خودتون زحمت رفعش رو بکشید.
احتمالا در قسمت connection string یا بعضی خطا های جزئی به مشکل برخوردید که اگه بتونید متن خطا رو بگید بهتر و راحت تره.
در مورد پروژه هم همون پیغامی که قبلا دادم جوابم هست و منتظر جواب شما هستم.
__________________
پیامبر خدا صلی الله علیه و آله:
هر که دانش می جوید، خداوند روزی اش را برعهده می گیرد
mohammad_bagherani آفلاین است   پاسخ با نقل قول
قدیمی چهارشنبه 04 فروردین 1389, 16:08 عصر   #9
saeedr22
کاربر دائمی
 
آواتار saeedr22
 
تاریخ عضویت: آبان 1387
پست: 207
تشکرها: 12
114 بار تشکر شده در 81 پست
ارسال پیام از طریق Yahoo به saeedr22
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها

احساس می کنم بعضی جاها کدهای لایه ی bll رو تو dataaccess نوشتین.
__________________
saeed.rezaei1@gmail.com

دوست دارم همه ی دوستام برنامه نویس باشن .
saeedr22 آفلاین است   پاسخ با نقل قول
قدیمی شنبه 21 فروردین 1389, 18:58 عصر   #10
ghuoloomi
کاربر جدید
 
تاریخ عضویت: فروردین 1389
پست: 4
تشکرها: 0
یک بار تشکر شده در یک پست
نقل قول: پیاده سازی یک پروژه ساده با معماری لایه ای از ابتدا تا انتها

سلام و عرض خسته نباشید.
مطلب مفید و جالبی بود. ممنون
فقط یه خطایی از برنامه می گیره که عکسشو واستون می ذارم .. لطفا راجبش توضیح بدین.. ممنون میشم.
عکس های ضمیمه
نوع فایل: jpg pic.jpg‏ (99.0 کیلوبایت, 53 دیدار)
ghuoloomi آفلاین است   پاسخ با نقل قول
پاسخ

بوک مارک کردن این تاپیک

Tags
برنامه با معماری چند لایه, معماری لایه ای


کاربرانی که این تاپیک را مشاهده میکنند: 1 (0 کاربران و 1 مهمان)
 
ابزار های تاپیک
طریقه نمایش

قوانین ایجاد تاپیک در تالار
شما نمی توانید تاپیک جدید ایجاد کنید
شما نمی توانید به تاپیک ها پاسخ دهید
شما نمی توانید ضمیمه ارسال کنید
شما نمی توانید پاسخ هایتان را ویرایش کنید

BB code روشن است
خندانک ها روشن هستند
[IMG] روشن است
HTML خاموش است

پرش



واحد زمان برحسب ساعت لندن +3.5. ساعت هم اکنون 01:07 صبح است.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 1389, Jelsoft Enterprises Ltd.
خدمات میزبانی این سایت تحت پوشش شرکت ایران هاست می باشد.