PDA

View Full Version : آیا می تونم این کار رو با استفاده از WCF انجام بدم؟



mohsen_zelzela00
جمعه 19 فروردین 1390, 11:32 صبح
با سلام خدمت اساتید محترم
من یه نرم افزاری رو می خوام شروع کنم که زبان برنامه نویسی آن با C# است و DBآن Oracle . حالا برای اینکه این نرم افزار من بر روی Client ها کار کنه(Win) باید OracleClient رو بر روی تمامی Client ها نصب کنم که این کار تقریباً میشه گفت غیر ممکنه چون برای یه سازمان خیلی بزرگ دارم این نرم افزار رو می نویسم. حالا آیا راهی هست که می بتونم کدهای که با DB ارتباط برقرار میکنه رو با استفاده از WCF بنویسم و اون رو در Server قرار بدم و Client ها متد های اون رو صدا بزنن؟؟؟

اگه این کار با wcf قابل انجام باشه دیگه احتیاجی به نصب OracleClient بر روی Client ها نیست درسته؟؟؟


ممنون میشم اگه جواب مثبت باشه یه مقاله خوب در مورد WCF بهم معرفی کنید.


پیشاپیش ممنونم.

davoodrm666_666
شنبه 20 فروردین 1390, 07:44 صبح
بله
اين كتاب مناسبه براي ياد گيري WCF
Apress.Pro.WPF.in.CSharp.2010.Mar.2010

mohsen_zelzela00
شنبه 20 فروردین 1390, 11:16 صبح
بله
اين كتاب مناسبه براي ياد گيري WCF
Apress.Pro.WPF.in.CSharp.2010.Mar.2010
دوست عزیز این کتابی که معرفی کردی در مورد WPF هست نه WCF

sia_2007
شنبه 20 فروردین 1390, 19:07 عصر
سلام دوست عزیز؛ مسئله یه کمی پیچیده تر از این حرفهاست.
ببینید؛ روش اول که ما سمت سرور Oracle DB داشته باشیم؛ و سمت Client هم Oracle Client ؛ یک سری مشکلات دارد ( در کل ارتباط مستقیم کلاینت با دیتابیس ) بدون وجود App Server
اولا Security : هیچ وقت نباید هیچ گونه دسترسی مستقمی به Database Server وجود داشته باشه.
دوما Performance : فرض کن که میخوای یک محاسبه ای انجام بدی که نتیجه اش یک عدد هستش.
فرض کن برای رسیدن به این عدد باید بین چند تا جدول Join بزنی ؛ و صدها رکورد رو Load کنی؛ شما یا باید این کار رو سمت سرور انجام بدی ؛ ( با PL/SQL تو یه Proc و فراخوانی اون سمت کلاینت )
یا این که کل رکورد ها رو بیاری سمت کلاینت و اون جا این کار رو انجام بدی
اولی مشکلش اینه که پیاده سازی کل محاسبات سمت سرور با Script خیلی خیلی سخت هستش.
دومی علاوه بر مشکل Performance یه مشکل خیلی خیلی جدی داره.
فرض کن اصلا چیزی که باید محسابه بشه؛ 3 الی 4 تا رکورده؛ و ارسالش به سمت کلاینت برای محاسبه مشکل کارآیی نداشته باشه.
در این صورت چه تضمینی داره که کلاینت حق داره تموم اون رکوردها رو ببینه ؟ ( وقتی رکوردی بره به سمت کلاینت یعنی کلاینت و خیلی های دیگه دیدنش؛ با Sniffer یا هر وسیله ی دیگه ای )
و کلی مشکل دیگه
و البته داشتن Service مزایای زیادی داره؛ مثل داشتن یه Caching Engine عالی ؛ سرعت بالاتر توسعه برنامه ؛ پیاده سازی Message Queue ( مخصوصا اگه کلاینت ها همیشه متصل به شبکه نیستند )؛ پیاده سازی Durable Services و ...
شما باید اول برنامه رو کامل Design کنی؛ بعد بری سراغ Platform و تکنولوژی
در هر حال WCF خیلی خوب دیده شده؛ و من الآن دارم یه سرویس با اون مینویسم که روی برنامه بیمه تمومی نمایندگی های بیمه invoke میشه؛ ( یه چند هزار تا کلاینتی میشه ) و بعد از چندین ماه مطالعه و اجرای روی اون میگم که WCF برای هر کاری آماده است. ( ولی در هر حال با یه مقاله حتی در حد Introduction هم قابل بررسی نیست )
سعی کن خیلی بیشتر از این مشورت بگیری؛ این طوری میتونی یه برنامه خوب بنویسی که واقعا یه رزومه خوب برات باشه.
موفق باشی

