PDA

View Full Version : سوال: اجرای یک برنامه ی دات نت از روی Share یک کامپیوتر دیگر



gooran
دوشنبه 31 تیر 1387, 13:03 عصر
سلام...
من یک برنامه با C# .Net 2.0 و SQL Server 2005 نوشتم و می خوام که اونو از روی Sharedoc یک کامپیوتر دیگر بر روی کامپیوتری دیگری اجرا کنم. من اومدم فولدر bin/debug رو توی sharedoc کپی کردم اما موقع اجرا از یک کامپیوتر دیگه می گفت که یه سری dll رو پیدا نمی کنه ! البته توضیح بدم که این برنامه به صورت جداگانه روی هردو کامپیوتر اجرا می شود. یعنی اینکه dll های لازم در هر دو کامپیوتر موجود هست.
ممنون می شم اگه کمکم کنید :لبخندساده:

fat_roze2000
دوشنبه 31 تیر 1387, 14:06 عصر
احتمالا در شاخه system32 باید اونا رو کپی کنی. یادت باشه .Net Framework SDK رو باید نصب کرده باشی

gooran
دوشنبه 31 تیر 1387, 14:40 عصر
ممنون از پاسختون...
sdk روی هردو نصب هست و dll های لازم هم در system32 هر دو وجود داره که برنامه به صورت جداگانه روی هر دوی کامپیوترها اجرا می شه ولی مشکل اینجاست که از share یکی بر روی دیگری اجرا نمی شه...

علیرضا مداح
دوشنبه 31 تیر 1387, 16:57 عصر
سلام دوست عزیز
برای به اشتراک گذاری نرم افزار بر روی شبکه 2 راه اصلی پیش روی شماست ،
1)از ClickOnce Deployment استفاده کنید(Recommended) ، توضیح مختصری درباره این تکنولوژی :

