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

نام تاپیک: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    R0)ot -> Main();
    پست
    1,158

    کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    سلام دوستان عزیز

    ما یه سیستم رو در حال تحلیل هستیم که به صورت کلاینت سروری هست. مشکل اصلی و بزرگ ما بانک اطلاعاتی هست. نرم افزار قسمت دیتابیس داره و قسمت کلاینت ها. این کلاینت ها با کلی از جداول بانک اطلاعاتی در ارتباط هستند. مشکل اصلی اینجا بوجود میاد که این نرم افزار یه سیستم کاملا مالی هست. داخل سیستم کلی Transaction های مالی انجام می شه. فهمیدن Connection String باعث فاجعه می شه. واسه اینکه اگر کسی پسور DB رو پیدا کنه ما بیچاره می شیم. به همین خاطر نظر ما استفاده از WCF هست. اما استفاده از سرویس کلی مشکلات از قبیل برنامه نویسی زیاد رو بوجود میاره. می خوام بدونم دوستان نظری در این رابطه دارند؟؟؟

    این رو هم بگم تعداد کلاینت ها شاید به 20 هزار تا برسه. که در بهترین شرایط 1000 کلاینت آنلاین هستند.

    قبلا یه SP نوشتم که روی فیلد ها فیلتر می کرد. به این صورت که هر کاربر یه نام کاربر هم تو DB داشت. زمانی که کاربر Login می کرد نام کاربری و رمزعبورش هم تو DB موجود بود. بعد هر کاربر به یک SP به نام ExeSQL دسترسی داشتند. هر جدول دارای فیلی بنام IdUser بود. وقتی کاربر به برنامه Login می کرد و Query ارسال می کرد Query با استفاده از روشی خاص نام کاربری رو پیدا و هر دستوری که اجرا می شد با استفاده از IdUser اون Query رو فیلتر می کرد. با این روش هر کاربر فقط رکورد هایی رو می تونست ببینه که خودش ایجاد کرد و IdUser خودش تو اون رکورد بود. اما به دلایلی نمی خوام از این روش استفاده کنم.

    سوال اصلیم این هست که نرم افزار های اتوماسیون اداری از چه روش برای ارتباط با سرور استفاده می کنند؟؟؟
    به دلیل امنیت پایین کد های .Net تو ریسورس شدن اصلا نمیشه از چیزی استفاده کرد.


    باتشکر احسان

  2. #2

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    چرا Connection String رو با استفاده از چند تا تابع قوی Encrypt نمی کنید؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    R0)ot -> Main();
    پست
    1,158

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    نقل قول نوشته شده توسط Padrone مشاهده تاپیک
    چرا Connection String رو با استفاده از چند تا تابع قوی Encrypt نمی کنید؟
    دوست عزیز فایده این کار چیه؟؟؟ زمانی که می خوایم یه Connection String رو کد کنیم بالاخره باید با استفاده از الگوریتمی این کار رو بکنیم، خوب کسی که سورس رو باز کنه الگوریتم هم پیدا می کنه. در ضمن چگونه Connection String کد شده رو به دیتابیس بفرسیتم!!!!!!!!!!!!!


    باتشکر احسان

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    R0)ot -> Main();
    پست
    1,158

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    این روزا انجمن پر شده از تاپیک های بیهوده که روز 3 صفحه زیاد می شه. فکر می کنم مدیر انجمن باید یه فکری برای این موضوع بکنه. چون واقعا موضوعاتی که می تونه خیلی داغ باشه به راحتی صفحه ها از دید کنار می ره.

    دوستان خوشحال می شم تو این تاپیک در باره موضوع تاپیک بحث کنیم.

    باتشکر احسان

  5. #5
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    نقل قول نوشته شده توسط r0ot$harp مشاهده تاپیک
    این روزا انجمن پر شده از تاپیک های بیهوده که روز 3 صفحه زیاد می شه. فکر می کنم مدیر انجمن باید یه فکری برای این موضوع بکنه. چون واقعا موضوعاتی که می تونه خیلی داغ باشه به راحتی صفحه ها از دید کنار می ره.
    سلام.
    منم با شما موافقم. متاسفانه "تاپیک های تکراری" و "پست های تکراری در یک تاپیک" تالار رو خشک و کسل کننده کرده.
    فکر کنم سوالتون رو اگر در تالار تحلیل و طراحی بانک اطلاعاتی مطرح میکردید حداقل یه جواب نصف و نیمه میگرفتی.
    موفق باشی دوست عزیز.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    R0)ot -> Main();
    پست
    1,158

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    نقل قول نوشته شده توسط mohammaddou مشاهده تاپیک
    سلام.
    منم با شما موافقم. متاسفانه "تاپیک های تکراری" و "پست های تکراری در یک تاپیک" تالار رو خشک و کسل کننده کرده.
    فکر کنم سوالتون رو اگر در تالار تحلیل و طراحی بانک اطلاعاتی مطرح میکردید حداقل یه جواب نصف و نیمه میگرفتی.
    موفق باشی دوست عزیز.
    والا تقریبا ما تمام تکنولوژی و موارد کاری رو انتخاب کردیم. اما از اونجایی که خودم اتوماسیون تا حالا کار نکردم می خوام بدونم بهترین روش همین استفاده از سرویس هست یا نه روش های بهتر و بهینه تری هم هست. خیلی تو اینترنت گشتم. چیزه زیاده پیدا نکردم. حتی اون SP هم که گفنم طراحی کردم با خیلی از طراح و برنامه نویس های بانک اطلاعاتی مشورت کردم اما نتونستن کمک کنند. در نهایت با سعی 2 هفته ای تونستم بنویسمش.


    باتشکر احسان

  7. #7
    VIP آواتار Amir Oveisi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    هر جا که حال کنم - فعلا یزد
    پست
    2,604

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    اگر مشکل فقط ConnectionString هست راه های زیادی برای حلش وچود داره. مثلا:
    1- اطلاعات حساس رو داخل conntectio string قرار ندید و اون ها رو در زمان اجرا، از کاربر دریافت کرده و به connection string اضافه کنید.
    2- محتوای connection string رو رمزنگاری کنید (با الگوریتم های مناسب) و در زمان مورد نیاز اون رو رمزگشایی کنید. (به صورت دستی ممکنه یه مقدار کار بخواد این روش)
    3- میتونید از قابلیت های رمزنگاری خود دات نت برای این کار استفاده کنید که مختص محافظت از اطلاعات configuration طراحی شده. این ابزار ها به صورت خودکار section های مشخص شده رو رمزنگاری کرده و در زمان مورد نیاز به صورت خودکار رمزگشایی می کنند. در واقع برنامه نویس دیگه درگیر جزئیات نخواهد شد. به عنوان نمونه کد زیر رو ببینید:
    var configFile = WebConfigurationManager.OpenWebConfiguration(Syste  m.Web.HttpRuntime.AppDomainAppVirtualPath);
    if (configFile != null)
    {
    var section = configFile.Sections["connectionStrings"];
    section.SectionInformation.ProtectSection("DataPro tectionConfigurationProvider");
    section.SectionInformation.ForceSave = true;
    configFile.Save(ConfigurationSaveMode.Modified);
    }


    4- استفاده از معماری های SOAP مانند Web Serivce ها و WCF. شخصا این روش رو بیشتر می پسندم. اولا اینکه لایه های منطقی برنامه رو به شکل بهتری میشه با این ابزار از هم جدا کرد و دوم اینکه سمت کلاینت همیشه میدونه که با سرویسی با این ویژگی ها قراره در ارتباط باشه و فقط اون سرویس (ها) رو میشناسه و به هیچ وجه از وجود موجودی به اسم سرور اطلاعی نداره که این موضوع هم از نظر مباحث امنیتی میتونه مفید باشه و هم از نظر مباحث طراحی loosely coupled.
    در ضمن اگر از این روش استفاده کنید خواهید دید که develope با این روش ساده تر و روان تر هست.

    موفق باشید

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    R0)ot -> Main();
    پست
    1,158

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    نقل قول نوشته شده توسط Amir Oveisi مشاهده تاپیک
    اگر مشکل فقط ConnectionString هست راه های زیادی برای حلش وچود داره. مثلا:
    1- اطلاعات حساس رو داخل conntectio string قرار ندید و اون ها رو در زمان اجرا، از کاربر دریافت کرده و به connection string اضافه کنید.
    2- محتوای connection string رو رمزنگاری کنید (با الگوریتم های مناسب) و در زمان مورد نیاز اون رو رمزگشایی کنید. (به صورت دستی ممکنه یه مقدار کار بخواد این روش)
    3- میتونید از قابلیت های رمزنگاری خود دات نت برای این کار استفاده کنید که مختص محافظت از اطلاعات configuration طراحی شده. این ابزار ها به صورت خودکار section های مشخص شده رو رمزنگاری کرده و در زمان مورد نیاز به صورت خودکار رمزگشایی می کنند. در واقع برنامه نویس دیگه درگیر جزئیات نخواهد شد. به عنوان نمونه کد زیر رو ببینید:
    var configFile = WebConfigurationManager.OpenWebConfiguration(Syste  m.Web.HttpRuntime.AppDomainAppVirtualPath);
    if (configFile != null)
    {
    var section = configFile.Sections["connectionStrings"];
    section.SectionInformation.ProtectSection("DataPro tectionConfigurationProvider");
    section.SectionInformation.ForceSave = true;
    configFile.Save(ConfigurationSaveMode.Modified);
    }


    4- استفاده از معماری های SOAP مانند Web Serivce ها و WCF. شخصا این روش رو بیشتر می پسندم. اولا اینکه لایه های منطقی برنامه رو به شکل بهتری میشه با این ابزار از هم جدا کرد و دوم اینکه سمت کلاینت همیشه میدونه که با سرویسی با این ویژگی ها قراره در ارتباط باشه و فقط اون سرویس (ها) رو میشناسه و به هیچ وجه از وجود موجودی به اسم سرور اطلاعی نداره که این موضوع هم از نظر مباحث امنیتی میتونه مفید باشه و هم از نظر مباحث طراحی loosely coupled.
    در ضمن اگر از این روش استفاده کنید خواهید دید که develope با این روش ساده تر و روان تر هست.

    موفق باشید
    تشکر دوست عزیز.

    ما برای یکی از نرم ازفزارها در بانک ملی از این روش استفاده کردیم. روش خوبی هست در ضمن مشکل امنیت رو واقعا حل می کنه. روش به این صورت هست که مثلا می خوایم کارمندی رو در بانک اضافه کنیم. در ابتدا برای هرکاری سرویس تعریف کردیم:
    SV_UserAdd=011120255625
    خوب این شد سرویس ما. حالا هر پکتی که به سمت سرور ارسال می کنیم به صورت زیر هست:
     RSA_ENC_2048(AES_ENC_256(Service|Username|password  |FirstName|LastName|Email|Tel|NationalCode|Persona  lCode|Application Version|Message Signing))


    خوب این شد رشته اطلاعاتی ما برای ارسال به سرور که از دو کانال رمزنگاری رد می شه. در ابتدا AES و بعد RSA. تا اینجا امنیت بسیار بالا هست. قسمت آخر که Message Signing هست، به صورت زیر عمل می کنیم:
     MD5(RawData(Service|Username|password|FirstName|La  stName|Email|Tel|NationalCode|PersonalCode|Applica  tion Version))

    منظور از Raw Data یعنی Data که هنوز کد نشده و خام هست.

    خوب کاملا مشهود هست که سرور به چه صورتی اطلاعات رو مورد پردازش قرار می ده و جواب رو برای کلاینت ها ارسال می کنه. اگر نا مفهوم بود بگین اون قسمت هم توضیح بدم.

    در قسمت بعدی می خوام ارسال اطلاعات رو از سرور به کلاینت به صورت DataTable توضیح بدم. مثلا ما می خوایم لیست کاربران رو برای کلاینت ارسال کنیم. برای این کار هم کد سرویسی موجود هست. در سرور ما DataTable رو به XML تبدیل می کنیم. سپس اون رو با استفاده از GZIP فشرده می کنیم. سپس رشته کد شده رو با Base64 کد کرده و به کلاینت ارسال می کنیم. کلاینت زمان دریافت رشته اون رو از حالت فشرده خارج کرده و دوباره با استفاده از XML اون رو به DataTable تبدیل می کند.

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

    باتشکر احسان

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    R0)ot -> Main();
    پست
    1,158

    نقل قول: کمک در رابطه با طراحی نرم افزار کلاینت سرور مالی بزرگ

    دوستان اگر کسی هست که راه بهتری می شناسه خوشحال می شم معرفی کنه.

    باتشکر احسان

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: یک شنبه 27 فروردین 1391, 10:34 صبح
  2. حرفه ای: کمک در طراحی نرم افزار vxml Designer
    نوشته شده توسط ano0sh در بخش تحلیل و طراحی نرم افزار
    پاسخ: 0
    آخرین پست: جمعه 14 خرداد 1389, 23:15 عصر
  3. کمک در طراحی نرم افزار acconting
    نوشته شده توسط marziyehh در بخش شبکه و Networking‌
    پاسخ: 1
    آخرین پست: یک شنبه 24 شهریور 1387, 15:54 عصر
  4. کمک در طراحی نرم افزار acconting
    نوشته شده توسط marziyehh در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: یک شنبه 24 شهریور 1387, 09:07 صبح
  5. طراحی نرم افزار های Real-Time
    نوشته شده توسط سعید قدیری مقدم در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: جمعه 20 خرداد 1384, 11:01 صبح

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

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