davoodrm666_666
یک شنبه 21 فروردین 1390, 07:56 صبح
دوست عزیز این کتابی که معرفی کردی در مورد WPF هست نه WCF

ببخشيد Microsoft.Press.Windows.Communication.Foundation.4 .Step.by.Step.Nov.2010

mohsen_zelzela00
یک شنبه 21 فروردین 1390, 20:28 عصر
سلام دوست عزیز؛ مسئله یه کمی پیچیده تر از این حرفهاست.
ببینید؛ روش اول که ما سمت سرور Oracle DB داشته باشیم؛ و سمت Client هم Oracle Client ؛ یک سری مشکلات دارد ( در کل ارتباط مستقیم کلاینت با دیتابیس ) بدون وجود App Server
اولا Security : هیچ وقت نباید هیچ گونه دسترسی مستقمی به Database Server وجود داشته باشه.
دوما Performance : فرض کن که میخوای یک محاسبه ای انجام بدی که نتیجه اش یک عدد هستش.
فرض کن برای رسیدن به این عدد باید بین چند تا جدول Join بزنی ؛ و صدها رکورد رو Load کنی؛ شما یا باید این کار رو سمت سرور انجام بدی ؛ ( با PL/SQL تو یه Proc و فراخوانی اون سمت کلاینت )
یا این که کل رکورد ها رو بیاری سمت کلاینت و اون جا این کار رو انجام بدی
اولی مشکلش اینه که پیاده سازی کل محاسبات سمت سرور با Script خیلی خیلی سخت هستش.
دومی علاوه بر مشکل Performance یه مشکل خیلی خیلی جدی داره.
فرض کن اصلا چیزی که باید محسابه بشه؛ 3 الی 4 تا رکورده؛ و ارسالش به سمت کلاینت برای محاسبه مشکل کارآیی نداشته باشه.
در این صورت چه تضمینی داره که کلاینت حق داره تموم اون رکوردها رو ببینه ؟ ( وقتی رکوردی بره به سمت کلاینت یعنی کلاینت و خیلی های دیگه دیدنش؛ با Sniffer یا هر وسیله ی دیگه ای )
و کلی مشکل دیگه
و البته داشتن Service مزایای زیادی داره؛ مثل داشتن یه Caching Engine عالی ؛ سرعت بالاتر توسعه برنامه ؛ پیاده سازی Message Queue ( مخصوصا اگه کلاینت ها همیشه متصل به شبکه نیستند )؛ پیاده سازی Durable Services و ...
شما باید اول برنامه رو کامل Design کنی؛ بعد بری سراغ Platform و تکنولوژی
در هر حال WCF خیلی خوب دیده شده؛ و من الآن دارم یه سرویس با اون مینویسم که روی برنامه بیمه تمومی نمایندگی های بیمه invoke میشه؛ ( یه چند هزار تا کلاینتی میشه ) و بعد از چندین ماه مطالعه و اجرای روی اون میگم که WCF برای هر کاری آماده است. ( ولی در هر حال با یه مقاله حتی در حد Introduction هم قابل بررسی نیست )
سعی کن خیلی بیشتر از این مشورت بگیری؛ این طوری میتونی یه برنامه خوب بنویسی که واقعا یه رزومه خوب برات باشه.
موفق باشی

دوست عزی یعنی این کار رو به WCF انجام بدم یا نه؟؟؟ و اینکه کار درستی هست؟؟؟؟؟

مرسی

sia_2007
یک شنبه 21 فروردین 1390, 22:19 عصر
ببین با مسائلی که مطرح کردی؛ استفاده از WCF مانعی نداره
اما به نظر من ؛ اول یه تحلیل درست و منطقی باید روی طراحی سیستم بشه؛ بعد طبق اون بیآیم و بهترین تکنولوژی ها رو بر اساس فاکتور های مختلف بچینیم.
برای مثال فرض کن من در DB Server ام ؛ یا در Report Server ام ( اون چیزی که الآن توی شرکت ما باب شده )؛ یک ابزار گزارش گیری سرور ساید نصب کرده ام.
توجه کن در حالت استاندارد؛ کلاینت فقط باید با App Server در ارتباط باشه. ( ممکنه همه ی این سرور ها در عمل یک سیستم فیزیکی باشند اما مسئله اینه که کلاینت تو Config اش چیزی به نام Report Server Url یا یه چیزی تو این مایه ها نداره )
اون Report ها رو از App Server میگیره؛ ( و از این طریق این که اون کلاینت حق دسترسی به اون گزارش رو داره یا نه و ... رو بررسی میکنیم )حالا شما باید ببینی این قابلیت رو داری که تو سرویست پشتیبانی Report Server ات رو هم قرار بدی یا نه ؟
شاید به این نتیجه رسیدی که از Client Side Report استفاده کنی !!!!!
باید دید چه امکاناتی از Oracle که برای کلاینت محسوس هستش؛ استفاده شده.
من میگم بحث یه کم پیچیده تر از این حرفها هستش
اگه شما؛ تمومی مسائل رو دیدی؛ و فقط همین یه مسئله رو داری؛ از WCF استفاده کن؛ خیالت هم راحت
اما اگه مسائل کلی دیده نشده؛ دست بردار؛ اول اونها رو بررسی کن؛ بعدش تکنولوژی ها رو با فاکتور های مختلف انتخاب کن؛ استفاده کن؛ و از کاری که بر اساس اصول و منطق پیش رفته و کاملا رضایت مشتری رو در بر داشته لذت ببر
موفق باشی

