View Full Version : حرفه ای: راهكارهاي مناسب تبديل يك برنامه دولايه به چندلايه در دلفي 7
mahdy.asia
یک شنبه 21 آذر 1389, 17:21 عصر
من در يك تيم نرم افزاري مشغول به همكاري هستم ما بيش از 50 نرم افزار در گروه سيستم هاي منابع انساني،مديريت مالي،فروش و ... با دلفي 7 توليد كرده ايم بانك اطلاعات ما MS SQL مي باشد و بيش از 1000 پروسيجر كد نويسي شده است (راهكار ارائه شده بايد در نظر بگيرد كه كد پروسيجرهاي طراحي شده استفاده نمايد و نياز به باز نويسي كدهاي اسكيوال نباشد) اكنون به دليل پاره ايي از مشكلات مي خواهيم با كمترين هزينه به روش برنامه نويسي چندلايه سوئيچ كنيم هر چند كه در پياده سازي نرم افزارها با روش دولايه حرفه ايي هستيم اما با روش چندلايه آماتور مي باشيم و روش پيشنهادي شما مي بايست
در نظر بگيريد برنامه با بستر ارث بري و كامپوننت نويسي توليد شده است
عملي باشد
به حداقل بازنويسي كدها براي فاز اول (به مرور مي توانيم هزينه بازنويسي را متحمل شويم) نياز باشد
با شرح كامل مراحل كد نويسي همراه با نمونه كار باشد
با تشكر
vcldeveloper
دوشنبه 22 آذر 1389, 01:37 صبح
خب مشکل چیه؟ این چیزی که شما الان نوشتید، بیشتر حالت سفارش انجام کار داره، تا درخواست حل مشکل. باید دقیقا شرح بدید در کجای کار مشکل دارید. البته بهتره قبلش توضیح بدید که اصلا چرا میخواید چند لایه کار کنید، چون چند لایه کردن یک نرم افزار کلاینت/ سرور یعنی افزایش پیچیدگی، باید توجیه خوبی برای رفتن به سمت پیچیدگی بیشتر داشته باشید. بخصوص که نیازها و طراحی یک نرم افزار چند لایه با نرم افزار کلاینت/ سرور متفاوت هست. اگر در هنگام طراحی اون نرم افزار کلاینت/سرور به قابلیت گسترش معماری آن به چند لایه در آینده توجه نکرده باشید، تغییر آن به معماری چند لایه کاری مشکل و با تغییرات نسبتا زیاد خواهد بود. البته نوع نگاه تان هم در یک نرم افزار چند لایه باید تغییر کنه؛ در یک معماری چند لایه، کلاینت دسترسی به لایه داده ها (بانک اطلاعاتی تان) نداره، و نمیدونه اصلا لایه داده کجا هست، چه ساختاری داره، و چطور کار میکنه. کلاینت برای دسترسی به داده ها، فقط لایه میانی را میشناسه، و کاری نداره که لایه میانی اون داده را چطور و از کجا تهیه میکنه. پس اگر دنبال این هستید که 1000 پروسیجر موجود در MS SQL Server را به نوعی از طریق کلاینت اجرا کنید، عملا دارید همون معماری Client\Server را استفاده می کنید. اون وقت باید بیشتر درباره علل استفاده از معماری چند لایه فکر کنید.
mahdy.asia
چهارشنبه 24 آذر 1389, 13:05 عصر
اول اینکه یک کار تیمی انجام شده و نتیجه بررسی ها این است که حتماً باید به سمت برنامه نویسی چندلایه حرکت کنیم
چند نمونه از مشکلات
تعداد کانکشن به SQl در روش جاری زیاد بوده و باعث کندی سرور دیتابیس می گردد.
ما در حال حاضرا به دلائل مجبور به استفاده از کاربری SA هستیم و هنگام تغییر رمز SA کلیه برنامه ها می بایست کامپایل شود
اگر به دلائلی شبکه قطع شود می بایست کاربران از برنامه خارج شوند و دوباره وارد برنامه گردند
خطاهای TimeOut روی SQl شرایط بحرانی برای ما ایجاد می کند که قسمتی از این خطاها با روش چندلایه از بین خواهد رفت
و ... شرح بیشتر از حوصله این بخث خارج می باشد.
روشی که در منابع این انجمن معرفی شده است یک لایه سرور دارد که علارقم انتظار که باید تنها حاوی کانکشن باشد نام پروسیجر نیز ست می گردد.
من می خواهم نام پروسیجر را از لایه ایی دیگری به سرور معرفی نمایم
در حقیقت برای اینکه بتوانم کارم را شروع کنم یک پروژه چندلایه تعریف کرده ام با موفقیت دیتاست را برمی گرداند حال تلاش می کنم خارج از برنامه سرور نام پروسیجر را تغییر دهم اگر این کار را با موفقیت انجام دهم می توانم کارم را شروع کنم
ایمیل :mahdy.asia@gmail.com
همراه 09369361880
vcldeveloper
پنج شنبه 25 آذر 1389, 00:40 صبح
در حقیقت برای اینکه بتوانم کارم را شروع کنم یک پروژه چندلایه تعریف کرده ام با موفقیت دیتاست را برمی گرداند حال تلاش می کنم خارج از برنامه سرور نام پروسیجر را تغییر دهم اگر این کار را با موفقیت انجام دهم می توانم کارم را شروع کنم
از چی برای چند لایه کردن برنامه و ارتباط بین لایه ها استفاده کردید؟ من یک بار توضیح دادم که اگر قرار باشه کلاینت شما یا حالا هر لایه دیگه ایی، اسم SP بده و یا کوئری بده و دیتاست بگیره، این وابستگی مستقیما به لایه داده ها قطع نشده، و از نظر طراحی داره همون کار Client\Server رو با لایه داده ها انجام میده. بگذریم...، همه روش های رایج اتصال لایه ها در معماری سه لایه امکان فراخوانی یک متد سمت سرور از طریق کلاینت رو فراهم می کنند، پس می تونید در سمت سرور یک متد تعریف کنید که یک پارامتر string بگیره، و در سمت کلاینت اون رو با مقدار مورد نظرتون فراخوانی کنید. خروجی این کار شما با توجه به قابلیت ابزاری که برای اتصال لایه ها استفاده می کنید، میتونه متفاوت باشه؛ بعضی ابزارها امکان دریافت و ارسال دیتاست به عنوان پارامتر متد را دارند، پس با همون متد اولیه، میشه یک پارامتر از نوع دیتاست تعریف کرد، و سرور با توجه به پارامتر رشته ایی دریافتی، داده مورد نظر را از بانک بگیره و در اون پارامتر از نوع دیتاست بریزه، و به کلاینت برگشت بده. حالت دیگه این هست که بلافاصله بعد از اجرای اون متد، سرور پارامترهای یکی از دیتاست های موجود در سمت کلاینت را تغییر بده، و داده جدید دریافتی از سمت بانک را در آن دیتاست بریزه؛ نتیجه عملیات را هم به صورت Boolean به کلاینت اطلاع بده. اگر نتیجه True بود، کلاینت همان دیتاست را یک بار Requery کنه، تا تغییرات مربوطه در سمت کلاینت نمایان بشه.
علارقم انتظار که باید تنها حاوی کانکشن باشد نام پروسیجر نیز ست می گردد.
انتظار شما اشتباه بود؛ اون سرور باید در معماری چند لایه سایر لایه ها را بی نیاز از ارتباط مستقیم با بانک اطلاعاتی کنه، پس باید همه پارامترهای بانک از طریق اون تنظیم بشند.
mahdy.asia
پنج شنبه 25 آذر 1389, 08:36 صبح
اگر مطلب رو خلاصه کردم به این دلیل بوده که شما رو خسته نکنم ...
برنامه سمت سرور
ار سبد ActiveX نمونه ActiveX Library ایجاد کردم
از سبد Multilayer نمونه Remote Data Module ایجاد کردم
AdpoStoreProcedure روی Remote Data Module قرار داده ، کانکشن وپروسیجر را تنظیم نمودم
DataSetProvider روی فرم قرار داده و DataSet آن را به پروسیجر متصل کردم
برنامه سمت کلاینت
SocketConnection،ClientDataSet،DataSource،DBGri d روی فرم قرار داده و پس از تنظیمات و اجرا اطلاعات پروسیجر که در سرور نام آن ست شده است نمایش داده می شود
با راهنمایی شما من توانستم این کار رو انجام بدم
سوالی که اکنون دارم این است که در روش برنامه نویسی چندلایه بروسیجر ها در چه لایه ایی باید باشند و نحوه ایحاد لایه مذکور و نحوه ارتباط با لایه های دیگر به چه شکل است
بلاخره در لایه کاربر مشخص می گردد به اجرای چه پروسیجر هایی نیاز است این نیاز چطور باید به لایه های دیگر اعلام گردد
بدون قصد تعریف در ایینترنت و انجمن ها زیاد گشتم شما در باره برنامه نویسی چندلایه بسیار مسلط و حرفه ایی شرح داده اید
vcldeveloper
پنج شنبه 25 آذر 1389, 22:56 عصر
اگر مطلب رو خلاصه کردم به این دلیل بوده که شما رو خسته نکنم ...
برنامه سمت سرور
ار سبد ActiveX نمونه ActiveX Library ایجاد کردم
از سبد Multilayer نمونه Remote Data Module ایجاد کردم
AdpoStoreProcedure روی Remote Data Module قرار داده ، کانکشن وپروسیجر را تنظیم نمودم
DataSetProvider روی فرم قرار داده و DataSet آن را به پروسیجر متصل کردم
بی خیال این روش بشید. اینجا شما دارید سعی می کنید با استفاده از DCOM یک نرم افزار چند لایه ایجاد کنید. DCOM هم تنظیماتش در سیستم مقصد پیچیده است، هم خودش پیچیدگی زیاد داره. در نسخه های جدید دلفی این قابلیت برای حفظ Backward compatibility وجود داره، به جای اون، نسخه جدیدی برای DataSnap ارائه شده که مبتنی بر COM نیست، و برای نقل و انتقال داده هم در اون از استاندارد JSON استفاده شده.
برای تولید نرم افزارهای چند لایه، اگر میخواید از کامپوننت ها و قابلیت های استاندارد دلفی استفاده کنید، برید سراغ DataSnap 2010 در دلفی 2010 یا DataSnap XE در دلفی XE. برای کار با DataSnap 2010 هم در سایت Embarcadero چند مقاله و فیلم آموزشی وجود داره، هم در کتاب Delphi 2010 Handbook یک فصل کامل به آن اختصاص داده شده.
اگر استفاده از کامپوننت تجاری برای شما مشکل نیست، می تونید برید سراغ RemObjects DataAbstract که قابلیت هاش بسیار بیشتر از DataSnap دلفی هست، ولی سر و کله زدن با مستنداتش وقت گیر تر هست. برای DataAbstract در سایت خودش یک Wiki و چندین مقاله و فیلم آموزشی موجود هست.
mahdy.asia
جمعه 26 آذر 1389, 23:21 عصر
از توصیه فنی و کارامد شما متشکرم حتما برنامه نویسی سه لایه رو با رویکرد سوئیچ به 2010 و استفاده از کامپوننت های تجاری ادامه خواهیم داد.
با وجود اینکه مقالات زیادی در این مورد خواند ه ام هنوز یک چیز برایم مبهم است اگر قرار باشد پروسیجری اجرا شود و نتایج آن به کاربر نمایش داده شود و کاربر تغییراتی بر روی اطلاعات انجام دهد و این تغییرات بصورت پارامتر به پروسیجر دیگری ارسال گردد. این عملیات به چه قسمتهایی تفکیک می گردد و هر قسمت در کدام لایه می باشد و اطلاعات مورد نیاز لایه پایینی از لایه بالاتر با چه روشی انتقال می یابد.
آیا در ارث بری و ایجاد فرم های پرنت می توان از هر پرنت بعنوان یک لایه نام برد
آیا کامپوننت نویسی به گونه ایی که بعضی از کنترل ها و عملیات بصورت پارامتر در بیاید را می توان بعنوان یک لایه در نظر گرفت (کامپوننت تاریخ که می تواند با ست شدن تاریخ شروع و پایان تاریخ هم صحت تاریخ را کنترل کند هم بازه تاریخ-کامپوننت کدینگ فرم که با دادن یک سریال محتوای یک جدول کدینگ را جهت انتخاب برای کاربر باز می کند)
mahdy.asia
شنبه 27 آذر 1389, 18:45 عصر
وقتي نام پروسيجر را در هنگام اجرا در سرو ست مي كنم پارامترها در ClientDataSet ليست نمي شوند از دستور
FetchParams هم استفاده كرده ام.
چطور مي شود بدون از اينكه پارامترها را دستي اضافه كرد بطور اتوماتيك از روي پروسيجر در سرور پارامترها وارد ClientDataSet شوند
mahdy.asia
شنبه 27 آذر 1389, 19:21 عصر
من مي خواهم متدي در سرور بنويسم كه متغيري آن p :array of TParamList باشد
type
TParamList = record
NameParam: String;
ValueParam: Variant;
end;.
در سرور مي بايست نوع متغير را از ليست انتخاب نمود و غير ليست را نمي پذيرد
vcldeveloper
شنبه 27 آذر 1389, 22:40 عصر
من مي خواهم متدي در سرور بنويسم كه متغيري آن p :array of TParamListباشد
type
TParamList = record
NameParam: String;
ValueParam: Variant;
end;.
در سرور مي بايست نوع متغير را از ليست انتخاب نمود و غير ليست را نمي پذيرد
این طبیعی هست، شما دارید از COM استفاده می کنید، و باید مقید به نوع های داده COM باشید. در پست قبل هم توضیح دادم، بهتره بی خیال اون روش بشید. دلیلی نداره برای شروع یک کار به دنبال چیزی برید که منسوخ شده. اگر بر فرض امکان ارتقاء به دلفی 2010 یا XE را هم فعلا ندارید، بهتره برید دنبال یک ابزار تجاری ارائه شده توسط سایر شرکت ها. برای این کار چندین کامپوننت تجاری برای دلفی وجود داره. بهترین شون همون RemObjects DataAbstract هست، که روی نسخه های قدیمی دلفی (مثل دلفی 7) هم به خوبی کار میکنه.
با وجود اینکه مقالات زیادی در این مورد خواند ه ام هنوز یک چیز برایم مبهم است اگر قرار باشد پروسیجری اجرا شود و نتایج آن به کاربر نمایش داده شود و کاربر تغییراتی بر روی اطلاعات انجام دهد و این تغییرات بصورت پارامتر به پروسیجر دیگری ارسال گردد. این عملیات به چه قسمتهایی تفکیک می گردد و هر قسمت در کدام لایه می باشد و اطلاعات مورد نیاز لایه پایینی از لایه بالاتر با چه روشی انتقال می یابد.
ساده ترین حالت معماری چند-لایه حالت 3-لایه هست. در این حالت بخش عمده ایی از پردازش شما به لایه میانی منتقل میشه. کلاینت فقط وظیفه دریافت ورودی کاربر، و نمایش خروجی را داره.
در یک معماری سه-لایه، لایه اول شما لایه دیتا شما ست، که معمولا همون موتور بانک اطلاعاتی هست. لایه دوم شامل Data Access و Business Logic هست. این لایه مکانیزم لازم برای دریافت داده ها از بانک اطلاعاتی، و اعمال قوانین و محدودیت های سازمانی روی داده ها را بر عهده میگیره. لایه سوم شما که همون نرم افزار کلاینت هست، وظیفه Presentation یا ارائه داده ها به کاربر و دریافت ورودی کاربر را برعهده میگیره. کلاینت درخواست های خودش را به لایه میانی ارسال میکنه، و لایه میانی سعی میکنه داده مورد نیاز کاربر را از بانک اطلاعاتی دریافت کنه و با رعایت فوانین و محدودیت های تعریف شده، در اختیار کلاینت قرار بده.
در معماری چند-لایه (بیش از سه لایه) معمولا وظایف لایه میانی به لایه های مستقلی تقسیم میشه، مثلا یک لایه فقط وظیفه Data Access را برعهده بگیره، یا یک لایه فقط اعمال Business Logic رو برعهده بگیره، یک لایه وظیفه کنترل اتصالات شبکه و برقراری اتصالات صحیح را برعهده بگیره، و غیره. همچنین ممکنه یک سری سرویس های عمومی از طریق یک یا چند لایه در اختیار سایر لایه ها قرار بگیره.
نکته مهم در طراحی این لایه ها طراحی اینترفیس اون ها ست. هر لایه با لایه دیگه از طریق اینترفیسی که براش طراحی شده ارتباط برقرار میکنه. تا زمانی که این اینترفیس تغییر نکنه، تغییرات شما در داخل یک لایه روی عملکرد سایر لایه ها تاثیر نمیزاره. به عنوان مثال، برای ارتباط لایه میانی با لایه Presentation، شما مجموعه ایی از توابع را تعریف می کنید که لایه Presentation می تواند آنها را فراخوانی کنه؛ تا زمانی که تعریف این توابع در لایه میانی تغییر نکردند، شما هر تغییری که در لایه میانی اعمال کنید، تاثیری روی لایه Presentation نداره، مثلا ممکنه شما تصمیم بگیرید که قوانین اعمال شده بر روی داده ها را تغییر بدید، یا اصلا به جای یک نوع بانک اطلاعاتی، از نوع دیگه ایی از بانک اطلاعاتی استفاده کنید، یا حتی لایه میانی را به چند لایه مستقل تقسیم کنید، اینها تاثیری روی لایه Presentation نمیزاره. اون لایه تابع مدنظرش را فراخوانی میکنه و جواب میخواد. براش فرقی نمیکنه که شما در لایه میانی اون جواب را چطور تهیه می کنید.
mahdy.asia
دوشنبه 29 آذر 1389, 11:45 صبح
وقتي نام پروسيجر را در هنگام اجرا در سرو ست مي كنم پارامترها در ClientDataSet ليست نمي شوند از دستور
FetchParams هم استفاده كرده ام.
چطور مي شود بدون از اينكه پارامترها را دستي اضافه كرد بطور اتوماتيك از روي پروسيجر در سرور پارامترها وارد ClientDataSet شوند
vcldeveloper
دوشنبه 29 آذر 1389, 12:06 عصر
وقتي نام پروسيجر را در هنگام اجرا در سرو ست مي كنم پارامترها در ClientDataSet ليست نمي شوند از دستور
FetchParams هم استفاده كرده ام.
چطور مي شود بدون از اينكه پارامترها را دستي اضافه كرد بطور اتوماتيك از روي پروسيجر در سرور پارامترها وارد ClientDataSet شوند
http://barnamenevis.org/showthread.php?61267-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-SP-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%AF%D8%B1-%DB%8C%DA%A9-DataSetProvider&p=1175803&viewfull=1#post1175803
mahdy.asia
چهارشنبه 01 دی 1389, 13:34 عصر
به كامپوننت RemObjects DataAbstract براي دلفي 7 نياز دارم راهنمايي كنيد.
vcldeveloper
چهارشنبه 01 دی 1389, 15:13 عصر
به كامپوننت RemObjects DataAbstract براي دلفي 7 نياز دارم راهنمايي كنيد.
نسخه 30 روزه اش در سایت خودش موجوده. نسخه کرک شده اش رو در این سایت نمی تونید پیدا کنید، چون فعالیت Warez در این سایت ممنوع هست.
mahdy.asia
چهارشنبه 01 دی 1389, 19:07 عصر
برای نسخه کرک شده چه باید انجام دهم از کجا و با چه هزینه ایی آن را تهیه نمایم؟
vcldeveloper
پنج شنبه 02 دی 1389, 18:59 عصر
برای نسخه کرک شده چه باید انجام دهم از کجا و با چه هزینه ایی آن را تهیه نمایم؟
می تونید از سایت های کرک و Warez اون رو تهیه کنید. در سایت هایی که نسخه های کرک شده کامپوننت های دلفی را عرضه می کنند، این محصول هم پیدا میشه.
اگر شرکت هستید، بهتره فعلا با نسخه 30 روزه اش کار کنید، و ببینید آیا امکاناتش اصلا به کار شما میاد یا نه. اگر مناسب بود، بهتره نسخه اصلی اش را خریداری کنید، و از پشتیبانی شرکت RemObjects استفاده کنید.
mahdy.asia
شنبه 04 دی 1389, 07:46 صبح
چطور مي شود بدون نصب دلفي 7 روي سرور لايه مياني را روي سرور ايجاد نمود؟
vcldeveloper
شنبه 04 دی 1389, 13:21 عصر
چطور مي شود بدون نصب دلفي 7 روي سرور لايه مياني را روي سرور ايجاد نمود؟
منظورتون از نصب دلفی 7 چیه؟! مگه شما به ازاء هر برنامه ایی که می نویسید، یک بار دلفی رو هم روی سیستم کاربر نصب می کنید؟! اساسا نیازی نیست که کسی بخواد برای اجرای برنامه ایی که با یک زبان برنامه نویسی نوشته، محیط توسعه همون زبان را هم در سیستم مقصد نصب کنه.
mahdy.asia
یک شنبه 05 دی 1389, 19:50 عصر
منظور ايجاد لايه مياني در سرور است:
بعد از برنامه نويسي مي بايست جهت ايجاد لايه مياني عمليات ذيل انجام گيرد
Register ActiveX Server
Install Com+ Object
بدون اينكه اين اعمال رو روي سرور انجام دهيم روشي هست كه لايه مياني را در سرور ايجاد نمايد
mahdy.asia
یک شنبه 05 دی 1389, 19:55 عصر
وقتي مي خواهم CommandText رو با دستور اسكيوال اجرا نمايم خطا مي دهد كه شما مجوز تغيير CommandText را نداريد
ClientDataSet را به لايه مياني متصل و DataSetProvider نيز متصل نموده ام پروسيجر بدون مشكل اجرا مي شود اما دستور اسكيوال را اجرا نمي كند البته جهت اجراي دستور اسكيوال در سمت سرور DataSetProvider را به TadoDataSet متصل كرده ام
vcldeveloper
دوشنبه 06 دی 1389, 00:20 صبح
منظور ايجاد لايه مياني در سرور است:
بعد از برنامه نويسي مي بايست جهت ايجاد لايه مياني عمليات ذيل انجام گيرد
Register ActiveX Server
Install Com+ Object
بدون اينكه اين اعمال رو روي سرور انجام دهيم روشي هست كه لايه مياني را در سرور ايجاد نمايد
1- برای انجام اون کارها (رجیستر کردن اشیاء COM) نیازی به نصب دلفی نیست.
2- اون کارها فقط زمانی لازم هستند که شما بخواید با استفاده از DCOM نرم افزارتان را چند لایه کنید. در پست های قبلی توضیح دادم که به جای آن روش از DataSnap جدید (نسخه 2009 یا بالاتر) یا RemObjects DataAbstract استفاده کنید. اینها هیچکدام نیازی به رجیستر کردن اشیاء COM ندارند.
وقتي مي خواهم CommandText رو با دستور اسكيوال اجرا نمايم خطا مي دهد كه شما مجوز تغيير CommandText را نداريد
ClientDataSet را به لايه مياني متصل و DataSetProvider نيز متصل نموده ام پروسيجر بدون مشكل اجرا مي شود اما دستور اسكيوال را اجرا نمي كند البته جهت اجراي دستور اسكيوال در سمت سرور DataSetProvider را به TadoDataSet متصل كرده ام
قبلا توضیح دادم که همچین کاری در معماری چند لایه توصیه نمیشه؛ به همین دلیل هم به طور پیش فرض DatasetProvider به کلاینت ها اجازه تغییر CommandText رو نمیده. اگر میخواید همچین اجازه ایی به کلاینت ها بدید، باید در خصوصیت Options مربوط به DatasetProvider گزینه poAllowCommandText را True کنید. دقت کنید که این کار هم از نظر اصول طراحی نرم افزارهای چند لایه، و هم از نظر امنیتی کار درستی نیست، و با فعال کردن این گزینه، ممکنه مورد حملات SQL Injection قرار بگیرید.
mahdy.asia
سه شنبه 07 دی 1389, 12:30 عصر
من لايه مياني و برنامه كلاينت را طراحي كرده ام برنامه روي كامپيوتري كه لايه مياني بر روي آن قرار دارد اجرا مي شود
از روي كامپيوتر هاي ديگر اجرا نمي شود.
اگر سورس دلفي رو روي كامپيوتر ديگري باز كنم(بجز كامپيوتري كه لايه مياني روي آن مي باشد) نمي توانم DCOMConnection به لايه مياني وصل كنم لايه مياني را نمي بيند
برنامه لايه مياني را نمي توانم روي ويندوز سرور 2008 اجرا نمايم و لايه مياني را ايجاد نمايم
mahdy.asia
سه شنبه 07 دی 1389, 12:36 عصر
قبلا توضیح دادم که همچین کاری در معماری چند لایه توصیه نمیشه؛ به همین دلیل هم به طور پیش فرض DatasetProvider به کلاینت ها اجازه تغییر CommandText رو نمیده. اگر میخواید همچین اجازه ایی به کلاینت ها بدید، باید در خصوصیت Options مربوط به DatasetProvider گزینه poAllowCommandText را True کنید. دقت کنید که این کار هم از نظر اصول طراحی نرم افزارهای چند لایه، و هم از نظر امنیتی کار درستی نیست، و با فعال کردن این گزینه، ممکنه مورد حملات SQL Injection قرار بگیرید.
روش صحيح ارتباط برنامه كلاينت با لايه مياني چطور مي باشد
پارامترها چطور به لايه مياني ارسال شود
دستورات اسكيوال چطور به چه روشي به لايه مياني اعلام شود و ديتاست از لايه مياني دريافت شود
vcldeveloper
سه شنبه 07 دی 1389, 19:49 عصر
از روي كامپيوتر هاي ديگر اجرا نمي شود.
اگر سورس دلفي رو روي كامپيوتر ديگري باز كنم(بجز كامپيوتري كه لايه مياني روي آن مي باشد) نمي توانم DCOMConnection به لايه مياني وصل كنم لايه مياني را نمي بيند
برنامه لايه مياني را نمي توانم روي ويندوز سرور 2008 اجرا نمايم و لايه مياني را ايجاد نمايم
من نمیدونم این لایه ها را چطور نوشتید. نمیدونم پیکربندی سیستم های مختلف تان چطوری هست. قبلا هم گفتم که پیکربندی DCOM مشکلات خاص خودش را داره. هیچ وقت ازش برای نوشتن یک نرم افزار چند لایه جدی استفاده نکردم. حتی همون کارهای آزمایشی رو هم سال ها ست که باهاش نکردم. الان هم ارزش نداره که بخوام روی اون وقت صرف کنم، چون روش های بهتری برای چند لایه کردن یک نرم افزار وجود دارند؛ پس نمی تونم با این اطلاعاتی که دادید، و وضعیت فعلی کمکی درباره پیکربندی DCOM یا اتصال لایه های مختلف نرم افزارتون با استفاده از اون، بهتون بکنم.
mahdy.asia
سه شنبه 07 دی 1389, 20:33 عصر
آیا نسخه کرک شده RemObjects DataAbstract را می شه پیدا کرد اگر با قوانین سایت مشکلی نداره لینک دانلود برام بزارین
ما چون شرکت تولید نرم افزار نیستیم هزینه 900 هزارتومان برای خرید کامپوننت قابل توجیح نیست
روش مناسب سوئیچ به روش برنامه نویسی چندلایه در شرکت ما پیاده سازی روش فوق با دلفی 7 و پس از آن جهت بهبود سوئیچ به محیط برنامه نویسی دلفی 2010 می باشد از شما که تا کنون در این کار مرا همراهی نمودید متشکرم
من توانستم بستر برنامه نویسی چندلایه و تبدیل برنامه ها رو آماده کنم و اکنون تنها مشکل اجرای برنامه بر روی کلاینت هایی که لایه میانی بر روی آن ایجاد نشده است می باشد
خطای بوجود آمده:
64588
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.