نمایش نتایج 1 تا 23 از 23

نام تاپیک: آموزش مدیریت ارسال و دریافت اطلاعات در محیط شبکه (Server / Client)

  1. #1

    آموزش مدیریت ارسال و دریافت اطلاعات در محیط شبکه (Server / Client))

    باسلام و عرض خسته نباشید خدمت همه عزیزان
    بعد از کلی جستجو ونرسیدن به یک راه حل قطعی در زمینه یک روش امن برای به اشتراک گذاشتن فایلها در محیط شبکه تصمیم گرفتم این تایپیک رو ایجاد کنم و از تجربیات دوستان در این زمینه استفاده کنم.
    من در حال نوشتن برنامه ای هستم که این برنامه قراره در محیط شبکه یک شرکت با 20 یوزر اجرا بشه (Workgroup) .
    در این برنامه که عملکردی مشابه با نرم افزار اتوماسیون اداری داره کاربران ابتدا در برنامه ثبت نام میشوند.
    بعد از ورود کاربران به برنامه با توجه به دسترسی که به هر کاربر داده شده (دسترسی ها در یک جدول در دیتابیس تعریف شده) میتوانند به برنامه فایل اضافه کنند ، فایل ویرایش کنند و فایل رو حدف کنند.
    همچنین با توجه به همون دسترسی هایی که خدمتتون گفتم کاربران دیگه باید بتونن از این فایل ها که توسط سایرین افزوده شده استفاده کنند.
    فرض کنیم قراره در این برنامه از فایلهایی با حجم بالا استفاده بشه (مثلاً 1.5 گیگ)
    در اکثر تایپیکهایی که در این زمینه ایجاد شده بود متاسفانه یا فقط از روشها نام برده شده بود و یا مباحث نصفه و نیمه رها شده بود.
    از دوستان خواهشمندم برای رفع ابهام از این موضوع در این تایپیک مشارکت کنند.
    ممنون
    یاعلی

  2. #2
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    برای شروع بحث لازم است اعلام کنید که کدام روش را میخواهید بکار برید :
    1- فایل را به درون بانک اطلاعاتی منتقل کنید و از طریق SQLServer خدمات ارائه گردد
    2- فایل را در شبکه در مسیر Share قرار داده و مدیریت فایل توسط برنامه شما انجام گردد
    3- فایل را در یک سرور بدون Share کردن و از طریق یک سرویس و ارتباط برنامه شده با سرویس مدیریت کنید
    لطفا یکی را انتخاب کنید چون موضوع وسیع و پیچیده خواهد شد

  3. #3

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام جناب کفاش عزیز
    1- فایل را به درون بانک اطلاعاتی منتقل کنید و از طریق SQLServer خدمات ارائه گردد
    در مورد روش اول اگر لطف کنید و کدهای مربوط به آپلود و دانلود فایل در جدول SQL server رو در اختیارم قرار بدید ازتون تشکر میکنم
    این کدها رو در vb6 یکبار در اختیارم گذاشتید ولی گمون میکنم اون کدها دیگه در vb.net کاربردی نداشته باشه
    ممنون میشم این کدها رو با معماری net. در اختیارم بذارید

    2- فایل را در شبکه در مسیر Share قرار داده و مدیریت فایل توسط برنامه شما انجام گردد
    در مورد روش دوم دقیقاً متوجه منظورتون نشدم
    منظورتون همون روش File Sharing هست؟
    3- فایل را در یک سرور بدون Share کردن و از طریق یک سرویس و ارتباط برنامه شده با سرویس مدیریت کنید
    اما در مورد روش سوم فکر کنم به دنبال این روش هستم که بشه در برنامه از یک سرویس دهنده استفاده کرد

    اما یک نکته :
    فرض کنید که فرمی داریم که در این فرم یک گرید هست که آدرس تعدادی عکس در آن ذخیره شده ، میخواهیم زمانیکه بر روی هر کدام از ردیفها کلیک کنیم تصویر مربوطه در یک picture box نمایان شود ، یا مثلاً این آدرسها احتمال داره برای یک سری فایل تصویری باشد که میخواهیم با کلیک بر رو هر کدام از ردیفها فیلم مورد نظر در Player نمایش داده شود
    آیا استفاده از روش سوم میتواند پاسخگوی این عملیات باشد؟
    جناب کفاش عزیز باز هم از شما به خاطر قبول زحمت در این آموزش تشکر میکنم
    ممنون
    یاعلی

  4. #4
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: مدیریت و امنیت فایلها در شبکه

    با سلام

    " نقل قول: مدیریت و امنیت فایلها در شبکه " خوب این عنوان تاپیک هستش ! دو مقوله خیلی وسیع ! در مورد امنیت فایل ها میشه این رو گفت که از دو بخش مجزا تشکیل میشه مثال میزنم که بهتر متوجه بشین . ببین مثلا شما 1 فایل تصویری دارین , خوب میشه برای دسترسی به این فایل تصویری از روش محدودیت در دسترسی برای کاربران قائل بشین یعنی هر کاربری که مجوز دسترسی به این گونه فایل ها رو داشت بتونه ببینه یا ویرایش کنه یا ... و روش دوم اینه که شما در عین حالی که چک میکنی کاربر مجوز دسترسی داره بیای این فایل رو Encryp هم بکنی ! یعنی فایل کد میشه و به فرض اگه کسی هم دسترسی غیر مجاز داشت و به طریقی تونست دسترسی به فایل پیدا کرد نتونه اون رو حداقل ببینه یا ویرایش کنه ! البته روش های امنیتی بیشتری هم میشه ایجاد کرد .

    موفق باشید ./

  5. #5

    نقل قول: مدیریت و امنیت فایلها در شبکه

    باسلام
    علي جان ممنون از توضيحاتت
    چطور ميتونم روش سوم رو در VB.NET اجرايي كنم؟
    ممنون
    ياعلي

  6. #6
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: مدیریت و امنیت فایلها در شبکه

    باتوجه به اینکه میفرمائین که حجم داده ها ( فایل ها ) زیاده به نظر من بهترین پروتکل استفاده از FTP هست . یعنی برای کاربران خودتون شناسه و پسورد میسازین و در این شبکه بوسیله یک برنامه واسط به مدیریت انتقال داده ها میپردازین چیزی شبیه به برنامه Filezila اما در حجم کوچکتر ولی تخصصی تر در زمینه مورد نیاز خودتون . برای این منظور بهتره کمی در مورد پروتکل های انتقال داده مطالعه داشته باشید بعد نوشتن اون واسط کاربری چیز زیاد سختی نیست .

    موفق باشید ./

  7. #7

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    میشه روش زیر رو توضیح بدید:
    - فایل را در یک سرور بدون Share کردن و از طریق یک سرویس و ارتباط برنامه شده با سرویس مدیریت کنید
    ممنون
    یاعلی

  8. #8
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: مدیریت و امنیت فایلها در شبکه

    با سلام

    این سورسی هست که قبلاً نوشته بودم فقط دیتابیس اون اکسس هست ( چون الان سیستمم با پایگاه داده های SQL مشکل داره نتونستم تغییرش بدم به SQL فکر نمیکنم شما از پس تبدیل ساده 3 یا 4 خط کد برنیاین ) در این سورس شما قادر هستین هر فایلی رو به پایگاه داده اضافه کنین ( به صورت فیزیکی ) من برای مثال عکس , صدا , فایل ( PDF ) رو ذخیره و بعد استخراج کردم شما نسبت به احتیاجی که داری کدهاتون رو تغییر بدین . پسورد بانک : alimanam هستش .



    موفق باشید ./
    فایل های ضمیمه فایل های ضمیمه

  9. #9
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    سورس ذیل را برای به روز رسانی یک رکورد که از نوع Image در اس کیوال سرور است استفاده کنید :

    Public Shared Sub UpDateBinary(ByVal ConnectionString As String, ByVal FileName As String, ByVal FieldName As String, ByVal TableName As String, ByVal Where As String)
    Dim connection As New SqlConnection(ConnectionString)
    Dim command As New SqlCommand(String.Concat(New String() { "UpDate ", TableName, " Set ", FieldName, "=@ImageName Where ", Where }), connection)
    Dim stream As FileStream = File.OpenRead(FileName)
    Dim buffer As Byte() = New Byte(stream.Length - 1) {}
    stream.Read(buffer, 0, CInt(stream.Length))
    stream.Close
    command.Parameters.Add("@ImageName", SqlDbType.Image).Value = buffer
    connection.Open
    command.ExecuteNonQuery
    connection.Close
    End Sub

    ولی چند روش برای انتقال فایل به شکل یک Object متصور است :
    - استفاده از Web Service
    - استفاده از سوکت
    - استفاده از WCF
    - استفاده از DotNet Remoting
    - ........
    من بنظرم درون یک شبکه محلی سرعت استفاده از DotNet Remoting مناسب تر است
    از آنجائی که من دست به #C هستم اگر موافق باشید من با #C کد بنویسم (اگر مدیر تالار اجازه دهد و خودتان VB.Net کنید)

  10. #10

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    ممنونم جناب کفاش عزیز از لطفتون بابت قبول زحمت آموزش DotNet Remoting
    یاعلی

  11. #11
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    انشالله سعی میکنم در چند مرحله موضوع را تشریح کنم (در انتها سورس هم می نویسم )
    1: معماری DotNet Remoting به شکل ساده ذیل معرفی میگردد :
    عکس های ضمیمه عکس های ضمیمه

  12. #12
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    با سلام
    با عرض پوزش بابت تاخیر :
    2- از دیدگاه پیاده سازی مطابق شکل عمل می کنیم :
    عکس های ضمیمه عکس های ضمیمه

  13. #13
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    با سلام
    3- یک خط URL به شکل ذیل قابل ارائه است :
    عکس های ضمیمه عکس های ضمیمه

  14. #14
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    با سلام
    روش پیاده سازی :
    4-
    1-4)
    - از dll بنام System.Runtime.Remoting.dll استفاده کنید
    - از Namespace های ذیل استفاده کنید :
    System.Runtime.Remoting
    System.Runtime.Remoting.Channels
    System.Runtime.Remoting.Channels.Tcp
    2-4)
    سمت Common (مرحله 2) یک Class Library ایجاد گردد که یک Interface است و کلیه متدهای / خواص / ... در آن فقط معرفی میگردد (این ماهیت چند ریختی است)
    3-4)
    سمت Server :
    - dll مشترک به پروژه ریفرنس می شود
    - یک کلاس ایحاد میگردد که از کلاس MarshalByRefobject و Interface ارث بری می کند
    - کلیه متدها و خواص / .... درون Interface درون کلاس پیاده سازی میگردد
    - درون یک فرم یا ویندوز سرویس یا .... با استفاده از کلاس های TcpServerChannel و RemotingConfiguration و ChannelServices یک کانال رجیستر و آماده دریافت فرمان خواهد شد

  15. #15
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    با سلام
    5- سمت Clinent :
    - dll مشترک به پروژه ریفرنس می شود
    - یک URL جهت تبادل با Server ایجاد میگردد
    - یک کانال با استفاده از TcpClientChannel ایجاد میگردد
    - با استفاده از کلاس ChannelServices کانال رجیستر می شود
    - با استفاده ار کلاس Activator یک نمونه شی ایجاد میگردد
    - با استفاده از متدها و خواص طراحی شده درخواست های شما پاسخ داده می شود
    (حتما در خصوص مفاهیم serialization و deserialized نیز مطالعه کنید)

  16. #16
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    با سلام
    از این ببعد به زبان #C سورس ارائه میدهم زحمت تبدیل معادل به ali190 عزیز :
    فرض کنید می خواهیم یک سرویس دریافت تاریخ و ساعت سمت یک سرور پیاده سازی کنیم بنابراین در سمت Common به شکل ذیل یک Interface طراحی می کنیم (موضوع خیلی واضح است اگر سئوالی از این کد هست تا همین جا مطرح شود تا برویم سمت سرور)

    namespace CommonDLL
    {
    public interface MyRemote
    {
    string GetTime();
    string GetDate();
    }
    }

  17. #17

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    ممنون بابت آموزشهايي كه تاكنون زحمتش رو كشيديد
    آيا منظورتون از Common همون Client هست؟
    ممنون
    ياعلي

  18. #18
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    Common یک Class Library است که به پروژه سمت Client و Server ریفرنس شده است و Interface درآن تعریف شده است

  19. #19
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    حال باید بخش سرور راپیاده سازی کرد :
    ابتدا یک کلاس که از کلاس MarshalByRefObject و اینترفیس ما که در dll درون Common است ارث بری می کنیم بنابراین مجبوریم که خواص یا متدهای درون اینترفیس را پیاده سازی کنیم به سورس ذیل نگاه کنید

    publicclassCreateClass : MarshalByRefObject, MyRemote
    {
    publicstring GetTime()
    {
    returnDateTime.Now.ToString("hh:mm:ss");
    }
    publicstring GetDate()
    {
    DateTime MiladiDate =DateTime.Now;
    PersianCalendar PerCldr =newPersianCalendar();
    return PerCldr.GetYear(MiladiDate).ToString() +"/"+
    PerCldr.GetMonth(MiladiDate).ToString() +"/"+
    PerCldr.GetDayOfMonth(MiladiDate).ToString();
    }

    متدهای GetTime و GetDate که درون اینترفیس بوده اند پیاده سازی شده اند. در ادامه مثلا درون یک فرم از طریق یک پورت و با استفاده از کلاس TcpServerChannel آماده دریافت دستور می شویم :

    publicpartialclassRemoteServer : Form
    {
    public RemoteServer()
    {
    InitializeComponent();
    }
    privateTcpServerChannel TSC =newTcpServerChannel(1355);
    privatevoid RemoteServer_Load(object sender, EventArgs e)
    {
    RemotingConfiguration.ApplicationName ="MyApp";
    ChannelServices.RegisterChannel(TSC, false);
    RemotingConfiguration.RegisterWellKnownServiceType(typeof(CreateClass), "MyService", WellKnownObjectMode.SingleCall);
    }
    privatevoid RemoteServer_FormClosing(object sender, FormClosingEventArgs e)
    {
    ChannelServices.UnregisterChannel(TSC);
    }

    شماره پورت و MyApp و ... بعدا توسط Clinet از طریق یک URL باید ارائه گردد

  20. #20

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام جناب کفاش عزیز
    متد ارسال و دریافت رو هم توضیح میدید؟
    ممنونم
    یاعلی

  21. #21
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    سلام
    سمت Client خیلی آسانتر از سمت Server است کافی است
    - یک URL ایجاد کنید
    - یک کانال جهت ارتباط معرفی کنید
    - در هنگام فراخوانی متدهای مورد نظر باید Cast به اینترفیس شما انجام شده سپس مقادیر را دریافت کنید


    public partial class MyClient : Form
    {
    public MyClient()
    {
    InitializeComponent();
    }
    TcpClientChannel TCC =newTcpClientChannel();
    string URL =@"tcp://SohSony:1355/MyApp/MyService";
    private void Form1_Load(object sender, EventArgs e)
    {
    ChannelServices.RegisterChannel(TCC, false);
    }
    private void button1_Click(object sender, EventArgs e)
    {
    MyRemote RS = (MyRemote)Activator.GetObject(typeof(MarshalByRefObject), URL);
    this.Text = RS.GetTime();
    }
    private void button2_Click(object sender, EventArgs e)
    {
    MyRemote RS = (MyRemote)Activator.GetObject(typeof(MarshalByRefObject), URL);
    this.Text = RS.GetDate();
    }
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
    ChannelServices.UnregisterChannel(TCC);
    }
    }

    تمام شد حالا شما یک ارتباط بین Client و Server با استفاده از دات نت ریموتینگ (Dot Net Remoting) دارید و هر تعداد متد / ... که بخواهید می توانید اضافه کنید

  22. #22
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مدیریت و امنیت فایلها در شبکه

    نقل قول نوشته شده توسط ali190 مشاهده تاپیک
    سلام جناب کفاش عزیز
    متد ارسال و دریافت رو هم توضیح میدید؟
    ممنونم
    یاعلی
    سلام
    پارامترهای ورودی از طریق خواص یا پارامترهای ورودی متد می تواند به سرور ارسال شود و خروجی مثلا برای متد شما خروجی مورد نظر شما است مثلا برای مسئله شما فرض کنیم که نام فایل شما بعنوان ورودی با یک متد ارسال ودر سمت سرور این فایل از مسیر موردنظر تبدیل به یک Stream شده و یک Stream تحویل کلاینت شود و کلاینت در صورت تمایل می تواند Stream را به یک فایل در هارد تبدیل کند
    یک موضوع مهم :
    به نظرم عنوان تاپیک با عنوان آموزش شباهت ندارد لطفا اگر پیگیری نمائید که مدیران تالار عنوان را اصلاح کنند برای دیگران مفید خواهدشد سر وقت در مورد 3 روش دیگر هم می توان بحث کرد ولی همین قدر بدانید که ترتیب سختی پیاده سازی به ترتیب ذیل است :
    - سوکت
    - ریموتینگ
    - WCF
    - وب سرویس

  23. #23
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: آموزش مدیریت ارسال و دریافت اطلاعات در محیط شبکه (Server / Client)

    سلام
    اینهم سورس کامل روش Dot Net Remoting در ضمن شاید برای تعدادی از افراد کمی موضوع سنگین باشد در هر صورت نوشتن یک سرویس بخصوص ریموتینگ که از روش های دیگر نسبتا سخت تر است کمی گیج کننده به نظر برسد ولی پیشنهاد می کنم قبلا در خصوص مفاهیم ذیل مطالعه نمائید :
    - انواع Member های یک کلاس
    - مفهوم اینترفیس در دات نت (برای استفاده در چند ریختی)
    - serialization و de serialization
    - انواع پروتکل های ارتباطی (WCF / WebService / ...)
    فایل های ضمیمه فایل های ضمیمه

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

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