sia_2007
سه شنبه 23 فروردین 1390, 18:36 عصر
من این دو تا پست رو به صورت خصوصی به دوستمون فرستادم, چون ادامه سوالاتشون رو با پیغام پرسیدن؛ برای این که بحث های انجام شده بتونه مفید واقع بشه
من اون دو تا پست رو این جا برای شما قرار میدم :

--- در رابطه با مزایای WCF و مقایسه اون با Remoting :

ببین؛ الآن فریم ورک اصلی شرکت ما روی Remoting هستش
اگه بخوام خیلی ابتدایی بگم؛ مسئلش اینه که تو Remoting ؛ کلاس ها و به قولی آبجکتها در دو سمت سرور و کلاینت به اشتراک گذاشته میشن.
معنیش اینه که کلاینت شما باید Net. ای باشه.
این تو پروژه ای که توش از Oracle استفاده شده؛ یه ریسک هستش
به هر حال ممکنه پس فردا کلاینت جاوایی هم داشته باشید.
علاوه بر اون Duplex Communication رو به صورت ساده و Object Oriented نداره.
و خیلی مشکلهای دیگه.
البته توانایی هایی داره مثل راحتی و Sink های خوب و کارآیی بالا و ...؛ که حتما همکارتون به شما گفتن
عمده وقت من تو شرکت به تطبیق توانایی های Remoting با WCF گدشت؛ که میتونم بگم اکثریت توانایی های Remoting تو WCF هستش؛ و علاوه بر اون شما کلی امکانات جدید دارین.
شما تو WCF یه بار سرویس رو مینویسین؛ و همه نوع کلاینتی از اون منتفع میشه.
هم جاوایی هم دلفی ( Native در کل )؛ و این وسط WCF Client ها هم یک سری مزیتهای اظافه دارن.
WCF Client یعنی کلاینت با پوشش WCF ( به صورت ساده اگه بگم )؛ مثل Silverlight و Net. و ...
( با این حال با ASMX فرقهای اساسی داره؛ مثل پشتیبانی از تراکنش و Durable Services و امنیت توکار و کارآیی و .... )
خلاصه : Remoting رو بی خیال بشین و الکی دستتون رو نذارین توی پوست گردو
و از WCF استفاده کنین.
یه سوال ؟ >> صورت مسئله چیه ؟
شما کتاب میخواین ؟ یا کد ؟ یا مقاله یا راهنمایی.
WCF که در حد دمو کاری نداره؛ بنویسید بره؛ اگه شروع کرده بودی تا الآن دمو تموم شده بود.
( ولی در حد دمو ساده هستش؛ قسمت فریب دهنده ماجرا همین هستش )
موفق باشی
راستی سوالت و جواب من رو تو همون تاپیک بذار.
البته به صلاحدید خودتون

--- در رابطه با درخواست سورس کد

سلام؛ خسته نباشی
یک سورس کد رو تو تاپیکی که توش بودیم گذاشتم؛ چون از این جا نمیشه فایل ارسال کرد.

sia_2007
چهارشنبه 24 فروردین 1390, 09:16 صبح
چند تا نکته :
اول این که تو این کد؛ تموم Config ها اومدن تو App.Config و Web.Config ؛ نکته ای که باید مد نظرتون باشه اینه که تو عالم واقع ؛ Config ها با کد انجام میشن و در صورت لزوم از Config خونده میشن.
دوم این که این کد خیلی ساده نوشته شده؛ نه Object Oriented هستش؛ نه Thread Safe و نه حتی زیبا و شکیل
اما به نظر خودم بهترین سورس کد برای شروع هستش
خودم نوشتم و ساپورت آن چنانی هم نداره ( سوال پرسیدید در خدمتم ؛ ولی نه 100% ) به قول رفقای Open Source کار؛ is as is هستش.
موفق باشید.

iranian_genius
یک شنبه 06 شهریور 1390, 21:34 عصر
آقا اگر خودتون مقاله فارسی که همراه با پروژه هم باشه بدید عالی میشه.


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