سلام دوست عزیز
ClickOnce تکنولوژی جدیدی است که جهت سهولت در نصب برنامه بر روی دستگاه کاربر خصوصا" در محیط های Client/Server و .. ایچاد گردیده است ، تا قبل از ویژوال استادیو 2005 شما برای اینکه بتوانید کاری کنید که برنامه شما تحت شبکه کار کند و در هنگام تغییر برنامه مجبور به آپدیت کردن تک تک کلایتنها به طور مجزا نباشید یکی از راه های زیر را ذر پیش می گرفتید :
1)پوشه برنامه را بر روی شبکه Share میکردید و کاربر برنامه را مستقیما" از آنجا اجرا میکرد و باید برای اجرای درست از Code Access Security در این مورد کمک می گرفتید .
2)پوشه برنامه را بر روی شبکه Share میکردید و کاربر برای کار با برنامه یک بچ فایل را اجرا میکرد که کار این بچ فایل این بود که پوشه حاوی محتویات برنامه را هر بار بر روی دستگاه کاربر کپی و برنامه را به صورت لوکال و غیر مستقیم اجرا میکرد .
3)..........
در هر دو روش بالا شما می بایست به طور معمول به سراغ تک تک کلایتنها رفته و پیش نیاز های مربوطه از قبیل CrystalReports , .Net Framework , SQLExpress,MDAC , Windows Installer و ... را نصب می نمودید ، ولی الان وضع چگونه است؟
با بهره گیری از تکنولوژی ClickOnce Deployment شما برنامه مورد نظر خود را بر روی شبکه Publish میکنید و کاربران هر بار که برنامه را اجرا میکنند در صورت عدم نصب بودن هر یک از پیش نیازهای مذکور ،آنها نصب میشود ، همچنین شما میتوانید به کاربر خود این امکان را دهید که به دو صورت Online Only و Offline & Online با برنامه شما کار کند ، در حالت فقط آنلاین ، هنگامی که برنامه از روی شبکه (و یا وب سرور) اجرا میشود ، آخرین نسخه برنامه بر روی دستگاه کاربر کپی شده و اجرا می گردد و شما مطمئن هستید که کاربر همیشه با آخرین نسخه برنامه کار میکند و همچنین در صورت عدم در دسترس بودن سرور برنامه اجرا نمی شود ، اما در حالت دوم یعنی This Application is available offline as well ، شما میتوانید تنظیم کنید که هنگام اجرای برنامه و یا خروج از برنامه توسط کاربر نسخه فعلی برنامه بر روی دستگاه کلاینت با نسخه سرور مقایسه و در صورت عدم تطابق با نسخه سرور آپدیت شود ، همچنین در این حالت برنامه شما به صورت آفلاین نیز در دسترس خواهد بود ، گر چه در خصوص نرم افزارهای بانک اطلاعاتی در صورت عدم دسترسی به سرور برنامه استفاده ای نخواهد داشت ،
این بود خلاصه ای از این تکنولوژی ، برای کسب اطلاعات بیشتر به شما پیشنهاد اکید میکنم که حتما" شوی آموزشی زیر را تماشا نمایید :
http://windowsclient.net/learn/video.aspx?v=14105
2)پوشه ی حاوی پروژه را بر روی شبکه Share کنید ، در اینحالت میبایست Prerequiste ها را بر روی هر کلاینت نصب کنید ، برای اجرای برنامه بر روی هر کامپیوتر نیز باید تنظیمات مربوط به Code Access Security - CAS را انجام دهید ، در این خصوص مقاله زیر را مطالعه کنید :
Codeproject - Understanding .Net Code Access Security (http://www.codeproject.com/KB/security/UB_CAS_NET.aspx)

alirzn
سه شنبه 01 مرداد 1387, 07:19 صبح
control panel/administrative tools/microsoft .net framework 2.0/runtime security/machine/all code
این قسمت باید full trust بشه. من این مشکل رو داشتم درست شد.

علیرضا مداح
سه شنبه 01 مرداد 1387, 08:53 صبح
control panel/administrative tools/microsoft .net framework 2.0/runtime security/machine/all code
این قسمت باید full trust بشه. من این مشکل رو داشتم درست شد.

توجه داشته باشید که FullTrust کردن Machine/AllCode کار چندان درستی نیست ، به این دلیل که به تمامی کدهای دات نت در سطح ماشین اجازه Execute شدن را داده و در نتیجه ممکن است که شما از طرف کدهای Malicious مورد حمله قرار گیرید ، در مقاله ای که ذکر شد ، تمامی جزئیات شرح داده شده است ،/

gooran
سه شنبه 01 مرداد 1387, 11:35 صبح
سلام...
ممنون از جواب سریعتون
در مورد ClickOnce باید بگم که من امتحان کردم ولی مشکل اینجاست که باز هم هر کاربر برنامه ی خودش رو داره و مثلا وقتی روی database تغییری ایجاد می کنه برای کاربر دیگه این تغییر رخ نمی ده !
راه حلی برای این مسئله هست به نظرتون ؟
بازم ممنون...

علیرضا مداح
سه شنبه 01 مرداد 1387, 12:10 عصر
سلام...
ممنون از جواب سریعتون
در مورد ClickOnce باید بگم که من امتحان کردم ولی مشکل اینجاست که باز هم هر کاربر برنامه ی خودش رو داره و مثلا وقتی روی database تغییری ایجاد می کنه برای کاربر دیگه این تغییر رخ نمی ده !
راه حلی برای این مسئله هست به نظرتون ؟
بازم ممنون...

دوست عزیز همیشه دیتابیس بر روی سرور قرار دارد و تمامی کاربران مستیما" به یک پایگاه داده (Database)میشوند و بر روی داده ها ، عملیات انجام میدهند ،

gooran
سه شنبه 01 مرداد 1387, 14:41 عصر
خوب من نمی دونم چطوری باید sql server رو تنظیم کنم تا به این حالت بشه که database روی سرور باشه و بقیه client ها از اون database استفاده کنن ! الان برنامه ی من به این صورته که database هم به همراه اون کپی می شه ! یعنی هرکسی که برنامه رو با clickonce نصب می کنه database خودش رو داره !
لطفا اگه می شه راهنماییم کنین !

علیرضا مداح
سه شنبه 01 مرداد 1387, 14:54 عصر
پس شما به صورت File-Based در حال کار با بانک اطلاعاتی هستید و پیشنهاد میکنم این شیوه را به Server-Based تغییر دهید ، بدین صورت که دیتابیس را تنها بر روی سرور Attach میکنید و در برنامه خود قسمتی را برای تنظیم ConnectionString قرار میدهید تا کاربران مشخصات اتصال به سرور را در آن تنظیم نمایند ،/

gooran
سه شنبه 01 مرداد 1387, 15:08 عصر
بازم ممنون از پاسخ سریعتون...
این که می گین یه قسمت برای تنظیم connection string یعنی اینکه یه جایی توی user interface طراحی کنم که بشه هر کاربر اونجا connection string وارد کنه ؟ بعد یعنی این string رو دستی بنویسه ؟
من تا حالا اصلا database رو attach نمی کردم به server !
می شه اگه راهنما یا کد یا قسمتی از کتابی رو می شناسین در این زمینه بهم بگین ؟
مرسی

علیرضا مداح
سه شنبه 01 مرداد 1387, 15:30 عصر
این که می گین یه قسمت برای تنظیم connection string یعنی اینکه یه جایی توی user interface طراحی کنم که بشه هر کاربر اونجا connection string وارد کنه ؟ بعد یعنی این string رو دستی بنویسه ؟


بله ، در این پنجره میبایست فیلدهای مختلفی از جمله نام سرور ، بانک اطلاعاتی ، لاگین ، پسورد ، نوع اعتبارسنجی(SQL Server Authentication یا Windows Authentication) و گزینه های دیگر مربوط به ConnectionString قرار دهید ،